2010-01-13 Jim Grosbach Radar 7511696 * flow.c (flow_lite): Don't change allocation availailability of PIC base register when not doing flow analysis. Add early exit. * local-alloc.c (local_alloc): Debug dump even when no PIC base flow analysis was performed. (dump_inheritance): Add function name to pic_rtx_inheritance debug dump line. 2010-01-07 Jim Grosbach Radar 7519550 * doc/invoke.texi: Document -force_load 2010-01-07 Jim Grosbach Radar 7519550 * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE, WORD_SWITCH_TAKES_ARG, LINK_SPEC): Add -force_load. 2009-12-04 Jim Grosbach Radar 6930582 * config/arm/arm1136jfs.md: Adjust load latencies up by one. * config/arm/cortex-a8.md: Adjust load latencies up by one. 2009-12-04 Jim Grosbach Radar 7393136 * config/arm/arm.c (arm_split_compare_and_swap): Just use a data memory barrier after the strex. dsb is overkill. * config/arm/sync.md (arm_memory_barrier_v7): Use "dmb ish" since the compiler usage is for multithreading, not external device sync. 2009-12-04 Jim Grosbach Radar 7442004 * config/arm/t-darwin: Always build libgcc2 functions with -marm. 2009-11-03 Stuart Hastings Radar 6951876 * local-alloc.c (reg_inheritance_1): Check for int->float SUBREG cast, assume it uses the pic-base. This is the 32-bit float analogue to 6050374 (see below). 2009-11-02 Stuart Hastings Radar 7105615 * fold-const.c (fold_binary): When folding an unsigned comparision into a signed comparision, set TREE_OVERFLOW so that the loop optimizer in tree-vrp.c understands that the user did not write this. 2009-10-15 Jim Grosbach Radar 7295521 * config/arm/arm.c (arm_split_compare_and_swap): Call insns for arm_memory_barrier* and arm_memory_sync* directory rather than using the expander. * config/arm/sync.md (memory_barrier, memory_sync): Allocate a scratch register rather than forcing IP. (arm_memory_barrier_v6): Match the scratch register from the expander rather than forcing IP. Rename to arm_memory_barrier_v6_explicit. (arm_memory_barrier_v6_explicit): New. (arm_memory_sync_v6): Match the scratch register from the expander rather than forcing IP. Rename to arm_memory_sync_v6_explicit. (arm_memory_sync_v6_explicit): New. 2009-09-08 Jim Grosbach Radar 7174451 * config/arm/arm.c (arm_select_dominance_cc_mode): Unordered floats. 2009-09-08 Jim Grosbach Radar 6258536 * gcc/testsuite/lib/target-supports.exp (check_effective_target_sync_int_long): Enable __sync* tests for ARM. * gcc/config/arm/arm.c (emit_load_locked, emit_store_conditional, arm_split_compare_and_swap): New. * gcc/config/arm/arm.h (ARM_PRINT_OPERAND_ADDRESS): Omit the ", #0" for no-offset register addresses to make LDREX* and STREX* happy. (arm_arch7a): Make extern for use in .md files. * gcc/config/arm/arm-protos.h (arm_split_compare_and_swap): New. * gcc/config/arm/sync.md: New file. * gcc/config/arm/arm.md: Include "sync.md". (UNSPEC_CMPXCHG, UNSPEC_BARRIER, UNSPEC_SYNC, VUNSPEC_LL, VUNSPEC_SC): New. 2009-09-04 Jim Grosbach Radar 6574544 * config/arm/arm.c (arm_expand_neon_args): Convert builtin arguments to the expected mode. 2009-09-04 Jim Grosbach Radar 7198870 * config/arm/arm.c (thumb2_legitimate_index_p): Restrict negative range to -255 since that's the min for STR. 2009-09-01 Jim Grosbach Radar 7191061 * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Force 32-bit alignment for MI thunk functions. 2009-09-01 Jim Grosbach Radar 7109945 * config/arm (thumb2_legitimate_index_p): VFP register addresses should be restricted to constants in range for VSTR. 2009-07-31 Bob Wilson Radar 7105099 Backport from mainline (the ARM portions were already partly there): 2007-07-16 Julian Brown * config/arm/arm-protos.h (arm_mangle_type): Add prototype. * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook. (arm_init_neon_builtins): Fix comment. (arm_mangle_map_entry): New. (arm_mangle_map): New. (arm_mangle_type): New. * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to... (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE. (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define. (TARGET_MANGLE_TYPE): Define this instead. * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename to... (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT. (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define. (TARGET_MANGLE_TYPE): Define this instead. * cp/mangle.c (write_type): Call mangle_type target hook on all types before mangling. Use original type, not main variant, as argument. * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to... (TARGET_MANGLE_TYPE): This. * target.h (gcc_target): Rename mangle_fundamental_type to mangle_type. * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to... (TARGET_MANGLE_TYPE): This. Note slightly different semantics. 2009-07-24 Bob Wilson Radar 7088565 * config/arm/t-darwin (MULTILIB_OPTIONS): Separate options with slashes instead of spaces so that they are mutually exclusive. (MULTILIB_EXCEPTIONS): Stop using gen-darwin-multilib-exceptions.sh. (MULTILIB_MATCHES): Recognize equivalent -march and -mcpu options. * config/arm/gen-darwin-multilib-exceptions.sh: Delete. * config.gcc: Remove duplicate for arm/t-darwin. 2009-07-09 Jim Grosbach Radar 6999417 * config/darwin.h (DARWIN_DYLIB1_SPEC): -ldylib1.o is not necessary for iPhoneOS >= 3.1 (DARWIN_BUNDLE1_SPEC): New. -lbundle1.o is not necessary for iPhoneOS >= 3.1 (DARWIN_CRT1_SPEC): iPhoneOS >= 3.1 should use -lcrt1.3.1.o; otherwise, -lcrt1.o. 2009-07-07 Stuart Hastings Radar 6939151 * local-alloc.c (local_alloc): Add comment, limit to a 12MB bitmap. 2009-07-07 Stuart Hastings Radar 6939151 * local-alloc.c (local_alloc): Avoid allocating huge register bitmaps. Arbitrarily set 64K pseudo-register limit for reg_inheritance analysis. 2009-06-25 Bob Wilson Radar 6879229 * config/arm/arm.c (arm_override_options): Disallow -fasm-blocks. * doc/invoke.texi (-fasm-blocks): Document this restriction. 2009-06-17 Jim Grosbach Radar 6821124 * builtin-attrs.def (DEF_FORMAT_ATTRIBUTE): For Darwin, don't claim the format argument to be nonnull. * builtins.def (BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_PUTS, BUILT_IN_PUTS_UNLOCKED): Likewise. 2009-06-17 Jim Grosbach Radar 6858124 * config/arm/arm.c (arm_output_mi_thunk): Stub calls aren't indirect in MI thumb thunks. 2009-06-15 Fariborz Jahanian Radar 6936421 * cvt.c (force_rvalue): Convert property reference expression to its getter call before converting to rvalue. * obj-c++.dg/property-as-initializer.mm: New 2009-06-12 Jim Grosbach Radar 6868127 * doc/invoke.texi (-mthumb): Specify that thumb is the default for armv7. 2009-05-20 Jim Grosbach Radar 6902937 * config/arm/arm.c (arm_output_epilogue_vfp_restore): New function. (arm_output_epilogue): Factor out common code to arm_output_epilogue_vfp_restore. 2009-05-19 Jim Grosbach Radar 6902792 * config/arm/arm.c: Add includes for stdlib.h and ctype.h. (TARGET_MD_ASM_CLOBBERS): New. (arm_md_asm_clobbers): New function. Add a clobber of the upper half D register when a Q register clobber is used. 2009-04-08 Jim Grosbach Radar 6738583 * config/arm/arm.c (arm_init_cumulative_args): Always short call local functions. 2009-04-06 Stuart Hastings Radar 6755006 * tree-ssa-loop-ivopts.c (aff_combination_to_tree): Unsigned types can't be negative. 2009-03-12 Caroline Tice Radar 6144634 * c-parser.c (c_parser_statement_after_labels): When re-setting the expression location at the end, use the input location for Block pointer assignments. 2009-03-18 Jim Grosbach Radar 6545322 * gcc/config/arm/ieee754-sf.S (floatundisf): Replace undefined do_itt macro call by do_it with an extra "t" argument. * gcc/config/arm/ieee754-df.S (floatdidf): Likewise. (muldf3): Revert inexplicable change that replaced a BIC with an AND. 2009-02-25 Jim Grosbach Radar 6465387 * gcc/config/arm/t-darwin (LIB1ASMFUNCS): Add _save_vfp_d8_d15_regs, _restore_vfp_d8_d15_regs. * gcc/config/arm/arm.c (handle_thumb_unexpanded_prologue, handle_thumb_unexpanded_epilogue): Add call to ___{save,restore}_vfp_d8_d15_regs when compiling a function w/ a non-local label in Thumb1 mode for a v6 or later processor. * gcc/config/arm/lib1funcs.asm (save_vfp_d8_d15_regs, restore_vfp_d8_d15_regs): New functions, built only for v6 ARM. 2009-02-11 Fariborz Jahanian Radar 6573923 * c-decl.c (synth_block_byref_id_object_copy_func, synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER flag in call to copy/dispose helper functions. * c-common.h (BLOCK_BYREF_CALLER): New flag. 2009-02-25 Jim Grosbach Radar 6611402 * gcc/config/arm/t-darwin (ARM_MULTILIB_ARCHS): New. * (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_EXCEPTIONS): Derive values from list in ARM_MULTILIB_ARCHS. * gcc/config/arm/gen-darwin-multilib-exceptions.sh: New. Helper function to calculate the list for MULTILIB_EXCEPTIONS. 2009-02-02 Jim Grosbach Radar 5571707 * gcc/config/arm/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Set flag to reserve R9 on v6 if target iPhone SDK is less than 3.0. * gcc/config/arm/arm.c (darwin_reserve_r9_on_v6): New flag. (arm_darwin_subtarget_conditional_register_usage): Conditionalize making R9 available on darwin_reserve_r9_on_v6 when targeting v6. 2009-01-30 Jim Grosbach Radar 6370037 * ifcvt.c (cond_exec_process_if_block): Move loop-local variable initialization inside loop so that further iterations don't incorrectly use a value of the variable from a previous iteration. 2009-01-29 Josh Conner Radar 6186914, 6541440 * dwarf2out.c (dwarf_stack_op_name): Handle DW_OP_bit_piece. (size_of_loc_descr, output_loc_operands): Likewise. (reg_loc_descriptor): Call TARGET_DWARF2_REG_HANDLER if it is defined. * config/arm/arm.h (TARGET_DWARF2_REG_HANDLER): Define. 2009-01-27 Jim Grosbach Radar 6483528 * config/arm/arm.c (arm_output_epilogue): Pop VFP registers in correct order when multiple pop instructions are necessary. 2009-01-22 Jim Grosbach Radar 5571707 * config/arm/darwin.h (SUBTARGET_CONDITIONAL_REGISTER_USAGE): Allow use of R9 on v6 and v7. * config/arm/arm.c (arm_darwin_subtarget_conditional_register_usage): New function. * config/arm/arm-protos.h (arm_darwin_subtarget_conditional_register_usage): Ditto. 2009-01-22 Stuart Hastings Radar 6515001 * ifcvt.c(noce_try_cmove_arith): Use a more conservative trap check. 2009-01-12 Caroline Tice Radar 6476836 * dwarf2out.c(struct die_struct): New field, "dead". (size_of_inlined): Don't count entries whose "dead" field is marked. (output_debug_inlined_section): Remove code that was commented out; don't output info for dies whose "dead" field is marked. (prune_unused_types_cleanup_inlining): New function. (prune_unused_types): Call prune_unused_types_cleanup_inlining before calling prune_unused_types_prune. 2008-12-21 Caroline Tice Radar 6455678 * cp/typeck.c (original_type): Stop if the type and its DECL_ORIGINAL_TYPE are the same. 2008-12-18 Bill Wendling Radar 6457359 * c-parser.c (build_block_struct_initlist): Changed type. * cp/parser.c (build_block_struct_initlist): Ditto. 2008-12-18 Stuart Hastings Radar 6440204 * config/i386/sse.md (sse2_ashlti3): Moved from here... * config/i386/i386.md (sse2_ashlti3): ...to here. 2008-12-11 Caroline Tice Radars 5964438, 6007135 * cp/name-lookup.c (pushdecl_maybe_friend): Copy type decl info to DECL_ORIGINAL_TYPE if the type decl was anonymous. * dwarf2out.c (gen_variable_die): Don't attempt to reference an abstract origin unless the die actually exists. 2008-12-10 Jim Grosbach Radar 6387939 * config/arm/arm.md (builtin_setjmp_setup): Properly terminate the code snipped to prevent the rtl template from adding an extraneous "use" insn into the instruction list. 2008-12-09 Stuart Hastings Radar 6414738 * var-tracking.c (clobber_variable_part): Update anextp for next iteration. 2008-12-05 Fariborz Jahanian Radar 6413140 * c-parser.c (c_parser_block_literal_expr): Warn on use of explicit block return type. 2008-12-05 Stuart Hastings Radar 6382081 * config/i386/i386.md (floatdisf2): Replace SSE code with x87 code. 2008-12-02 Caroline Tice Radar 6386976 * objcp/objcp-decl.h (TYPE_HAS_OBJCXX_INFO): New macro. * objcp/objcp-lang.c (objcp-decl.h): New include statement, with required define. (LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE): Redefine for obj-c++. (objcxx_is_runtime_type): New function. 2008-12-02 Fariborz Jahanian Radar 6411649 * funciton.h: Added new field. * c-common.c (build_block_helper_name): Produce a unique block number per each enclosing function when building the block helper function name. 2008-12-02 Fariborz Jahanian Radar 6396238 * c-typeck.c (build_block_call): Handle case of a block expression tree with side-effect when envoking the block. 2008-12-01 Caroline Tice Radar 6386976 * objc/objc-lang.c (objc_is_runtime_type): New function. (LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE): Re-define new constant. * dwarf2out.c (dwarf_attr_name): Add case statements for DW_AT_APPLE_major_runtime_vers and DW_AT_APPLE_runtime_class. ( gen_struct_or_union_type_die): Call lang_hooks.types.is_runtime_specific_type, and add runtime attribute if appropriate. (dwarf2out_finish): Add DW_AT_APPLE_major_runtime_vers to comp_unit die if appropriate. * dwarf2.h (enum dwarf_attribute): Add two new Apple dwarf attributes: DW_AT_APPLE_major_runtime_vers and DW_AT_APPLE_runtime_class. * langhooks.c (lhd_is_runtime_specific_type): New generic function. * langhooks.h (struct lang_hooks_for_types): Add new function field, is_runtime_specific_type. * langhooks-def.h (lhd_is_runtime_specific_type): New extern decl. (LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE): New constant definition. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use new constant definition to initialize new field. 2008-12-01 Fariborz Jahanian Radar 6404979 * c-decl.c (block_build_prologue): Use an internal name for block helper's hidden argument. * c-parser.c (c_parser_block_literal_expr): Ditto. 2008-12-01 Stuart Hastings Radar 6382081 * config/i386/i386.md (floatdisf2): Add SSE code for conversion on x86_32. * config/i386/i386.c (ix86_expand_convert_sign_DI2DF_sse): Typo. 2008-11-24 Stuart Hastings * config/i386/i386.c (ix86_expand_convert_uns_SI2DF_sse): Fix comment. 2008-11-18 Stuart Hastings Radar 6353006 * tree.c (generic_block_literal_struct_type): Fix APPLE LOCAL. * langhooks-def.h (lhd_build_generic_block_struct_type): Fix APPLE LOCAL. 2008-11-12 Caroline Tice * tree.c (generic_block_literal_struct_type): Move global variable decl here from c-common.c. (build_block_pointer_type): Change call to build_generic_block_struct_type to go through lang_hooks. * tree.h: Remove extern function dec, for build_generic_block_struct_type. * cp/cp-objcp-common.h: Define c++-specific version of LANG_HOOKS_BUILD_GENERIC_BLOCK_STRUCT_TYPE. * cp/parser.c (build_generic_block_struct_type): Rename function to c_build_generic_block_struct_type. * c-objc-common.h: Define c-specific version of LANG_HOOKS_BUILD_GENERIC_BLOCK_STRUCT_TYPE. * langhooks.c (lhd_build_generic_block_struct_type): New generic function. * langhooks.h (struct lang_hooks): Add new function field, build_generic_block_struct_type. * c-common.c (generic_block_literal_struct_type): Move global variable decl from here to tree.c. * c-common.h (c_build_generic_block_struct_type): New extern function decl. * c-parser.c (build_generic_block_struct_type): Rename function to c_build_generic_block_struct_type. * langhooks-def.h (lhd_build_generic_block_struct_type): New extern function decl. (LANG_HOOKS_BUILD_GENERIC_BLOCK_STRUCT_TYPE): New variable definition. (LANG_HOOKS_INITIALIZER): Initialize new field to LANG_HOOKS_BUILD_GENERIC_BLOCK_STRUCT_TYPE 2008-11-11 Fariborz Jahanian Radar 6351990 * config/darwin.c (machopic_select_section): Accomodate change for meta-data prefix name. * config/darwin-sections.def (__objc_protorefs, __objc_protolist): These sections are now coalesced. 2008-11-11 Stuart Hastings Radar 4299257 * config/i386/i386.c (bdesc_com): Move ucomXX instructions from here... (bdesc_ucomi): ...to here. New. (ix86_init_mmx_sse_builtins): Add a loop to walk bdesc_ucomi[] and instantiate ucomiXX builtins. (ix86_expand_sse_ucomi): New. (ix86_expand_builtin): Call it. 2008-11-07 Fariborz Jahanian Radar 5847976 * c-decl.c (synth_block_byref_id_object_copy_func): Takes a new 'flag' argument and generates the much simplified API. (synth_block_byref_id_object_dispose_func): Ditto. (new_block_byref_decl): Hack to prevent issuing bogus warning on a field declared as __weak. (init_byref_decl): Takes an additional 'flag' argument and passes it down to synth_block_byref_id_object_copy_func and synth_block_byref_id_object_dispose_func. (finish_decl): Computes the flag for the block variable declaration. * c-common.c (build_block_byref_release_decl, build_block_byref_assign_copy_decl): Removed. (build_block_byref_release_exp): Use the new API. (build_block_object_assign_decl, build_block_object_assign_call_exp, build_block_object_dispose_decl, build_block_object_dispose_call_exp): New. (build_indirect_object_id_exp): Fixed a code gen bug which was exposed in c/c++ mode, but not in ObjC/ObjC++ mode. * c-common.h (build_block_object_assign_call_exp, build_block_object_dispose_call_exp, objc_is_gcable_type): New decls. Declaration of several new flags. (cast_to_pointer_to_id): Removed. * stub-objc.c (objc_is_gcable_type): New (copy_in_object, retain_block_component, release_block_component): Removed. (cast_to_pointer_to_id): Removed. * c-parser.c (build_block_struct_initlist): Remove call to copy_in_object. (synth_copy_helper_block_func): Generates much simplified API. (synth_destroy_helper_block_func): Ditto. (block_object_dispose): Removed. * config/darwin-c.c (darwin_cpp_builtins): Define __weak even when -fobjc-gc is off. 2008-11-18 Jim Grosbach Radar 6361608 * config/arm/arm.c (arm_output_mi_thunk): C++ thunks for multiple inheritance need to account for the different PC-relative offset bias of the add instruction in Thumb-2 vs. ARM mode (4 vs. 8). 2008-11-13 Jim Grosbach Radar 6357106 * config/arm/arm.c (arm_function_boundary): Thumb2 functions should be 32-bit aligned. 2008-11-13 Jim Grosbach Radar 6333007 * config/darwin-driver.c (darwin_default_min_version): Bump default iPhoneos-version-min to 3.0. * config/arm/darwin.h (DARWIN_MINVERSION_SPEC, SUBTARGET_OVERRIDE_OPTIONS): Ditto. 2008-11-13 Jim Grosbach Radar 6345234 * config/arm/arm.c (arm_file_start): Emit section directives for text sections at the start of file, as for PPC. 2008-11-11 Fariborz Jahanian Radar 6351990 * config/darwin.c (machopic_select_section): Accomodate change for meta-data prefix name. * config/darwin-sections.def (__objc_protorefs, __objc_protolist): These sections are now coalesced. 2008-11-4 Jim Grosbach Radar 6327222 * config/arm/arm.c (legitimize_pic_address): Be more generous about constants when the operand is of the form (const (plus (something) (const)). 2008-10-31 Stuart Hastings Radar 5813921 * builtins.c (validate_arglist): Tolerate enums where INTEGER_TYPE is expected. 2008-10-31 Fariborz Jahanian Radar 6175959 * stub-objc.c (block_requires_copying): Object pointers with NSObject attribute also require copy/release API. * c-parser.c (synth_copy_helper_block_func): Use the new API _Block_object_assign for ObjC object copying. (block_object_dispose): New (synth_destroy_helper_block_func): Call block_object_dispose to use new _Block_object_dispose API for ObjC object release. 2008-10-30 Stuart Hastings Radar 5834718 * coverage.c (prg_ctr_mask, prg_n_ctrs, fn_ctr_mask, fn_n_ctrs, fn_b_ctrs): Added GTY(()) markers. 2008-10-29 Fariborz Jahanian Radar 6329245 * c-decl.c (build_block_descriptor_type): Remove "FuncPtr" field decl. * c-typeck.c (build_block_call): Block call is now same as old ABI. * c-parser.c (build_generic_block_struct_type): Primary block type is now reverted to old ABI in its first 4 fields. (build_block_struct_type): Ditto. (build_block_struct_initlist): Primary block initializer list is now reverted to old ABI somewhat. 2008-10-28 Fariborz Jahanian Radar 6243961 * varasm.c (build_constant_desc): With -fwritable-string prefix normal string constants with "lC". (output_constant_def): Turn off -fwritable-string for cf-strings. 2008-10-28 Stuart Hastings * ggc-common.c (init_ggc_heuristics): Add ATTRIBUTE_UNUSED. 2008-10-27 Fariborz Jahanian Radar 6231433 * c-typeck.c (objc_compare_types, objc_have_common_type): Take an extra argument for better diagnostics. * c-common.c (objc_compare_types, objc_have_common_type): Take extra argument. * stub-objc.c: Ditto 2008-10-27 Fariborz Jahanian Radar 6302949 * c-parser.c (c_parser_objc_property_attrlist): Warn on missing ',' separator for property attribute list. 2008-10-24 Fariborz Jahanian Radar 6305545 * cgraph.h (lower_if_nested_functions): New decl. * tree-gimple.h (lower_nested_functions): Takes one more arg. * cgraphunit.c (lower_if_nested_functions): New * tree-nested.c (lower_nested_functions): Skip structors. 2008-10-24 Stuart Hastings Radar 308664 6310728 6311054 6311100 * config/i386/i386.c (legitimate_pic_address_disp_p): Local labels should not be affected by -mfix-and-continue. 2008-10-24 Fariborz Jahanian Radar 5847213 (minor tweak) * c-decl.c (build_block_descriptor_type): Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose visible to pch. 2008-10-24 Josh Conner Radar 6305331 * config/arm/arm.h (TARGET_COMPACT_SWITCH_TABLES): Define... (CASE_VECTOR_SHORTEN_MODE): ...use. (ASM_OUTPUT_ADDDR_DIFF_VEC): ...use. * config/arm/arm.md (casesi): ...use. (thumb_casesi_internal): ...use. 2008-10-23 Fariborz Jahanian Radar 6307941 * config/darwin.h (OBJC2_ABI_DISPATCH): New macro. 2008-10-23 Caroline Tice Radar 6300081 * tree.c(build_block_pointer_type): Add call to build_generic_block_struct_type to initialize generic_block_literal_struct_type if necessary. * cp/parser.c (build_generic_block_struct_type): Update comments. (build_block_struct_type): Remove call to build_generic_block_struct_type. (make_block_pointer_declarator): Likewise. * c-decl.c (make_block_pointer_declarator): Likewise. * c-parser.c (build_block_struct_type): Likewise. (build_generic_block_struct_type): Update comments. 2008-10-22 Caroline Tice Radar 6300081 * c-parser.c (build_generic_block_struct_type): Add comments. * cp/parser.c (build_generic_block_struct_type): Add comments. 2008-10-22 Caroline Tice Radar 6300081 & Radar 6163705 * tree.h (generic_block_literal_struct_type): Extern global variable decl. (build_generic_block_struct_type): New extern function decl. * cp/parser (build_generic_block_struct_type): New function. (build_block_struct_type): Call build_generic_block_struct_type to initialize generic_block_literal_struct_type. (make_block_pointer_declarator): Likewise. (declare_block_prologue_local_vars): Temporarily set input_location to 1 before the start of the block function; re-set input_location at the end of this function. * dwarf2out.c (add_type_attribute): If the type is a BLOCK_POINTER_TYPE, assign it to be a pointer to a generic_block_literal_struct_type. * c-decl.c (make_block_pointer_declarator): Call build_generic_block_struct_type to initialize generic_block_literal_struct_type. * c-common.c (generic_block_literal_struct_type): New global variable. * c-parser.c (build_generic_block_struct_type): New function. (build_block_struct_type): Call build_generic_block_struct_type to initialize generic_block_literal_struct_type. * testsuite/gcc.apple/block-debug-1.c: Fix test to work with new compiler modifications. * testsuite/gcc.apple/block-debug-2.c: Likewise. * testsuite/g++.apple/block-debug-1.C: Likewise. * testsuite/g++.apple/block-debug-2.C: Likewise. 2008-10-22 Fariborz Jahanian Radar 6310599 * dwarf2out.c: forwarding is now __forwarding * c-decl.c: All internal field names in block internal types have '__' prefix. * c-typeck.c: Ditto * c-common.c: Ditto * c-parser.c: Ditto 2008-10-21 Stuart Hastings Radar 6187262 * tree-ssa-loop-ivopts.c (may_be_nonaddressable): Treat "(vector)scalar" like "(aggregate)scalar". 2008-10-21 Fariborz Jahanian Radar 4746503 * toplev.c (warn_deprecated_use): Do not issue any deprecated warning in a function that itself is deprecated. 2008-10-20 Stuart Hastings Radar 6222167 * sse.md (sse_4_1_smax3, sse_4_1_umax3, sse_4_1_smin3, sse_4_1_umin3): Drop '*' so these are visible... * i386.c (__builtin_ia32_pmaxsb128, __builtin_ia32_pmaxsd128, __builtin_ia32_pmaxud128, __builtin_ia32_pmaxuw128, __builtin_ia32_pminsb128, __builtin_ia32_pminsd128, __builtin_ia32_pminud128, __builtin_ia32_pminuw128): ...here. Use CODE_FOR_sse4_1_XX codes. 2008-10-20 Stuart Hastings Radar 6227434 * config/i386/i386.c (legitimate_pic_addres_disp_p): Use #if TARGET_MACHO for Linux portability. 2008-10-20 Fariborz Jahanian Radar 6255595 * config/darwin.c (output_objc_section_asm_op): Add two new section names. (objc_internal_variable_name): New routine. (machopic_select_section): Call objc_internal_variable_name. * config/darwin-sections.def: Define two new kinds of __DATA section. 2008-10-17 Fariborz Jahanian Radar 6289031 * c-parser.c: Removed all code related to radar 6083129 (byref escapes). * c-common.h: Removed all declarations related to radar 6083129 (byref escapes). * c-typeck.c: Removed all code related to radar 6083129 (byref escapes). * c-decl.c: Removed all code related to radar 6083129 (byref escapes). (finish_decl): Add code to cleanup a __block declared variable. (build_block_byref_decl): Add code to cleanup a __block declared variable. 2008-10-15 Stuart Hastings Radar 6255801 * objc/objc-act.c (objc_set_global_decl_fields): Set DECL_USER_ALIGN on OBJC metadata to keep only word alignment. 2008-10-17 Stuart Hastings Radar 6227434 * config/i386/i386.c (legitimate_pic_address_disp_p): All static variables are addressed as global under -m64 -mfix-and-continue, except Objective-C metadata. 2008-10-17 Caroline Tice Radar 6292557 * dwarf2out.c (add_inlined_section_entry): If the function does not have any debug info, don't try to add it to the dwarf inlined section. * testsuite/gcc.apple/r6292557.c: New testcase. 2008-10-16 Fariborz Jahanian Radar 6276695 (Removed all references to __byref and removed '|' syntax for byref decls.) * cp/decl.c: Modifed * cp/parser.c: Modifed * c-decl.c: Modifed * c-typeck.c: Modifed * c-common.c: Modifed * c-common.h: Modifed * c-parser.c: Modifed * config/darwin-c.c: Modified 2008-10-16 Josh Conner Radar 6288519 * config/arm/arm.md (casesi): Disallow for TARGET_THUMB && TARGET_LONG_CALLS. (thumb_casesi_internal): Likewise. 2008-10-14 Fariborz Jahanian Radar 6286881 * fold-const.c (fold_binary): Type of operands to TRUTH_NOT_EXPR must match. 2008-10-10 Fariborz Jahanian Radar 5847213 - New Block ABI * dwarf2out.c (add_type_attribute): Unusuable code for radar 5811943 is removed. * c-decl.c (build_block_byref_decl): Removed unneeded build of block_original_byref_decl_list. (build_block_internal_types): Removed. (build_block_descriptor_type): New routine to build the descriptor type. (make_block_pointer_declarator): Unused code is removed. * c-typeck.c (build_block_call): New code gen for block calls. * c-common.c (invoke_impl_ptr_type): Removed. * c-common.h (block_original_byref_decl_list, build_block_internal_types): Removed (build_block_descriptor_type, BLOCK_HAS_DESCRIPTOR): Decls added. * c-parser.c (build_block_struct_type): Block literal expression internal type is redeclared into its new layout. (build_block_struct_initlist): Initializer list for above type is redone. (build_descriptor_block_decl): New routine to declare the descriptor variable (build_block_literal_tmp): Modified for the new type and initiazation. 2008-10-10 Stuart Hastings Radar 6107012 * ipa-type-escape.c (parent_type_p_pset): New. (check_cast_type): Initialize it. (parent_type_p): Use it. 2008-10-10 Stuart Hastings Radar 6227434 * config/i386/i386.c (legitimate_pic_address_disp_p): All static variables are addressed as global under -m64 -mfix-and-continue. 2008-10-10 Caroline Tice a Radar 6275985 * dwarf2out.c (debug_inlined_section): New global variable. (struct indirect_string_node): Add new field, is_fn_name. (inlined_ref): New typedef. (struct inlined_entry_struct): New global type. (DWARF_INLINED_HEADER_SIZE): New constant. (debug_inlined_table): New global variable. (size_of_inlined): New function. (add_inlined_section_entry): New function. (output_debug_inlined_section): New function. (add_AT_string): set new field, is_fn_name, to true if the string is a function name. (AT_string_form): Force the form to always be a string pointer if the string is a function name. (has_AT): New function. (add_abstract_origin_attribute): Make sure any function that gets inlined as the DW_AT_inline attribute. (get_inlined_subroutine_die): Call add_inlined_section_entry, to add it to the new section. (dwarf2init): Allocate the new debug_inlined_table; initialize debug_inlined_section if DEBUG_INLINED_SECTION is defined. (prune_unused_types): Make sure function names always go into the debug_str_hash table. (dwarf2out_finish): if DEBUG_INLINED_SECTION is defined, switch to the debug_inlined_section and call output_debug_inlined_section. * config/darwin.h: define DEBUG_INLINED_SECTION. * config/darwin.c (darwin_file_start): Add DEBUG_INLINED_SECTION to list of debug sections. 2008-10-09 Fariborz Jahanian Radar 6269491 * config/darwin.h (darwin_ms_struct): Remove addition of -Wno-non-lvalue-assign when -fobjc-gc is specified. 2008-10-09 Caroline Tice Radar 6163705 (again) * function.c (find_block_prologue_insns): Don't worry about other insns before the prologue insns, if the optimization level is zero. 2008-10-07 Stuart Hastings Radar 6258941 gcc/cfgbuild.c (control_flow_insn_p): Treat unconditional TRAP like any conditional TRAP. 2008-10-06 Fariborz Jahanian Radar 6268817 * c-decl.c (check_for_loop_decls): Block helper function is OK if declared in a for-loop main statement block. 2008-10-03 Josh Conner Radar 6268204 * doc/invoke.texi (-mkernel): Document that -mlong-branch is set for ARM. * config/arm/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Have -mkernel and -fapple-kext imply -mlong-branch. 2008-10-02 Fariborz Jahanian Radar 6246527 * attribs.c (decl_attributes): Added support for adding attributes on block pointer variable declarations. * c-common.c (block_delta_format_args): Add (any_recognized_block_attribute): Add * c-common.h (any_recognized_block_attribute): New decl. * c-parser.c (c_parser_block_literal_expr): Call to do the delta on printf attribute. 2008-10-02 Stuart Hastings Radar 5919583 * config/i386/emmintin.h (_mm_srli_si128, _mm_srli_si128): Revise to invoke __builtin_ia32_pslldqi128_byteshift and __builtin_ia32_psrldqi128_byteshift, remove parameters and move multiplication by 8 from here... * config/i386/i386.c (ix86_expand_builtin): ...to here. Add support for IX86_BUILTIN_PSLLDQI128_BYTESHIFT and IX86_BUILTIN_PSRLDQI128_BYTESHIFT. (IX86_BUILTIN_PSLLDQI128_BYTESHIFT, IX86_BUILTIN_PSRLDQI128_BYTESHIFT, __builtin_ia32_pslldqi128_byteshift, __builtin_ia32_psrldqi128_byteshift): New. 2008-10-01 Fariborz Jahanian Radar 6252174 * config/darwin.c (machopic_select_section): Send objc_msgSendSuper* symbol to msgrefs section. 2008-09-30 Fariborz Jahanian Radar 6261552 * gimplify (gimplify_return_expr): code to check for cur_block is removed. 2008-09-30 Fariborz Jahanian Radar 6230297 * c-parser.c (build_block_struct_initlist): 'trivial' block temporary can be static as well. (build_block_literal_tmp): Accomodate 'trivial' block literal temporary variable as static. 2008-09-30 Fariborz Jahanian Radar 6225809 * c-decl.c (build_block_byref_decl): Add __block vaiables to intervening blocks. 2008-09-30 Stuart Hastings Radar 5919583 Revert 2008-09-26 patch. 2008-09-30 Caroline Tice Radars 6237086 & 6237616 * dwarf2out.c (find_block_byref_var_real_type): Fix to work whether TYPE_NAME (block_struct) is an IDENTIFIER_NODE or a TYPE_DECL. (block_fixup_location_description): New function. (build_byref_var_location_expression): Add call to block_fixup_location_description. (add_block_byref_var_location_attribute): Fix to work whether TYPE_NAME (block_struct) is an IDENTIFIER_NODE or a TYPE_DECL. (gen_variable_die): Ditto, when handling block byref variables. 2008-09-28 Caroline Tice Radar 6163705 * function.c (append_insn_list): Remove function. (find_and_extract_block_prologue_insns): Renamed (see next entry). (find_block_prologue_insns): Renamed from find_and_extract_block_prologue_insns; instead of extracting a list of prologue insns, it now only finds the prologue insns and determines if it's safe to move the end-of-prologue note to just past the last prologue insn; if so it returns the last prologue insn, otherwise just returns null. 2008-09-26 Stuart Hastings Radar 5919583 * config/i386/emmintin.h (_mm_srli_si128, _mm_srli_si128): Remove parameters and move multiplication by 8 from here... * config/i386/i386.c (ix86_expand_builtin): ...to here. 2008-09-25 Fariborz Jahanian Radar 6244520 - minor addition * c-common.c (build_indirect_object_id_exp): offset needs be updated to accomodate addition of the new field. 2008-09-26 Caroline Tice Radar 6163705 * cp/parser.c (declare_block_prologue_local_byref_vars): Assign the decl_stmt a line number of one before the declaration of the function. * c-decl.c (declare_block_prologue_local_vars): Likewise. * function.c (find_and_extract_block_prologue_insns): New function. (append_insn_list): New function. (thread_prologue_and_epilogue_insns): If the function is a Block helper function, call find_and_extract_block_prologue_insns; If that function call returned a list of insns, call append_insn_list to add them to the end of the "normal" prologue. 2008-09-25 Fariborz Jahanian Radar 6246965 * c-typeck.c (functiontypes_are_block_compatible): Use existing API for argument-list type checking. 2008-09-25 Fariborz Jahanian Radar 6244520 * c-decl.c (new_block_byref_decl): New field added to struct __Block_byref_x. (init_byref_decl): Above field initialized to NULL. 2008-09-25 Fariborz Jahanian Radar 6237713 * c-common.c (handle_noreturn_attribute): Add 'noreturn' attribute to block pointer decls. * c-parser.c (c_parser_block_literal_expr): Parse and set attributes on block literals. 2008-09-24 Stuart Hastings Radar 6025404 * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3): Not commutative. 2008-09-23 Fariborz Jahanian Radar 6196572 * c-typeck.c (functiontypes_are_block_compatible): Assignment to variadic block pointer is ok. 2008-09-19 Fariborz Jahanian Radar 6173152 * c.opt (-fnew-property-ivar-synthesis): Is now the default. 2008-09-19 Fariborz Jahanian Radar 6230656 * config/darwin-c.c (darwin_cpp_builtins): Don't define __block macro with -fno-blocks. 2008-09-19 Stuart Hastings Radar 6119849 * gcc/builtins.c (fold_builtin_classify): Under -ffast-math, finite() should return 1. 2008-09-17 Josh Conner Radar 6204451 * global.c (global_alloc): Remove code that ignores conflicts on single-set tied pseudos. 2008-09-16 Fariborz Jahanian Radar 6214617 * c-common: New flag BLOCK_HAS_CXX_OBJ replaces BLOCK_NO_COPY. (BlockImportsCxxObjects): New field replaces BlockHasByrefVar. * c-parser.c (build_block_struct_type): Remove setting of BLOCK_NO_COPY flag. 2008-09-16 Fariborz Jahanian Radar 6217257 * c-common.c (handle_blocks_attribute): Diagnose vla __block declarations. 2008-09-13 Josh Conner Radar 6214296 * config/darwin.h (STARTFILE_SPEC): Don't add crt3.o to the link line if -miphoneos-version-min was specified. 2008-09-12 Fariborz Jahanian Radar 6212507 * config/darwin-c.c (objc_check_format_cfstring): Check for argument number value. 2008-09-12 Fariborz Jahanian Radar 6212722 (tweak) * c-decl.c (build_block_ref_decl): Use array_to_pointer_conversion and function_to_pointer_conversion. * c-typeck.c (array_to_pointer_conversion, function_to_pointer_conversion): Made them global. * c-common.h (array_to_pointer_conversion, function_to_pointer_conversion): Declare. 2008-09-11 Fariborz Jahanian Radar 6212722 * c-decl.c (build_block_ref_decl): Add support for array referenced as copied in objects in blocks. 2008-09-11 Caroline Tice Radar 6066486 * dwarf2out.c (add_sibling_attribute): Move leaf-test return statement to below the code that potentially removes the DW_AT_MIPS_linkage_name attribute. 2008-09-10 Caroline Tice Radar 6193416 * dwarf2out.c (gen_subprogram_die): Force Blocks helper functions to be children of the comp_unit die. 2008-09-09 Fariborz Jahanian Radar 6169580 * c-commmon.c (build_block_helper_name): Fix bug in block helper function name mangling. 2008-09-08 Fariborz Jahanian Radar 6064186 * config/darwin.c (machopic_select_section): Message refs symbol prefixes changed now. Accomodate it. * config/darwin-sections.def: __objc_msgrefs is now typed as "coalesced". 2008-09-08 Stuart Hastings Radar 6070085 * gcc/tree-ssa-alias.c (group_aliases): Continue merging alias sets until the changes converge. 2008-09-03 Fariborz Jahanian Radar 6185344 * c-typeck.c (c_finish_return): Don't do block specific stuff when block has a return type. * c-common.h (block_sema_info): block_has_return_type is a new field. * c-parser.c (c_parser_direct_declarator): Terminate type parsing for block return types. (c_parser_block_literal_expr): Added support to parse and handle explicit return type for blocks. 2008-08-28 Stuart Hastings Radar 5023884 * gcc/config/darwin.h (LINK_SPEC): Remove "-multiply_defined suppress". 2008-08-28 Fariborz Jahanian Radar 6160536 * c-commmon.c (build_block_helper_name): New * c-common.h (build_block_helper_name): New decl. * c-parser.c (c_parser_block_literal_expr): Call build_block_helper_name to build pretty helper function name. 2008-08-28 Fariborz Jahanian Radar 6180456 * c-decl.c (synth_block_byref_id_object_copy_func): Different API for copying __block declared objects in c. (synth_block_byref_id_object_dispose_func): Different API for releasing __block declared objects in c. * c-common.c (block_byref_assign_copy_decl): New (build_indirect_object_id_exp): Cast to 'id *' in objective-c mode only. * c-common.h (build_block_byref_assign_copy_decl): New decl. * c-parser.c (synth_copy_helper_block_func): Refactored code to call build_block_byref_assign_copy_decl(). 2008-08-27 Fariborz Jahanian Radar 6177162 * c-typeck.c (build_external_ref): Allow local static as a byref variable by default. 2008-08-27 Fariborz Jahanian Radar 5780114 * gcc/doc/extend.texi: Modify documentation for -fobjc-gc. 2008-08-26 Stuart Hastings Radar 6131435 * gcc/config/i386/i386.h (SLOW_BYTE_ACCESS): Remove check for TARGET. 2008-08-22 Fariborz Jahanian Radar 6164211 * c-typeck.c (build_array_ref): Preserve element's protocol list when building array type. 2008-08-22 Fariborz Jahanian Radar 6172148 * tree.h (BLOCK_SYNTHESIZED_FUNC): Define * dwarf2out.c (dwarf2out_decl): Check for block helpers and do not treat them as nested functions. * c-decl.c (build_helper_func_decl): Set BLOCK_SYNTHESIZED_FUNC for all block helper functions. 2008-08-25 Josh Conner Radar 6148015 * config/arm/arm.h (ARG_POINTER_CFA_OFFSET): Define. * config/arm/arm.c (arm_expand_prologue): Mark pushes as RTX_FRAME_RELATED_P. 2008-08-24 Caroline Tice Radars 6144664, 6145471, 6144634 c-decl.c (build_block_byref_decl): Assign the source location for each byref decl to the source location of the helper function decl. (build_block_ref_decl): Ditto for ref decls. 2008-08-23 Josh Conner Radar 6162387 * config/darwin-sections.def (objc_v2_selector_refs_section): Change section type to literal_pointers. 2008-08-22 Fariborz Jahanian Radar 5595325 * config/darwin-protos.h (darwin_handle_nsobject_attribute): New decl. * config/darwin.c (darwin_handle_nsobject_attribute): New handler for NSObject attribute. * config/darwin.h: New entry for NSObject attribute table. 2008-08-19 Fariborz Jahanian Radar 5435299 * c.opt (fnew-property-ivar-synthesis): New option. 2008-08-20 Stuart Hastings Radar 6131435 * gcc/config/i386.h (SLOW_BYTE_ACCESS): Fix APPLE LOCAL. 2008-08-19 Stuart Hastings Radar 6131435 * gcc/config/i386.h (SLOW_BYTE_ACCESS): Set false under -mkernel, -fapple-kext, or -m64. 2008-08-18 Josh Conner Revert: 2008-08-14 Eugene Marinelli Radar 6149764 * Makefile.in: Add treecode-num-insns.def to tree-inline.o dependency list. 2008-08-06 Eugene Marinelli Radar 6013597 * params.def: Change default PARAM_INLINE_CALL_COST from 16 to 2. Multiply instruction-count related parameters by 0.55 to account for new instruction count estimation. * tree-inline.c (estimate_num_insns_1): Replace most cases with addition of constants defined in treecode-num-insns.def. Other cases modified to return 1000 times the estimated number of instructions. (estimate_num_insns): Divide result of estimate_num_insns_1 by 1000. * treecode-num-insns.def: Add 2008-08-14 Eugene Marinelli Radar 6149764 * Makefile.in: Add treecode-num-insns.def to tree-inline.o dependency list. 2008-08-14 Fariborz Jahanian Radar 5822844 * c-typeck.c (digest_init): Handler block as initializer. (c_finish_return): check for completed block before analyzing block's return expression. * varasm.c (output_constant): Allow outputting block data. * c-common.h (BLOCK_IS_GLOBAL): New flag. (block_is_complete): New field in block data structure. * c-parser.c (build_block_struct_initlist): New initializer and flag for global block data. (build_block_literal_tmp): Temporary data for global block is declared as global static. (c_parser_block_literal_expr): Removed diagnostics for global blocks. Moved fixing helper function type earlier before its tree is built. 2008-08-11 Jim Grosbach Radar 6141565 * gcc/c-common.c (iasm_constraint_for): fix compiler warning 2008-08-08 Stuart Hastings Radar 6131435 * gcc/config/i386.h (SLOW_BYTE_ACCESS): Set false for all targets. 2008-08-08 Stuart Hastings Radar 5971844 * gcc/config/i386/darwin.opt (-mdarwin-rtl-pre-ignore-critical-edges): New flag. * gcc/postreload-gcse.c (eliminate_partially_redundant_load): Disable critical edge check under -mdarwin-rtl-pre-ignore-critical-edges. 2008-08-07 Stuart Hastings Radar 6128170 * gcc/except.c (output_function_exception_table): Move .align ahead of both labels. 2008-08-06 Fariborz Jahanian Radar 6014138 * c-decl.c (build_block_byref_decl): In the presence of nested "{" move up the scope chain until reaching the main function body's scope. 2008-08-06 Eugene Marinelli Radar 6013597 * params.def: Change default PARAM_INLINE_CALL_COST from 16 to 2. Multiply instruction-count related parameters by 0.55 to account for new instruction count estimation. * tree-inline.c (estimate_num_insns_1): Replace most cases with addition of constants defined in treecode-num-insns.def. Other cases modified to return 1000 times the estimated number of instructions. (estimate_num_insns): Divide result of estimate_num_insns_1 by 1000. * treecode-num-insns.def: Add 2008-08-06 Fariborz Jahanian Radar 6112131 - again (restore __byref again). * config/darwin-c.c (darwin_cpp_builtins): Define __block. 2008-08-05 Eugene Marinelli Radar 6020402 Re-add fixed version of original patch for radar 6020402. 2008-08-05 Jim Grosbach Radar 6110622 * config/arm/arm.md (soft_muldi3): Missing length attribute 2008-08-05 Stuart Hastings Radar 6102803 * flow.c (recompute_reg_usage): If targeting ppc with -ftree-pre, clear existing reg-lifetime info to insure thorough dead-code elimination. * sbitmap.c (dump_sbitmap_vector): Avoid dumping uninitialized memory. 2008-08-04 Eugene Marinelli Radar 6020402 Temporarily reverting previous fix because of compilation error. 2008-08-04 Fariborz Jahanian Radar 6040305 - work in progress. * c-decl.c (build_indirect_object_id_exp): Removed. * c-common.c (build_indirect_object_id_exp): Added * c-common.h (build_indirect_object_id_exp): New decl. * config/darwin-c.c (darwin_cpp_builtins): Define __byref in c++ mode as well. 2008-08-04 Eugene Marinelli Radar 6020402 * calls.c (store_unaligned_arguments_into_pseudos): Add additional argument to store_bit_field call. * expmed.c (store_bit_field): Add argument for type of struct containing the bit field. (widest_mode_including_no_volatile_fields): Add. (store_fixed_bit_field): Use widest_mode_including_no_volatile_fields to set the maximum mode size to the size around the current field that does not include any volatile fields. * expr.c (emit_group_store, copy_blkmode_from_reg, write_complex_part): Add arguments to store_bit_field calls. * expr.h (store_bit_field): Add argument for struct type. * ifcvt.c (noce_emit_move_insn): Add arguments to store_bit_field calls. 2008-08-4 Jim Grosbach Radar 6090616 * global.c (set_preference): Add checks to prevent integer underflow of register numbers. 2008-08-01 Geoff Keating Radar 5095227 * config/rs6000/rs6000.c (darwin_rs6000_override_options): Don't enable -fstack-protector for PPC kexts targeting 10.6 by default. * g++.apple/kext-stackprotect-1.c: New. * g++.apple/kext-stackprotect-2.c: New. 2008-08-01 Jon Ziegler Radar 5095227 Re-apply Geoff's patch for -fstack-protector. 2008-08-01 Fariborz Jahanian Radar 5965787 (tweak). * c-decl.c (build_indirect_object_id_exp): Fixed offset computation of the 'object' field. 2008-07-31 Fariborz Jahanian Radar 6040305 - work in progress * gimplify.c (gimplify_return_expr): Do not gimplify return expresison yet if inside a block. 2008-07-30 Bill Wendling Radar 6113240 * tree.h: Declare invoke_impl_ptr_type. * dwarf2out.c (is_objc): New. Returns true if language is ObjC. (modified_type_die): Use is_objc instead of c_dialect_objc. (add_type_attribute): Don't assert if invoke_imple_ptr_type is null. * c-common.h: invoke_impl_ptr_type is now declared in tree.h. 2008-07-30 Fariborz Jahanian Radar 6112131 (__block renamed to __byref) * config/darwin-c.c (darwin_cpp_builtins): Remove __block definition. * c-parser.c: Refer to __byref instead of __block. * c-common.c: Ditto * c-typeck.c: Ditto * c-decl.c: Ditto. Also, restored it to its previous version. 2008-07-25 Fariborz Jahanian Radar 6014138 * config/darwin-c.c (darwin_cpp_builtins): Define __block same as __byref. * c-parser.c: All __byref are renamed to __block. * c-decl.c: Ditto * c-typeck.c: Rename __byref to __block. A __block variable is added to the 'byref' list now. 2008-07-23 Fariborz Jahanian Radar 6096219 * c-common.c (handle_blocks_attribute): __blocks' argument is now 'byref'. * config/darwin-c.c (darwin_cpp_builtins): Expand __byref into __attribute__((__blocks__(byref))). 2008-07-21 Stuart Hastings Radar 6050374 * local-alloc.c (reg_inheritance_1): Check for int->double SUBREG cast, assume it uses the pic-base. 2008-07-18 Fariborz Jahanian Radar 6068877 * c-common.h (objc_create_init_utf16_var): Removed decl. * stub-objc.c (objc_create_init_utf16_var): Removed definition. * config/darwin-protos.h: Renamed objc_create_init_utf16_var, objc_cvt_utf8_utf16 to create_init_utf16_var and cvt_utf8_utf16; respectively. * config/darwin.c (darwin_build_constant_cfstring): Call create_init_utf16_var, instead of objc_create_init_utf16_var. * config/darwin-c.c (create_init_utf16_var): New routine. (cvt_utf8_utf16): Used to be called objc_cvt_utf8_utf16. 2008-07-18 Fariborz Jahanian Radar 6084601 * c-opts.c (c_common_post_options): Allow blocks in C99 for objc programs. 2008-07-18 Fariborz Jahanian Radar 6083129 - twiked * c-decl.c (release_all_local_byrefs_at_return): Do not release imported __byref variables in the block. * c-parser.c (gen_block_byref_release_exp): Do not release __byref variables outside of the block when returning from the block. 2008-07-17 Fariborz Jahanian Radar 6083129 * c-decl.c (push_scope): set byref_in_current_scope in the new scope. (in_bc_stmt_block, outof_bc_stmt_block, release_all_local_byrefs_at_return, diagnose_byref_var_in_current_scope, release_local_byrefs_at_break): New. (pop_scope): Call gen_block_byref_release_exp when a __byref variable is exited. * c-typeck.c (c_finish_goto_label): Diagnose __byref variables in presense of gotos. (c_finish_block_return_stmt): Much clean up and simplified. (c_finish_return): Call the new and improved c_finish_block_return_stmt. (c_finish_return): Release out-of-scope __byref locals when return/break is seen. * c-common.h: Several new declarations. * c-parser.c (c_parser_switch_statement): call to in_bc_stmt_block and outof_bc_stmt_block. (c_parser_while_statement): Ditto. (c_parser_do_statement): Ditto. (c_parser_for_statement): Ditto. (build_block_byref_release_decl, gen_block_byref_release_exp): New. (synth_destroy_helper_block_func): Simplified to call build_block_byref_release_decl. 2008-07-15 Fariborz Jahanian Radar 6035389 * convert.c (convert_to_integer): Can convert block pointer to integer. 2008-07-15 Fariborz Jahanian Radar 5988451 * c-decl.c (build_block_ref_decl): Insert copied in variable in each enclosing block which does not use it. (begin_block): Remove setting of "the_scope" field of the block. (in_imm_block): Fix effect of changing the "the_scope" field. (lookup_name_in_block): Do not skip over copied-in variables when looking up a variable in the block. * c-parser.c (c_parser_block_literal_expr): Set block's "the_scope" field to the helper function's outer-most body scope. 2008-07-09 Fariborz Jahanian Radar 6034839 * c-parser.c (c_parser_block_literal_expr): Warning to error. 2008-07-08 Fariborz Jahanian Radar 5988451 * c-parser.c (build_block_struct_type): If inner block has copy/destroy helpers, so does its outer block. (c_parser_block_literal_expr): Fix unique_count so we get unique helpers when having nested blocks. 2008-07-08 Fariborz Jahanian Radar 6048570 * c-typeck.c (c_finish_return): Error on returning a block on the stack. 2008-07-07 Fariborz Jahanian Radar 6048397 (twik). (causes build failure with enable-checking on). * dwarf2out.c (gen_variable_die) check for node kind. 2008-07-03 Caroline Tice Radar 6048397 * dwarf2out.c (find_closure_byref_var_real_type): New function. (build_byref_var_location_expression): New function. (add_closure_byref_var_location_attribute): New function. (gen_variable_die): Check the type of the variable to see if it is a pass-by-reference closure variable; if so, try to call find_closure_byref_var_real_type) to get its type, and call add_closure_byref_var_location_attribute to get its location; if those calls fail, fall back on the old functionality. 2008-06-19 Eugene Marinelli Radar 5923888 * config/i386/i386.h (TARGET_IASM_OP_CONSTRAINT): Add addpd instruction. 2008-06-16 Fariborz Jahanian Radar 5939894 (twik) * c-typeck.c : Routine build_closure_internal_types moved from here to: * c-decl.c : Also, check for previous declaration of "struct invoke_impl" before defining one. * c-parser.c : Removed a comment, so makediff may be happy again. (unrelated to this radar). 2008-06-06 Fariborz Jahanian Radar 5988451 * c-decl.c (lookup_name_in_closure): check for flags only if having a var_decl in scope. 2008-06-06 Fariborz Jahanian Radar 5992047 * c-parser.c (synth_destroy_helper_closure): Lookup _Block_destroy before declaring one. 2008-06-05 Fariborz Jahanian Radar 5988995 * c-typeck.c (types_are_closure_compatible): Nested block pointer types must be considered when matching block types. 2008-06-05 Fariborz Jahanian Radar 5982990 * c-parser.c (c_parser_objc_synch_compound_statement): New (c_parser_objc_synchronized_statement): Call c_parser_objc_synch_compound_statement. 2008-06-04 Fariborz Jahanian Radar 5985368 * c-parser.c (c_parser_declaration_or_fndef): Better diagnostics for a bad block definition. 2008-05-30 Jim Grosbach Radar 5946347 * gcc/doc/extend.texi: Add documentation for ARM Type Attributes ms_struct and gcc_struct. Remove errant reference to ms_struct and gcc_struct as variable attributes for x86 and PPC. * gcc/doc/invoke.texi: Add documentation for -mms-bitfields for x86, PPC, and ARM target options. * gcc/doc/tm.texi: Add documenation for TARGET_FIELD_MS_STRUCT_ALIGN and BIGGEST_MS_STRUCT_ALIGNMENT. * gcc/testsuite/gcc.dg/bf-ms-layout.c: Run for ARM. Add correct testcase values for ARM. * gcc/testsuite/gcc.dg/bf-no-ms-layout.c: Ditto. * gcc/testsuite/gcc.dg/attr-ms_struct-2.c: Run for ARM. * gcc/testsuite/gcc.dg/attr-ms_struct-1.c: Run for ARM. * gcc/testsuite/gcc.dg/bf-ms-layout-2.c: Run for ARM. * gcc/defaults.h (TARGET_FIELD_MS_STRUCT_ALIGN): New macro. If not explicitly set by the target, TARGET_FIELD_MS_STRUCT_ALIGN is defined to TYPE_ALIGN of the type of the field. (BIGGEST_MS_STRUCT_ALIGNMENT): Ditto. If not explicitly set by the target, BIGGEST_MS_STRUCT_ALIGNMENT is defined to BIGGEST_ALIGNMENT. * gcc/stor-layout.c (start_record_layout): Allow a target to override the default offset_alignment for ms_struct attributed records by defining BIGGEST_MS_STRUCT_ALIGNMENT. (update_alignment_for_field): Use TARGET_FIELD_MS_STRUCT_ALIGN for determining the alignment for a field in an ms_struct attributed record. (place_field): Ditto. * gcc/config/arm/arm.c (arm_handle_ms_struct_attribute): New function. (arm_handle_gcc_struct_attribute): Ditto. (arm_ms_bitfield_layout_p): Ditto. (arm_field_ms_struct_align): Ditto. (TARGET_MS_BITFIELD_LAYOUT_P): New macro. (arm_attribute_table): New entries for ms_struct and gcc_struct attributes. (arm_set_default_type_attributes): If -mms-bitfields was specified, or if #pragma ms_struct is on, apply an ms_struct attribute to an structure type definition. * gcc/config/arm/arm.h (TARGET_FIELD_MS_STRUCT_ALIGN): New macro. (BIGGEST_MS_STRUCT_ALIGNMENT): Ditto. * gcc/config/arm/arm-protos.h (arm_field_ms_struct_align): Prototype. * gcc/config/arm/arm.opt (-m[no-]ms-btifields): New target options. 2008-05-30 Josh Conner Radar 5974622 * flow.c (flow_lite): Deallocate pic_rtx_inheritance. * local-alloc.c (reg_inheritance): Only calculate if !optimize. 2008-05-30 Josh Conner Radar 5933878 Backport from 4.3: 2007-07-09 Geoffrey Keating PR 32617 * c-common.c (c_alignof_expr): Look at DECL_ALIGN of FUNCTION_DECLs. (handle_aligned_attribute): Allow use on FUNCTION_DECLs. * varasm.c (assemble_start_function): Honor DECL_ALIGN for FUNCTION_DECLs. Don't use align_functions_log if DECL_USER_ALIGN. * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN even for FUNCTION_DECLs. * c-decl.c (merge_decls): Propagate DECL_ALIGN even for FUNCTION_DECLs. * tree.h (DECL_ALIGN): Update for new location of 'align'. (DECL_FUNCTION_CODE): Update for new location and name of 'function_code'. (DECL_OFFSET_ALIGN): Update for new location of 'off_align'. (struct tree_decl_common): Move 'align' and 'off_align' out of union, ensure they're still on a 32-bit boundary. Remove other fields in union 'u1'. (struct tree_function_decl): Add field 'function_code' replacing 'u1.f' in tree_decl_common. * tree.c (build_decl_stat): Set initial value of DECL_ALIGN. * doc/extend.texi (Function Attributes): Add 'aligned' attribute. (Variable Attributes): Cross-reference 'aligned' attribute to Function Attributes. * flags.h (force_align_functions_log): Delete. * toplev.c (force_align_functions_log): Delete. 2008-05-28 Josh Conner Radar 5939894 * dwarf2out.c (gen_variable_die): Move special handling of CLOSURE_POINTER_TYPE from here... (gen_variable_die): ...to here. * c-typeck.c (build_closure_call): Add assert of invoke_impl_ptr_type. Move call of build_closure_internal_types from here... * c-decl.c (make_closure_pointer_declarator): ...to here. * c-parser.c (build_closure_struct_initlist): Add assert of invoke_impl_ptr_type. 2008-05-27 Fariborz Jahanian Radar 5965787 - (some blocks clean up). * c-decl.c (build_indirect_object_id_exp): Check correct macro for size of a pointer. (new_block_byref_decl): Better way of allocation a buffer. (init_byref_decl): Some flags are renamed to match the runtime name. End function type's typelist with a void. * c-common.h: For blocks, use same flags as in its runtime. * c-parser.c (build_closure_struct_type): More cleanup. (build_closure_struct_initlist): More cleanup. (synth_copy_helper_closure_fuction): All function type's type list must end with a void type. (synth_destroy_helper_closure): Ditto. (c_parser_closure_literal_exp): Ditto. 2008-05-27 Stuart Hastings Radar 5951842 * config/i386/sse.md (sse2_lshrti3): Moved from here... * config/i386/i386.md (sse2_lshrti3): ...to here. * testsuite/gcc.apple/5951842.c: New. 2008-05-23 Fariborz Jahanian Radar 5925639 * c-parser.c: (c_parser_for_statement): Check for a non-null collection expression before deciding that it is a fraeach statement. 2008-05-23 Fariborz Jahanian Radar 5957801 * c-typeck.c (build_conditional_expr): Allow convesion of a pointer type null to a block pointer in a conditional expression. 2008-05-23 Fariborz Jahanian Radar 5928316 * c-typeck.c (build_binary_op): Added check for block pointer. 2008-05-23 Fariborz Jahanian Radar 5925781 * c-common.c (handle_nonnull_attribute): Support block pointer just like a pointer for nonnull attribute. (check_nonnull_arg): Ditto. 2008-05-20 Jon Ziegler Radar 5095227 Back out Geoff's patch for -fstack-protector. Leave in the test case. 2008-05-20 Fariborz Jahanian Radar 5932809 - minor change for runtime delight. * c-parser.c (build_closure_struct_type): Add strcutor fields for __byref 'id' object blocks as well. (build_closure_struct_initlist): And their initializers. 2008-05-16 Geoff Keating Radar 5095227 * common.opt (-fstack-protector): Default to -1. * config/darwin.c (darwin_override_options): If on 10.5 and -fstack-protector is unspecified, switch it on. * toplev.c (process_options): If -fstack-protector is still unspecified, switch it off. 2008-05-16 Fariborz Jahanian Radar 5932809 * tree.h: VAR_DECL node now use two new flags. (COPYABLE_BYREF_LOCAL_VAR, COPYABLE_BYREF_LOCAL_NONPOD): New macros to access these flags. * c-decl.c (build_indirect_object_id_exp, synth_block_byref_id_object_copy_func, synth_block_byref_id_object_dispose_func, new_block_byref_decl, init_byref_decl): New. (finish_decl): Build a new type for a __byref local variable and initialize it to a list of initializers. (build_byref_local_var_access): New routine. (build_closure_byref_decl): Merge the BYREF flags into the newly declared variable. (build_closure_ref_decl): decl' was previously declared byref. Copy the value embedded in the above variable. * c-typeck.c (build_external_ref): build_closure_ref_decl call takes one less argument. (do_digest_init): New. * c-common.c (handle_blocks_attribute): New routine to implement __byref attribute on variables. * c-common.h: Bunch of new declarations to implement __byref variables. * stub-objc.c (cast_to_pointer_to_id): New stub. * c-parser.c (c_parser_postfix_expression): Code to transform a reference to a __byref variable X into __Block_byref_X.forwarding->X. (build_closure_struct_type): Go through list of __byref variables for the blocks and set hasByrefNonPOD and hasByrefPOD flags for NonPOD and POD of such variables. __byref POD variables also require addition of the two strcutor pointer fields in the block structure type. (build_closure_struct_initlist): Initialzer list must also match the new requiement for __byref PODs. (synth_copy_helper_closure_func): For each __byref declared variable used in |...| Must generate call to _Block_byref_assign_copy. (synth_destroy_helper_closure): For each __byref declared variable used in |...| Must generate call to _Block_byref_release. (c_parser_closure_literal_exp): Must synthesize helper functions for __byref local variables declared as byref in the block. * config/darwin-c.c (darwin_cpp_builtins): Define __byref attribute if -fblocks. 2008-05-15 Stuart Hastings Radar 5695218 * stmt.c (expand_asm_operands): Revert last change. 2008-05-13 Stuart Hastings Radar 5695218 * common.opt (-fglobal-alloc-prefer-bytes): New flag. * doc/invoke.texi (-fglobal-alloc-prefer-bytes): Document it. * tree-pass.h (pass_life3): Declare new pass. * passes.c (init_optimization_passes): Add pass_life3. * flow.c (normal_flow, maybe_uses_pic_offset_table_rtx, gate_flow_lite, flow_lite, pass_life3): New. (verify_local_live_at_start): Tolerate picbase register deaths. (update_life_info, alloc_reg_life_data, free_propagate_block_info, mark_set_1): Check normal_flow before setting REG_LIVE_LENGTH(). (attempt_auto_inc): Check normal_flow before setting REG_LIVE_LENGTH(), call maybe_uses_pic_offset_table_rtx(). * global.c (global_alloc): Rebalance parenthesis, restore un-alloc-ability status of PIC_OFFSET_TABLE_REGNUM. (allocno_compare): Prefer byte registers. (remove_invlidated_death_notes): Tolerate out-of-range original regnos. (dump_global_regs): Dump RTXs instead of numbers, add register names to hard reg list. (dump_hard_regset, debug_hard_regset): New. * local-alloc.c (pic_rtx_inheritance, reg_inheritance_matrix, reg_inheritance_1, reg_inheritance, dump_inheritance, debug_inheritance): New. (local_alloc): Initialize and free reg_inheritance_matrix. (update_equiiv_regs): Call reg_inheritance_1 on every insn. * config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Rewrite. * rtl.h (replace_regs): Declare. * config/i386/i386.c (pic_labels_used): Add GTY marker. (ix86_globally_replace_pic_reg): New. (ix86_save_reg): Handle non-picbase useage of %ebx, call ix86_globally_replace_pic_reg(). (ix86_tieable_integer_mode_p): Convert integral return expression into bool. * stmt.c (expand_asm_operands): Revise to handle new %ebx allocation policy. 2008-10-30 Josh Conner Radar 6297258 * config/arm/arm.c (arm_output_mi_thunk): Emit 32-bit branch for thumb2 target. 2008-10-24 Josh Conner Radar 6305331 * config/arm/arm.c (arm_asm_output_addr_diff_vec): Disable support for compact switch tables with -mlongcall. * config/arm/arm.h (TARGET_COMPACT_SWITCH_TABLES): New definition... (CASE_VECTOR_SHORTEN_MODE): ...use it. * config/arm/arm.md (casesi): ...use it. (thumb_casesi_internal): ...use it. 2008-10-20 Fariborz Jahanian Radar 6255595 * config/darwin.c (output_objc_section_asm_op): Add two new section names. (objc_internal_variable_name): New routine. (machopic_select_section): Call objc_internal_variable_name. * config/darwin-sections.def: Define two new kinds of __DATA section. 2008-10-16 Josh Conner Radar 6293989 * arm.c (arm_legitimate_address_p): Don't allow pre-inc/dec or post-dec addressing for NEON vector operations. (thumb2_legitimate_address_p): Likewise. 2008-10-16 Josh Conner Radar 6288519 * config/arm/arm.md (casesi): Disallow for TARGET_THUMB && TARGET_LONG_CALLS. (thumb_casesi_internal): Likewise. 2008-10-13 Josh Conner Radar 6280380 * config/arm/arm.c (arm_final_prescan_insn): Check predicability of insns before allowing them to be predicated. 2008-10-09 Josh Conner Radar 6279481 * config/arm/arm.c (arm_adjust_insn_length): Don't adjust thumb-2 epilogue lengths. 2008-10-09 Josh Conner Radar 6267907 * config/arm/thumb2.md (thumb2_casesi_internal): Mark scratch reg as early-clobber. (thumb2_casesi_internal_pic): Remove this define_insn. * config/arm/arm.md (casesi): Don't use thumb2_casesi_internal_pic. 2008-10-03 Josh Conner Radar 6268204 * doc/invoke.texi (-mkernel): Document that -mlong-branch is set for ARM. * config/arm/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Have -mkernel and -fapple-kext imply -mlong-branch. 2008-10-03 Josh Conner Radar 6261739 * config/arm/thumb2.md (thumb2_cbz): Check for low-register use when calculating cost. (thumb2_cbnz): Likewise. 2008-10-02 Josh Conner Radar 6134442 * config/arm/t-darwin: Re-enable multi-libs for v5. 2008-09-30 Josh Conner Radar 6197406 * config/arm/neon.md (mulsf3addsf_neon, mulsf3subsf_neon): Remove. 2008-09-30 Josh Conner Radar 6251664 * config/arm/neon.md (mulsf3subsf_neon): Reverse operands to minus. 2008-09-30 Josh Conner Radar 6160917 * config/arm/arm.c (neon_vector_mem_operand): Call arm_legitimate_index_p. (neon_reload_in): New function. (neon_reload_out): New function. * config/arm/arm-protos.h (neon_reload_in): New proto. (neon_reload_out): New proto. * config/arm/neon.md (reload_in): New expand pattern. (reload_out): New expand pattern. * config/arm/predicates.md (neon_reload_mem_operand): New predicate. 2008-05-12 Fariborz Jahanian Radar 5925784 * c-parser (c_parser_closure_literal_exp): Set TREE_USED flag on _self hiddent argument. 2008-05-08 Josh Conner Radar 5901604 * config/rs6000/t-darwin (MULTILIB_EXTRA_OPTS): Define. 2008-05-08 Josh Conner Radar 5914860 * config/arm/t-darwin (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add armv6. (TARGET_LIBGCC2_CFLAGS): Remove armv6. (DARWIN_EXTRA_CRT_BUILD_FLAGS): Remove. 2008-09-19 Josh Conner Radar 6216388 * config/arm/arm.c (TARGET_DEFAULT_TARGET_FLAGS): Remove MASK_SCHED_PROLOG. 2008-09-19 Josh Conner Radar 6196857 * config/arm/arm.c (arm_output_epilogue): Use pop instead of ldmfd on Thumb-2. 2008-04-30 Caroline Tice Radar 5811961 * c-decl.c: (declare_closure_prologue_local_vars): Set the source location for the new decl expr statement to be the source location of the decl tree. 2008-04-25 Fariborz Jahanian Radar 5803005 (tweaked) * c-typeck.c (build_external_ref): Refactored global decl checks. 2008-09-11 Josh Conner Radar 6150882 * config/arm/ieee754-df.S: Add do_it macros to allow building thumb-2. * config/arm/ieee754-sf.S: Likewise. * config/arm/lib1funcs.asm: Redefine macros to allow building thumb-2. Disable compact switch table code for thumb-2. * config/arm/arm.c (arm_override_options): armv7a implies thumb-2. (arm_legitimate_index_p): Require VECTOR_MODE_P to use NEON instruction ranges. (thumb2_legitimate_index_p): Likewise. * config/arm/arm.h (TARGET_THUMB): Define. * config/arm/arm.opt (thumb_option): New option. 2008-09-09 Josh Conner Radar 6195983 * config/arm/arm.c (thumb2_output_casesi): Fix table invocation instructions. (arm_asm_output_addr_diff_vec): Emit b.w instead of b for Thumb-2. 2008-09-03 Jim Grosbach * Radar 6150859 * config/arm/arm.c (arm_print_operand): Add 'p' output code to print a d{0-15} reference to a 32 bit register. * config/arm/arm.h (VFP_REGNO_OK_FOR_SINGLE): Restrict SF mode values to even numbered float registers so they can be referenced by the 32x2 NEON instructions. * config/arm/vfp.md (*addsf3_vfp, *subsf3_vfp, *mulsf3_vfp, *mulsf3addsf_vfp, *mulsf3subsf_vfp): Disable for TARGET_NEON since we'll be using the NEON instructions instead. * config/arm/neon.md (*addsf3_neon, *subsf3_neon, *mulsf3_neon, *mulsf3addsf_neon, *mulsf3subsf_neon): New productions. 2008-08-26 Jim Grosbach Radar 6152801 * config/arm/arm.c (thumb2_output_casesi, arm_asm_output_addr_diff_vec): For thumb2, use direct braches for SImode switch tables (like we do for ARM mode). 2008-08-25 Josh Conner * config/arm/t-darwin: Disable multi-libs for v5. 2008-04-24 Fariborz Jahanian Radar 5803005 * c-typeck.c (build_external_ref): Treat globals as 'byref' by default. 2008-04-24 Caroline Tice Radar 5811943 * tree.h (TYPE_CLOSURE_IMPL_STRUCT): New macro. (lang_flag_2): Use previously unused field in tree_type to indicate closure structs. * dwarf2out.c (c-common.h): New include statement. (dwarf_attr_name): Add case for DW_AT_APPLE_closure. (gen_variable_die): Give pointers to closures the invoke_impl_ptr_type. (gen_struct_or_union_type_die): Add DW_AT_APPLE_closure to structs that define closures. * dwarf2.h (DW_AT_APPLE_closure): New Dwarf attribute. * c-typeck.c (invoke_impl_ptr_type): Move declaration from here to c-common.c (build_closure_internal_types): Set TYPE_CLOSURE_IMPL_STRUCT flag for closure structs. * c-common.c (invoke_impl_ptr_type): Move declaration to here from c-typeck.c. 2008-04-23 Fariborz Jahanian Radar 5882266 * c-typeck.c (types_are_closure_compatible): Check for underlying pointer types as well. 2008-08-11 Josh Conner Radar 6134442 * config/arm/t-darwin: Enable multi-libs for v5. 2008-08-06 Jim Grosbach Radar 6093696 * config/arm/t-darwin (t-darwin): Enable multi-libs for v7 2008-08-06 Jim Grosbach Radar 6129445 * config/arm/arm.md (mulsidi3, umulsidi3, smulsi3_highpart, umulsi3_highpart): Remove conditionalization on non-v6 (mulsidi3_v6, umulsidi3_v6, smulsi3_highpart_v6, umulsi3_highpart_v6): Remove production. 2008-04-23 Fariborz Jahanian Radar 5882266 * tree.c (reconstruct_complex_type): Add case for closure pointer types. * c-decl.c (make_closure_pointer_declarator): Get the 'itarget' which has the attribute info. 2008-04-22 Fariborz Jahanian Radar 5878380 * c-typeck.c (convert_for_assignment): Check for a pointer type before checking for its pointee type. 2008-04-16 Fariborz Jahanian Radar 5868913 * c-cppbuiltin.c (c_cpp_builtins): Do not define __BLOCKS__ in c++/ObjC++ modes. 2008-04-15 Stuart Hastings Radar 5862465 * tree.h (PTR_OR_REF_CHECK, POINTER_TYPE_P): Add CLOSURE_POINTER_TYPE. * fold-const.c (fold_convert): Add CLOSURE_POINTER_TYPE. * testsuite/gcc.apple/closure-5862465.c: New. 2008-04-02 Fariborz Jahanian Radar 5811599 * c-typeck.c (types_are_closure_compatible): Replaced "Reseverd" field with "void *isa" in "struct invoke_impl". * c-parser.c (build_closure_struct_type): Declared "void *_NSConcreteStackBlock" if necessary and inisitlize 'isa' field with &_NSConcreteStackBlock. 2008-04-01 Fariborz Jahanian Radar 5834569 * c-parser.c (build_closure_struct_initlist): Variables used as initializers to block structure must be flagged as TREE_USED. 2008-04-01 Fariborz Jahanian Radar 5344182 * dwarf2out.c (add_prototyped_attribute): Check for objc as the language to generate DW_AT_prototyped dwarf attr. 008-03-31 Fariborz Jahanian Radar 5831855 * c-typeck.c (convert_for_assignment): Block and 'id' types are interchangeable. 2008-03-28 Fariborz Jahanian Radar 5809099 * convert.c (convert_to_pointer): Allow typecast of closure pointer to 'id'. (convert_to_closure_pointer): Allow typecast of 'id' of a closure pointer expression. 2008-03-24 Fariborz Jahanian Radar 5824092 * c-parser.c (c_parser_closure_literal_exp): Diagnose declaration of block literal at global scope. 2008-03-26 Caroline Tice Radar 5811952 * dwarf2out.c (dwarf2out_decl): Special treatment for Block helper function. 2008-03-25 Fariborz Jahanian Radar 5811887 (minor change) * c-opts.c (c_common_post_options): Remove conditional check of pedantic when setting flag_blocks. 2008-03-24 Fariborz Jahanian Radar 5811887 * c-cppbuiltin.c: flag_closures renamed to flag_blocks * c-parser.c: Ditto. * c.opt: flag_closures renamed to flag_blocks. flag_blocks defaulted to -1. * c-opts.c (c_common_post_options): All flavors of c99, blocks are off by default unless requested via -fblocks. 2008-03-24 Fariborz Jahanian Radar 5814025 * c-tree.h (make_closure_pointer_declarator): Takes additional argument. * c-decl.c (grokdeclarator): Get 'const'-ness of closure pointer. (make_closure_pointer_declarator): Takes additional argument for const/volatile. * c-parser.c (c_parser_declarator): Pass down attribute info. to make_closure_pointer_declarator. 2008-03-18 Fariborz Jahanian Radar 5803600 * c-decl.c (add_closure_global_byref_list, in_closure_global_byref_list): New defs. * c-common.h (add_closure_global_byref_list, in_closure_global_byref_list): New decls. * c-typeck.c (build_external_ref): global variables declared as 'byref' are enterred in their own list of such declarations per each closure. * c-parser.c (c_parser_postfix_expression): Remove previous fix. (c_parser_closure_byref_declaration): Check for global 'byref' by calling in_closure_global_byref_list. 2008-03-18 Fariborz Jahanian Radar 5805175 * c-decl.c (build_closure_ref_decl): Set TREE_READONLY flag on readonly declaration. 2008-03-17 Fariborz Jahanian Radar 5803600 * c-typeck.c (build_external_ref): Access global 'byref' variables directly. * c-parser.c (c_parser_postfix_expression): We are accessing global 'byref' variables directly. Do not indirect derefence them. 2008-03-13 Fariborz Jahanian Radar 5795493 * c-typeck.c: Renamed typesAreClosureCompatible to types_are_closure_compatible. 2008-03-12 Fariborz Jahanian Radar 5795493 - type matching of closure types * c-typeck.c (comptypes_internal): Added case for CLOSURE_POINTER_TYPE. 2008-03-12 Fariborz Jahanian Radar 5796058 - ivar in blocks * c-decl (build_closure_byref_decl): Takes an additional argument for the initializer expression. (build_closure_ref_decl): Ditto. * c-typeck.c (build_external_ref): Call to build_closure_byref_decl, build_closure_ref_decl get extra argument. * c-common.h (build_closure_ref_decl, build_closure_byref_decl): Take additional argument. 2008-03-11 Fariborz Jahanian Radar 5732232 (Related to change of command option/macro) * c-cppbuiltin.c: __CLOSURES__ macro rename __BLOCKS__ * c.opt: -fclosures change to -fblocks. 2008-03-10 Fariborz Jahanian Radar 5782740 - part 2 (bug fix). * c-parser.c (synth_copy_helper_closure, synth_destroy_helper_closure): set DECL_ARG_TYPE field of input arguments for the two synthesized helper functions. 2008-03-06 Fariborz Jahanian Radar 5782740 * stub-objc.c (retain_closure_component, release_closure_component, copy_in_object, closure_requires_copying): New stubs. * c-decl.c (build_helper_func_decl): Setting of CLOSURE_HELPER_FUNC move at the call site. (start_closure_helper_function): Changed first argument, added 2nd argument to conditionally generate the result_decl node. * c-common.h: Added two new fields to struct closure_sema_info More extern function decls. * c-parser.c (build_closure_struct_type): Conditionally add two new fields to synthesize "struct closure" type. (build_closure_struct_initlist): Conditionally add helper copy/destroy function pointers to closure literals. Set the 'flags' field properly. (synth_copy_helper_closure_func): New routine to synthesize a closure copy helper function. (synth_destroy_helper_closure_func): New routine to synthesize a closure destroy helper function. (c_parser_closure_literal_exp): If needed, build closure copy/destroy helper function declarations and ask for their synthesis. 2008-03-01 Fariborz Jahanian Radar 5732232 - Fix a closure pointer type bug. * tree.c (build_closure_pointer_type): Do no add CLOSURE_POINTER_TYPE to POINTER_TYPE's list. 2008-02-28 Fariborz Jahanian Radar 5732232 - Fix nested closure bugs. * tree.h: Defined a new flag and CLOSURE_DECL_COPIED * c-decl.c (build_closure_ref_decl): Set CLOSURE_DECL_COPIED for copied variables. (lookup_name_in_closure): Modified for nested closures. * c-typeck.c (build_external_ref): Call to lookup_name_in_closure returns user declaration of the variable if not in current closure. * c-common.h: lookup_name_in_closure takes an added argument. 2008-02-27 Fariborz Jahanian Radar 5732232 * c-parser.c: Use clean_and_exit function call instead of EXIT_CLEAN macro. 2008-02-27 Fariborz Jahanian Radar 5732232 - code gen part 2. * tree.h: No need for closure_decl_ref, use a new flag closure_helper_func instead. (CLOSURE_HELPER_FUNC): New macro. * c-decl.c (build_closure_byref_decl): Fix a type bug. Enter variable in function's body scope. (build_closure_ref_decl): Find function's body scope and enter copied in variable in this scope. (parent_is_closure, bind_closure_args, inside_closure): Removed. (build_helper_func_decl): New routine to build a FUNCTION_DECL for helper function. (start_closure_helper_function): A stripped down version of start_function used for helper functions only. (closure_build_prologue, declare_closure_prologue_local_vars): Builds prologue trees for the helper function. * function.c (allocate_struct_function): Don't try to figure out aggregate types for closures as it does not work. * function.h (cur_closure): Need to declare it. * c-typeck.c (build_closure_internal_types): Use the main variant for type compares. (c_finish_return): Removed dead code and added code for building the return expressions for closure return statements. * tree.def: Removed not needded tree codes. * c-gimplify.c (c_gimplify_expr): Build closure's return expression tree. Remove dead code. * c-common.h: Added/removed some declarations. * c-parser.c (c_parser_postfix_expression): Dereference use of byref variables in closures. (build_closure_struct_type): Fixed a type. (build_closure_struct_initlist): Must use the new list for initialization. (build_closure_literal_tmp): Moved some code around. (c_parser_closure_literal_expr): Extensive changes to use the nested function infrastructure for helper functions. 2008-02-26 Bill Wendling * c-typeck.c (build_closure_internal_types) Fix warning. 2008-02-20 Fariborz Jahanian Radar 5732232 - code gen part 1. * tree.c: Changed apple local markers. * c-decl.c (build_closure_byref_decl): Add byref decls to the list of such decls for the closure. (build_closure_ref_decl): New (closure_end): Now returns the closure info. (in_imm_closure_block): Fixed a bug. (ascend_to_file_scope, restore_current_scope): Two new routines to enter/exit file scope. * c-typeck.c (build_external_ref): Allow importation of variables only to the closure literal block. (build_function_call): Call to build closure calls trees. (build_closure_internal_types): New. (build_closure_call): New. (c_finish_return): Diagnose returning closure literals on the stack. * c-common.h: Added new macros, added couple of fields to struct closure_sema_info. * c-parser.c (build_closure_struct_type): New (build_closure_struct_initlist): New (build_closure_literal_tmp): New. (c_parser_closure_literal_expr): Diagnose missing argument list in closure literal expression. Generate necessary code for closure literal block use. * dwarf2out.c (root_type, is_base_type, gen_type_die): Treat closure pointer types as function pointer types. 2008-02-15 Fariborz Jahanian Radar 5732232 - minor twik * tree.h: changed a comment. * c-parser.c (c_parser_closure_byref_declarations): Better way to report an error. 2008-02-14 Fariborz Jahanian Radar 5732232 - part9 * tree.h (CLOSURE_DECL_BYREF): New field for var_decl/parm/decl * c-decl.c (build_closure_byref_decl, in_imm_closure_block): New * c-typeck.c (build_external_ref): Build a new declaration in current scope for a byref variable decl. * c-common.h (in_imm_closure_block, build_closure_byref_decl, building_closure_byref_decl): New decls. * c-parser.c (c_parser_compound_statement_nostart): Parse byref variable decls enclosed by '|'. (c_parser_closure_byref_declarations): New 2008-02-13 Fariborz Jahanian Radar 5732232 - part 8 *c-parser.c (c_parser_statement_after_labels): Diagnose use of gotos in closures. (c_parser_closure_literal_exp): Diagnose break/continue statement used in a closure literal block which is nested in a while/for/switch statement. 2008-02-13 Fariborz Jahanian Radar 5732232 - part 7 * c-typeck.c (build_conditional_expr): Add closure pointer expression use in conditionals. 2008-02-12 Fariborz Jahanian Radar 5732232 - part 6 (closure literal expressions). * tree.def (CLOSURE_EXPR_EXPR): New closure tree node. * c-gimplify.c (c_gimplify_expr): Hack to ignore gimplification of CLOSURE_EXPR_EXPR expressions. * c-parser.c (c_parser_postfix_expression): Remove restriction on postfix expression after a caret. (c_parser_block_expr): Now parse and build CLOSURE_EXPR_EXPR for closure expressions. 2008-02-12 Fariborz Jahanian Radar 5732232 - part 5 * c-typeck.c (c_finish_return): Warn when returning a closure block literal expression. 2008-02-12 Fariborz Jahanian Radar 5732232 - part4 (argument declaration in closure literals). * c-decl.c (bind_closure_args): New (closure_end): pop the scope. (inside_closure): Use c-style comments. * c-typeck.c : (convert_arguments): Fix a diagnistic. * c-gimplify.c (c_gimplify_expr): Fix type of the hack. * c-common.h (closure_sema_info): Fix type of params field. (bind_closure_args): New decl. * c-parser.c (c_parser_postfix_expression): Check for '(' as a new lookahead after '^'. (c_parser_block_expr): Modified to handle argument decls. before closure literal block. 2008-02-11 Fariborz Jahanian Radar 5732232 - part3 (closure return statement). * c-decl.c (cur_closure) Global decl. to keep track of closure block literals. (closure_start): Allocate and initialize a new cur_closure object. (closure_end): Free up cur_closure object and set it to its predecessor, if any. (inside_closure): Use cur_closure to know if inside a closure. (lookup_name_in_closure): Use cur_closure instead. * c-typeck.c (c_finish_return): Short circuit to closure-specific routine if 'return' is inside a closure. remove check for inside closure in two places (no longer needed). (c_finish_closure_return_stmt): New * c-common.h (closure_sema_info): New overall data structure to keep track of various closure context information. * c-parser.c (c_parser_block_expr): Initialize and then use closure's return type in building function type. 2008-02-09 Fariborz Jahanian Radar 5732232 - part 2 (basic closure literals syntax). * tree.h (closure_decl_ref): New flag for variables used in closures and declared outside its scope. (CLOSURE_DECL_REF) : Macro for above flag. * c-decl.c (closure_scope): New flag for the closure's scope. (closure_start, closure_end, inside_closure, lookup_name_in_closure, parent_is_closure): New * c-typeck.c (build_external_ref): Record variables used in closure but declared outside. * (c_finish_return) don't issue return warning if inside closure. (c_finish_bc_stmt): issue diagnostic for continuation inside closures (currently commented out). * tree.def (CLOSURE_BLOCK_EXPR): New expression node for closure literals. * c-gimplify.c (c_gimplify_expr): For now ignore gimplifying CLOSURE_BLOCK_EXPR tree. * c-common.h (closure_start, closure_end, inside_closure, lookup_name_in_closure, parent_is_closure): New decls. * c-parser.c (c_parser_postfix_expression): Parse and build a closure literal block. (c_parser_block_expr) : New. 2008-02-08 Fariborz Jahanian closures - part2 * c-cppbuiltin.c (c_cpp_builtins) __CLOSURES__ to 1 if -fclosures is passed. 2008-02-08 Fariborz Jahanian closures - part1 * tree.c (build_closure_pointer_type): New * tree.h (build_closure_pointer_type): New decl. * c-tree.h (cdk_closure_pointer): New enumerator for enum c_declarator_kind. * (make_closure_pointer_declarator): New decl. * c-pretty-print.c (pp_c_caret): New * c-pretty-print (pp_c_caret): New decl. (pp_c_pointer): recognize CLOSURE_POINTER_TYPE and translate it into '^'. (pp_c_specifier_qualifier_list): Handle CLOSURE_POINTER_TYPE type. (pp_c_abstract_declarator): Ditto. (pp_c_direct_abstract_declarator): Ditto. (pp_c_direct_declarator): Ditto. * stor-layout.c (layout_type): Set mode for CLOSURE_POINTER_TYPE. * c-typeck.c (typesAreClosureCompatible): New (build_function_call): Allow call of a closure pointer. (convert_arguments): Make diagnostic specific to a bad closure pointer call. (build_unary_op): Allow '!' unary operation on a closure pointer. (build_c_cast): Allow cast of a closure pointer to void *. (functionTypesAreClosureCompatible): New (typesAreClosureCompatible): New (convert_for_assignment): Handle assignment of two closue pointers, int to a closure pointer, etc. (build_binary_op): Handle comparing two closure pointers, closure pointer and NULL. * c.opt: New -fclosures option. * calls.c (expand_call): Call can be to a closure pointer. * tree.def: Define new CLOSURE_POINTER_TYPE type. * c-convert.c (convert): Handle convertion to a CLOSURE_POINTER_TYPE. * c-parser.c (c_parser_declarator): Supprt use of '^' in a declarator under -fclosures flag only. * convert.c (convert_to_pointer): Support convertion of a closure pointer to "void *". (convert_to_closure_pointer): New * convert.h (convert_to_closure_pointer): New declaration. Radar 6093388 * config/arm/arm.c (FL_FOR_ARCH7A): Add FL_NEON. (arm_arch7a): New global flag. (arm_override_options): Set arm_arch7a flag. * config/arm/darwin.h (FPUTYPE_DEFAULT): Default to Neon for v7. (TARGET_DEFAULT_FLOAT_ABI): Default to ARM_FLOAT_ABI_SOFTFP for v7, like we do for v6. 2008-07-23 Josh Conner Radar 6090740 * config/arm/arm.c (arm_output_epilogue): Use SP not IP as scratch when restoring VFP registers. 2008-07-22 Josh Conner Radar 6077274 * config/darwin.c (machopic_symbol_defined_p): Return false for a weak function declaration. 2008-07-22 Josh Conner Radar 6083621 * config/arm/arm.c (arm_adjust_insn_length): Add 2 bytes for alignment to 32-bit thumb switch tables. 2008-07-22 Josh Conner Radar 6067743 * config/arm/arm.c (arm_reorg): Move label pad logic into... (get_label_pad): ...here... (create_fix_barrier): ...and call it here, too. 2008-07-15 Josh Conner Radar 6062215 * config/arm/arm.c (arm_encode_call_attribute): Check visibility too. (arm_darwin_encode_section_info): Likewise. 2008-07-01 Jim Grosbach Radar 6040923 * config/arm/arm.md (*mulsi3_compare0_v6, *mulsi_compare0_scratch_v6): Remove "&& optimize_size" conditional. 2008-06-25 Josh Conner Radar 6008578 * config/arm/arm.c (arm_reorg): Consider alignment of labels. (arm_function_boundary): New function... * config/arm/arm.h (FUNCTION_BOUNDARY): ...use it. 2008-06-18 Josh Conner Radar 6013984 * config/arm/darwin.h (CC1_SPEC): Ignore -pg. 2008-06-06 Josh Conner Radar 5920116 * config/arm/arm.c (arm_output_mi_thunk): Add longcall handling. When indirecting, use a non-lazy ptr for weak calls. 2008-06-05 Josh Conner Radar 5914860 * t-darwin (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add armv6. (TARGET_LIBGCC2_CFLAGS): Remove armv6. (DARWIN_EXTRA_CRT_BUILD_FLAGS): Remove. 2008-05-27 Josh Conner Radar 5960553 * c.opt (iwithsysroot): Add -iwithsysroot. * c-opts.c (c_common_missing_argument): Likewise. (c_common_handle_option): Likewise. * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Likewise. * doc/invoke.texi: Describe -iwithsysroot option. 2008-05-15 Josh Conner Radar 5938756 * dwarf2out.c (modified_type_die): Verify that TREE_TYPE (TYPE_NAME (type)) is non-null before using it. 2008-05-14 Stuart Hastings Radar 5774356 * config/rs6000/rs6000.c (debug_sp_offset, debug_vrsave_offset): New. (rs6000_expand_builtin): Return 0 when nothing matches. (rs6000_expand_prologue): Revise sp_offset computation, set debug_sp_offset and debug_vrsave_offset. (rs6000_expand_epilogue): Test debug_sp_offset and debug_vrsave_offset. * testsuite/gcc.apple/5774356.c: New. 2008-05-12 Stuart Hastings * tree-ssa.c (tree_ssa_useless_type_conversion_1): Moved APPLE LOCAL. 2008-05-09 Stuart Hastings Radar 5799099 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Moved cast-into-void* check after checks for losing volatile or const. * testsuite/gcc.apple/5799099.c: New. 2008-05-09 Caroline Tice Radar 5914395 * config/darwin-c.c (darwin_cpp_builtins): Define __OBJC_GC__ for -fobjc-gc-only option as well. 2008-05-06 Jim Grosbach Radar 5880719 Merge from 4.0 * combine.c: Add parameter to try_combine declaration. (COMBINE_TRY_RETAIN): Define, if not already. (try_combine): Add new parameter. If we had to add copies of the original input(s) because their value(s) are used later, and the resulting pattern does not match, try matching the replacement without those copie(s) and leaving the original(s) alone. (combine_instructions): Adjust calls to try_combine. (combine_validate_cost): Allow i2 to be 0. In retain_inputs case, accept replacement when it is equal to original, not necessarily a strict improvement. * config/arm/arm.c (arm_size_rtx_costs): Adjust cost of DImode MULT. * config/arm/arm.md (muldi3, *soft_muldi3): New. * config/arm/cirrus.md (muldi3): Rename to cirrus_muldi3. 2008-05-02 Josh Conner Radar 5905142 * doc/invoke.texi: Add documentation for MACOSX_DEPLOYMENT_TARGET and IPHONEOS_DEPLOYMENT_TARGET. 2008-05-02 Jim Grosbach Radar 5903944 * config/arm/arm.h (ASM_OUTPUT_ADDR_DIFF_VEC): Add missing parentheses. 2008-05-01 Caroline Tice Radar 5741731 * dwarf2out.c (c-common.h): New include statement. (modified_type_die): Temporarily remove volatile attribute, if it was added because of objective '@try' block. 2008-04-30 Josh Conner Radar 5702478 * config/rs6000/rs6000.c (rs6000_override_options): Always set TARGET_PIM_ALTIVEC if rs6000_altivec_pim is given. 2008-04-29 Josh Conner Radar 5866634 * cse.c (insert): Balance parentheses across #ifdefs. 2008-04-29 Josh Conner Radar 5866634 * cse.c (insert): Lower cost of SP+const addresses. 2008-04-28 Josh Conner Radar 5883867 * config.gcc (arm*-*-darwin*): Clear extra_headers. 2008-04-16 Jim Grosbach Radar 5837498 * config/arm/arm.h (ASM_OUTPUT_ADDR_DIFF_VEC): Use assembler expression to calculate (L1-L2)/2 rather than relying on insn length attributes. 2008-04-22 Josh Conner Radar 5840600 * common.opt (flocal-alloc): New command-line option and corresponding variable, flag_local_alloc... * local-alloc.c (block_alloc): ...use it. * config/arm/arm.c (optimization_options): ...disable it by default. * doc/invoke.texi: Add -flocal-alloc documentation. 2008-04-16 Jim Grosbach Radar 5831562 Merge from 4.0 * global.c (TIE_PSEUDOS): New macro. (empty_reg_set): New variable. (find_reg): Adjust heuristics of propagating preferences and pseudo-pseudo ties after a reg is selected. (set_preference): Allow for vector/nonvector SUBREGS. Use TIE_PSEUDOS. * config/arm/arm.h (TIE_PSEUDOS): Define. e008-04-15 Josh Conner Radar 5866711 * config/darwin.h (DARWIN_DYLIB1_SPEC): When -miphoneos-version-min is seen, use dylib1.o. 2008-04-15 Josh Conner Radar 5866354 * config.host (*-darwin*): Add DARWIN_PCH_ADDR_SPACE_SIZE to host_xm_defines. * config/host-darwin.c (pch_address_space): Use DARWIN_PCH_ADDR_SPACE_SIZE to determine size. * config/arm/x-darwin: New file. * config/arm/host-arm-darwin.c: New file. 2008-04-15 Jim Grosbach Radar 5831562 Merge from 4.0 * expr.c (expand_expr_real_1) (CONVERT_EXPR): Improve codegen for (int)(long long >> 32). 2008-04-11 Jim Grosbach Radar 5831562 Merge from 4.0 * config/arm/arm.c (const64_ok_for_arm_add, const64_ok_for_arm_immediate): New. * config/arm/arm-protos.h: Prototype them. * config/arm/predicates.md (arm_immediate64_operand, arm_rhs64_operand, arm_add_immediate64_operand, arm_add64_operand): New. * config/arm/constraints.md: Add 'Dd'. * config/arm/arm.md (adddi3, *arm_adddi3, unnamed define_split for logical binary operators, anddi3, iordi3, xordi3): Accept 64-bit constants that match 'Dd' constraint. (adddi3): Allow negative constants whose negation is in-range for SUB; generate SUB for these. (subdi3): Allow constants either in-range for SUB, or whose negation is in-range for ADD. Generate ADD for the latter. (*arm_adddi3, *arm_subdi3): Allow constants. 2008-04-11 Josh Conner Radar 5840278 - part 2 * (analyze_leg): Cast TREE_INT_CST_HIGH to unsigned. 2008-04-10 Josh Conner Radar 5854251 * config/arm/libgcc-iphoneos.ver: Remove __switch* functions. 2008-04-09 Jim Grosbach Radar 5831562 Merge from 4.0 * local-alloc.c (find_free_reg): Use DIMODE_REG_ALLOC_ORDER, if defined. * regclass.c (dimode_reg_alloc_order, dimode_inv_reg_alloc_order): New variables. (init_reg_sets): Use DIMODE_REG_ALLOC_ORDER, if defined. * global.c (find_reg): Use DIMODE_REG_ALLOC_ORDER, if defined. * hard-reg-set.h (dimode_reg_alloc_order, dimode_inv_reg_alloc_order): New declarations. * config/arm/arm.h (IMODE_REG_ALLOC_ORDER): New macro. (COMBINE_TRY_RETAIN): New macro. * recog.c (peep2_find_free_register): Use DIMODE_REG_ALLOC_ORDER, if defined. * reload1.c (find_reg): Likewise. 2008-04-09 Josh Conner Radar 5851089 * config/arm/arm.md (insv): Enable for Thumb. 2008-04-09 Josh Conner Radar 5847848 * ifcvt.c (cond_exec_process_insns): Don't stop conditionalization at a compare for TARGET_ARM. (cond_exec_branch_targets_equiv): New function. (cond_exec_process_if_block): Allow for null then_bb, indicating merging of multiple && or || blocks only. (process_if_block): Ditto. (find_if_block): Ditto. * config/arm/arm.c (arm_ifcvt_modify_multiple_tests): New function. * config/arm/arm.h (IFCVT_MODIFY_MULTIPLE_TESTS): New define. * config/arm/arm-protos.h (arm_ifcvt_modify_multiple_tests): New proto. * config/arm/arm.md (*arm_cmpsi_insn): Mark predicable. 2008-04-03 Josh Conner Radar 5840278 * expr.c (look_for_bytemanip): New function... (expand_expr_real_1): ...use it. (struct bytemanip): New type. (bswap32_shift_first): New variable. (bswap32_and_first): New variable. (bswap64_shift_first): New variable. (bswap64_and_first): New variable. (uxtb16_shift_first): New variable. (uxtb16_and_first): New variable. (find_and_record_values): New function. (analyze_leg): New function. * config/arm/arm.md (bswapsi2): New expand. (arm_bswapsi2): New insn. (thumb_bswapsi2): New insn. (bswapdir2): New expand. (arm_bswapdi2): New insn. (thumb_bswapdi2): New insn. (uxtb16): New insn. 2008-04-03 Josh Conner Radar 5835816 * config/arm/arm.md (arm_andsi3_insn): Remove non-immediate operand permutation. Change from a define_insn_and_split to a define_insn. (arm_iorsi3): Likewise. 2008-04-02 Jim Grosbach Radar 5831528 * ifcvt.c (cond_exec_process_insns): Don't conditionally execute calls with a NORETURN note attached. * config/arm/arm.md (call_reg_armv6, call_reg_arm, call_mem, call_value_reg_armv5, call_value_reg_arm, call_value_mem): Make predicable. (call_symbol_predicable): New. (call_value_symbol_predicable): New. (call_symbol): Only match for TARGET_INTERWORK. (call_value_symbol): Likewise. 2008-04-01 Josh Conner Radar 5829269 * config/arm/arm.md (define_split 64-bit constants): Always split 64-bit constants when generating Thumb code. 2008-04-01 Fariborz Jahanian Radar 5344182 * dwarf2out.c (add_prototyped_attribute): Check for objc as the language to generate DW_AT_prototyped dwarf attr. 2008-04-01 Josh Conner Radar 5829297 * config/arm/arm.c (thumb_size_rtx_costs): New function... (arm_size_rtx_costs): ...Use it. 2008-03-31 Jim Grosbach Radar 5819088 * cfglayout.c (duplicate_insn_chain): Add missing case to copy NOTE_INSN_ALLOCA notes. 2008-03-31 Stuart Hastings Radar 5814283 * gcc/testsuite/gcc.apple/5814283.c: Tweaked to test on x86 only. 2008-03-28 Jim Grosbach Radar 5823776 * config/darwin.h: Use crt1.o if iphoneos-version-min is specified 2008-03-27 Stuart Hastings Radar 5814283 * config/i386/emmintrin.h (_mm_shuffle_pd, _mm_shufflehi_epi16, _mm_shufflelo_epi16, _mm_shuffle_epi32): Insert missing parens. * config/i386/tmmintrin.h (_mm_alignr_epi8): Insert missing parens. * testsuite/gcc.apple/5814283.c: New. 2008-03-24 Josh Conner Radar 5777572 - take 2 (cont.) * config/darwin.h (LINK_SPEC): Change -iphone_version_min to -iphoneos_version_min. * config/arm/darwin.h (DARWIN_LD_MINVERSION_SPEC): Likewise. 2008-03-24 Josh Conner Radar 5819018 * config/darwin-driver.c (darwin_default_min_version): Don't warn if both MACOSX_DEPLOYMENT_TARGET and IPHONEOS_DEPLOYMENT_TARGET are set. 2008-03-24 Josh Conner Radar 4382996 * config/arm/predicates.md (binary_cc_noclobber_operator): New special_predicate. * config/arm/arm.md (arm_binary_ne_0) New define_insn_and_split. (arm_add_ne_0): Likewise. (arm_mul_ne_0): Likewise. 2008-03-24 Stuart Hastings Radar 5612787 * testsuite/lib/target-supports.exp (check_no_compiler_messages, check_no_messages_and_pattern): Remove redundant definitions. 2008-03-24 Josh Conner Radar 4826373 * config/arm/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Remove undef. 2008-03-20 Fariborz Jahanian Radar 5802025 * c-common.h (objc_build_property_getter_func_call): New decl. * stub-objc.c (objc_build_property_getter_func_call): New stub. 2008-03-19 Bill Wendling Radar 5571540 * config/i386/i386.c (output_pic_addr_const): darwin_stubs flag is only available on Mach-O systems. 2008-03-17 Josh Conner Radar 5619587 (Reverts 5342595) * config/i386/darwin.h (DARWIN_DSYMUTIL_SPEC): Remove definition. * config/rs6000/darwin.h (DARWIN_DSYMUTIL_SPEC): Likewise. * config/arm/darwin.h (DARWIN_DSYMUTIL_SPEC): Likewise. (PREFERRED_DEBUGGING_TYPE): Remove definition. * config/darwin.h (LINK_COMMAND_SPEC): Replace darwin_dsymutil spec invocation with string. (darwin_dsymutil): Remove spec definition. 2008-03-15 Josh Conner Radar 5777572 - take 2 * config.gcc: Replace all instances of 'iphone' with 'iphoneos'. * config/darwin-c.c: Likewise. * config/darwin.opt: Likewise. * config/i386/darwin.h: Likewise. * config/rs6000/darwin.h: Likewise. * config/rs6000/rs6000.c: Likewise. * config/darwin.h: Likewise. * config/arm/darwin.h: Likewise. * config/darwin-driver.c: Likewise. * config/arm/t-slibgcc-iphone: Rename to... * config/arm/t-slibgcc-iphoneos: ...new file. * config/arm/libgcc-iphone.ver: Rename to... * config/arm/libgcc-iphoneos.ver: ...new file. 2008-03-14 Josh Conner Radar 5641084 * config/arm/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Err on -pg. 2008-03-13 Jim Grosbach Radar 5798689 * testsuite/gcc.dg/sibcall-3.c: Skip test for thumb * testsuite/gcc.dg/sibcall-4.c: Likewise 2008-03-13 Josh Conner Undo Radar 5730079 * config/i386/darwin.h (DARWIN_ALLOWED_VERSION_TYPES): Remove definition. * config/rs6000/darwin.h (CC1_SPEC): Don't err on -miphone-version-min. (DARWIN_ALLOWED_VERSION_TYPES): Remove definition. * config/darwin.h (DARWIN_VERSION_MACOSX): Remove definition. (DARWIN_VERSION_IPHONE): Remove definition. (enum darwin_version_type): New enum. (darwin_default_min_version): Remove allowable_vers_types parameter. * config/arm/darwin.h (CC1_SPEC): Don't err on -mmacosx-version-min switch. (DARWIN_ALLOWED_VERSION_TYPES): Remove definition. * config/darwin-driver.c (darwin_default_min_version): Remove allowable_vers_types parameter and logic to handle it. Rename default_vers_type paramter to vers_type. 2008-03-13 Josh Conner Radar 5777572 * config.gcc: Replace all instances of 'aspen' with 'iphone'. * config/darwin-c.c: Likewise. * config/darwin.opt: Likewise. * config/i386/darwin.h: Likewise. * config/rs6000/darwin.h: Likewise. * config/rs6000/rs6000.c: Likewise. * config/darwin.h: Likewise. * config/arm/darwin.h: Likewise. Also, set default minversion to 2.0. * config/darwin-driver.c: Likewise. * config/arm/t-slibgcc-aspen: Rename to... * config/arm/t-slibgcc-iphone: ...new file. * config/arm/libgcc-aspen.ver: Rename to... * config/arm/libgcc-iphone.ver: ...new file. 2008-03-12 Stuart Hastings Radar 5612787 * ChangeLog.apple: Fixed typo in two entries. 2008-03-10 Stuart Hastings * config/i386/i386.c (ix86_builtins): Need APPLE LOCAL markers around deletion. 2008-03-07 Jim Grosbach * global.c (set_preference): The apple local change to not punt on subregs breaks under ARM. Go back to mainline behaviour for that case. 2008-03-07 Jim Grosbach * config/arm/arm.h (CASE_VECTOR_SHORTEN_MODE): Do not shorten VECTOR_DIFF tables in Thumb2 mode. The length calculations for many variable length instructions are only approximate, but the shorter tables require them to be exact and are thus often incorrect. 2008-03-07 Jim Grosbach * config/arm/arm.md: Split out a separate thumb2_jump pattern to enable accurate length attribute calculation. 2008-03-07 Jim Grosbach * config/arm/arm.h: Functionalize ASM_OUTPUT_ADDR_DIFF_VEC * config/arm/arm-protos.h: Ditto * config/arm/arm.c (arm_asm_output_addr_diff_vec): New function. Adjust offset calculations for Thumb2 as the table layout does not need the Apple specific compact switch table bits. 2008-03-07 Josh Conner Radar 5782111 * config/darwin.h (ASM_OUTPUT_LABELREF): Add label prefix to quoted names, too. 2008-03-07 Stuart Hastings * c-common.c: Restore blank line to satisfy checklocals. * config/i386/i386.c (ix86_builtins): APPLE LOCAL marker for deletion. * config/darwin.c (output_objc_section_asm_op): Insert blank to force checklocal behavior. 2008-03-07 Stuart Hastings Radar 5612787 * config/i386/ammintrin.h: Added APPLE LOCAL file marker. * config/i386/nmmintrin.h: Added APPLE LOCAL file marker. * config/i386/smmintrin.h: Added APPLE LOCAL file marker. * c-typeck.c (build_binary_op): Added APPLE LOCAL marker. 2008-03-06 Stuart Hastings Radar 5612787 * expr.h (expand_normal): New. * config.gcc(extra_headers): For x86, added ammintrin.h, smmintrin.h, and nmmintrin.h. (OPTION_MASK_ISA_SSE4_1, OPTION_MASK_ISA_SSE4_2, OPTION_MASK_ISA_SSE4A): New. * doc/invoke.texi (-flax-vector-conversions): New flag. * c.opt (-flax-vector-conversions): New flag. * c-common.h (vector_types_convertible_p): Update extern decl. (-flax-vector-conversions): New. * c-common.c (-flax-vector-conversions): New flag, defaulting TRUE. (vector_types_convertible_p): Backport 4.3 code with new emit_lax_note parameter. * c-opts.c (-flax-vector-conversions): New flag. * c-typeck.c (convert_for_assignment, digest_init): New parm for vector_types_convertible_p. * cp/call.c (standard_conversion): New parm for vector_types_convertible_p. * cp/typeck.c (convert_for_assignment, ptr_reasonably_similar): New parm for vector_types_convertible_p. * cp/typeck2.c (digest_init): New parm for vector_types_convertible_p. * config/i386/i386.h (MASK_SSEREGPARM, MASK_SSSE3, MASK_NO_RED_ZONE): Tweak bit masks. (OPTION_MASK_ISA_SSE4_1, OPTION_MASK_ISA_SSE4_2, OPTION_MASK_ISA_SSE4A, TARGET_SSE4_1, TARGET_SSE4_2, TARGET_SSE4A): New. (TARGET_SWITCHES): New flags "sse4.1", "sse4.2", "sse4", "no-sse4", "sse4a". (TARGET_CPU_CPP_BUILTINS): New defines "__SSE4_1__", "__SSE4_2__", "__SSE4A__". (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): New class: SSE_FIRST_REG. (REG_CLASS_FROM_CONSTRAINT, CONSTRAINT_LEN): New; support "Y0". * config/i386/i386.md (UNSPEC_EXTRQI, UNSPEC_EXTRQ, UNSPEC_INSERTQI, UNSPEC_INSERTQ, UNSPEC_BLENDV, UNSPEC_INSERTPS, UNSPEC_DP, UNSPEC_MOVNTDQA, UNSPEC_MPSADBW, UNSPEC_PHMINPOSUW, UNSPEC_PTEST, UNSPEC_ROUND, UNSPEC_CRC32, UNSPEC_PCMPESTR, UNSPEC_PCMPISTR): New. (sseinsq, sseinsqi, prefix_extra, negtf2, abstf2, *absnegtf2_sse, CRC32MODE, crc32modesuffix, crcmodeconstraint, sse4_2_crc32, sse4_2_crc32di): New. (length_immediate) Add support for SSE4A insertq. * config/i386/nmmintrin.h: New. * config/i386/smmintrin.h: New. * config/i386/ammintrin.h: New. * config/i386/predicates.md (reg_not_xmm0_operand, nonimm_not_xmm0_operand, const_pow2_1_to_2_operand, const_pow2_1_to_32768_operand): New. * config/i386/smmintrin.h: New file. * config/i386/i386-modes.def (CCA, CCC, CCO, CCS, V2QI): New modes. * config/i386/sse.md (SSEMODE14, sse4_2_crc32, sse4_2_crc32di, *vec_setv4sf_sse4_1, sse4_1_insertps, sse4_1_mulv2siv2di3, *sse4_1_mulv4si3, *sse4_1_smax3, *sse4_1_umax3, *sse4_1_smin3, *sse4_1_umin3, sse4_1_eqv2di3, sse4_2_gtv2di3, *sse4_1_pinsrb, *sse4_1_pinsrd, *sse4_1_pinsrq, *sse4_1_pextrb, *sse4_1_pextrb_memory, sse2_pextrw, *sse4_1_pextrw_memory, *sse4_1_pextrd, *sse4_1_pextrq, sse4a_vmmovntv2df, sse4a_movntdf, sse4a_vmmovntv4sf, sse4a_movntsf, sse4a_extrqi, sse4a_extrq, sse4a_insertqi, sse4a_insertq, sse4_1_blendpd, sse4_1_blendps, sse4_1_blendvpd, sse4_1_blendvps, sse4_1_dppd, sse4_1_dpps, sse4_1_movntdqa, sse4_1_mpsadbw, sse4_1_packusdw, sse4_1_pblendvb, sse4_1_pblendw, sse4_1_phminposuw, sse4_1_extendv8qiv8hi2, *sse4_1_extendv8qiv8hi2, sse4_1_extendv4qiv4si2, *sse4_1_extendv4qiv4si2, sse4_1_extendv2qiv2di2, *sse4_1_extendv2qiv2di2, sse4_1_extendv4hiv4si2, *sse4_1_extendv4hiv4si2, sse4_1_extendv2hiv2di2, *sse4_1_extendv2hiv2di2, sse4_1_extendv2siv2di2, *sse4_1_extendv2siv2di2, sse4_1_zero_extendv8qiv8hi2, *sse4_1_zero_extendv8qiv8hi2, sse4_1_zero_extendv4qiv4si2, *sse4_1_zero_extendv4qiv4si2, sse4_1_zero_extendv2qiv2di2, *sse4_1_zero_extendv2qiv2di2, sse4_1_zero_extendv4hiv4si2, *sse4_1_zero_extendv4hiv4si2, sse4_1_zero_extendv2hiv2di2, *sse4_1_zero_extendv2hiv2di2, sse4_1_zero_extendv2siv2di2, *sse4_1_zero_extendv2siv2di2, sse4_1_ptest, sse4_1_roundpd, sse4_1_roundps, sse4_1_roundsd, sse4_1_roundss, sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm, sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri, sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): New. (sse2_smulv8hi3_highpart): Split and renamed to smulv8hi3_highpart and *smulv8hi3_highpart. (sse2_umulv8hi3_highpart): Split and renamed to umulv8hi3_highpart and *umulv8hi3_highpart. (sse2_umulv2siv2di3): Tweaked to V4SImode, added prefix_data16. (umaxv4si3): Support pmaxud. (umin3): Support pminud. * config/i386/darwin.h (MASK_MACHO_DYNAMIC_NO_PIC, MASK_ALIGN_NATURAL, MASK_ALIGN_MAC68K): Tweak mask bits. * config/i386/i386-protos.h (ix86_expand_sse_unpack, ix86_expand_sse4_unpack): New. * config/i386/i386.c (x86_popcnt) New. (enum pta_flags): Added PTA_CX16, PTA_POPCNT, PTA_ABM, PTA_SSE4A, PTA_NO_SAHF, PTA_SSE4_1, PTA_SSE4_2. (override_options): Support OPTION_MASK_ISA_SSE4_1, OPTION_MASK_ISA_SSE4_2, OPTION_MASK_ISA_SSE4A, x86_popcnt. (ix86_expand_int_vcond): Backport 4.3 code. (ix86_expand_sse_unpack, ix86_expand_sse4_unpack): New. (IX86_BUILTIN_MOVNTSD, IX86_BUILTIN_MOVNTSS, IX86_BUILTIN_EXTRQI, IX86_BUILTIN_EXTRQ, IX86_BUILTIN_INSERTQI, IX86_BUILTIN_INSERTQ, IX86_BUILTIN_BLENDPD, IX86_BUILTIN_BLENDPS, IX86_BUILTIN_BLENDVPD, IX86_BUILTIN_BLENDVPS, IX86_BUILTIN_PBLENDVB128, IX86_BUILTIN_PBLENDW128, IX86_BUILTIN_DPPD, IX86_BUILTIN_DPPS, IX86_BUILTIN_INSERTPS128, IX86_BUILTIN_MOVNTDQA, IX86_BUILTIN_MPSADBW128, IX86_BUILTIN_PACKUSDW128, IX86_BUILTIN_PCMPEQQ, IX86_BUILTIN_PHMINPOSUW128, IX86_BUILTIN_PMAXSB128, IX86_BUILTIN_PMAXSD128, IX86_BUILTIN_PMAXUD128, IX86_BUILTIN_PMAXUW128, IX86_BUILTIN_PMINSB128, IX86_BUILTIN_PMINSD128, IX86_BUILTIN_PMINUD128, IX86_BUILTIN_PMINUW128, IX86_BUILTIN_PMOVSXBW128, IX86_BUILTIN_PMOVSXBD128, IX86_BUILTIN_PMOVSXBQ128, IX86_BUILTIN_PMOVSXWD128, IX86_BUILTIN_PMOVSXWQ128, IX86_BUILTIN_PMOVSXDQ128, IX86_BUILTIN_PMOVZXBW128, IX86_BUILTIN_PMOVZXBD128, IX86_BUILTIN_PMOVZXBQ128, IX86_BUILTIN_PMOVZXWD128, IX86_BUILTIN_PMOVZXWQ128, IX86_BUILTIN_PMOVZXDQ128, IX86_BUILTIN_PMULDQ128, IX86_BUILTIN_PMULLD128, IX86_BUILTIN_ROUNDPD, IX86_BUILTIN_ROUNDPS, IX86_BUILTIN_ROUNDSD, IX86_BUILTIN_ROUNDSS, IX86_BUILTIN_PTESTZ, IX86_BUILTIN_PTESTC, IX86_BUILTIN_PTESTNZC, IX86_BUILTIN_VEC_EXT_V16QI, IX86_BUILTIN_VEC_SET_V2DI, IX86_BUILTIN_VEC_SET_V4SF, IX86_BUILTIN_VEC_SET_V4SI, IX86_BUILTIN_VEC_SET_V16QI, IX86_BUILTIN_VEC_PACK_SFIX, IX86_BUILTIN_CRC32QI, IX86_BUILTIN_CRC32HI, IX86_BUILTIN_CRC32SI, IX86_BUILTIN_CRC32DI, IX86_BUILTIN_PCMPESTRI128, IX86_BUILTIN_PCMPESTRM128, IX86_BUILTIN_PCMPESTRA128, IX86_BUILTIN_PCMPESTRC128, IX86_BUILTIN_PCMPESTRO128, IX86_BUILTIN_PCMPESTRS128, IX86_BUILTIN_PCMPESTRZ128, IX86_BUILTIN_PCMPISTRI128, IX86_BUILTIN_PCMPISTRM128, IX86_BUILTIN_PCMPISTRA128, IX86_BUILTIN_PCMPISTRC128, IX86_BUILTIN_PCMPISTRO128, IX86_BUILTIN_PCMPISTRS128, IX86_BUILTIN_PCMPISTRZ128, IX86_BUILTIN_PCMPGTQ, IX86_BUILTIN_INFQ, IX86_BUILTIN_FABSQ, IX86_BUILTIN_COPYSIGNQ): New. (def_builtin_const, bdesc_ptest, bdesc_pcmpestr, bdesc_pcmpistr, bdesc_crc32, bdesc_sse_3arg): New. (bdesc_2arg): __builtin_ia32_pmulhw128 and __builtin_ia32_pmulhuw128 updated for new code. CODE_FOR_sse4_1_mulv2siv2di3, __builtin_ia32_packusdw128, __builtin_ia32_pcmpeqq, __builtin_ia32_pmaxsb128, __builtin_ia32_pmaxsd128, __builtin_ia32_pmaxud128, __builtin_ia32_pmaxuw128, __builtin_ia32_pminsb128, __builtin_ia32_pminsd128, __builtin_ia32_pminud128, __builtin_ia32_pminuw128, __builtin_ia32_pmulld128, __builtin_ia32_pcmpgtq: New. (bdesc_1arg): CODE_FOR_sse4_1_extendv8qiv8hi2, CODE_FOR_sse4_1_extendv4qiv4si2, CODE_FOR_sse4_1_extendv2qiv2di2, CODE_FOR_sse4_1_extendv4hiv4si2, CODE_FOR_sse4_1_extendv2hiv2di2, CODE_FOR_sse4_1_extendv2siv2di2, CODE_FOR_sse4_1_zero_extendv8qiv8hi2, CODE_FOR_sse4_1_zero_extendv4qiv4si2, CODE_FOR_sse4_1_zero_extendv2qiv2di2, CODE_FOR_sse4_1_zero_extendv4hiv4si2, CODE_FOR_sse4_1_zero_extendv2hiv2di2, CODE_FOR_sse4_1_zero_extendv2siv2di2, CODE_FOR_sse4_1_phminposuw, CODE_FOR_sse4_1_roundpd, CODE_FOR_sse4_1_roundps: New. (ix86_init_mmx_sse_builtins): Added SSE4 builtin signatures, including v2di_ftype_v2di_unsigned_unsigned, v2di_ftype_v2di_v2di_unsigned_unsigned, v2di_ftype_v2di_v16qi, v2df_ftype_v2df_v2df_v2df, v4sf_ftype_v4sf_v4sf_v4sf, v8hi_ftype_v16qi, v4si_ftype_v16qi, v2di_ftype_v16qi, v4si_ftype_v8hi, v2di_ftype_v8hi, v2di_ftype_v4si, v2di_ftype_pv2di, v16qi_ftype_v16qi_v16qi_int, v16qi_ftype_v16qi_v16qi_v16qi, v8hi_ftype_v8hi_v8hi_int, v4si_ftype_v4si_v4si_int, int_ftype_v2di_v2di, int_ftype_v16qi_int_v16qi_int_int, v16qi_ftype_v16qi_int_v16qi_int_int, and int_ftype_v16qi_v16qi_int. Added __builtin_ia32_movntdqa, __builtin_ia32_pmovsxbw128, __builtin_ia32_pmovsxbd128, __builtin_ia32_pmovsxbq128, __builtin_ia32_pmovsxwd128, __builtin_ia32_pmovsxwq128, __builtin_ia32_pmovsxdq128, __builtin_ia32_pmovzxbw128, __builtin_ia32_pmovzxbd128, __builtin_ia32_pmovzxbq128, __builtin_ia32_pmovzxwd128, __builtin_ia32_pmovzxwq128, __builtin_ia32_pmovzxdq128, __builtin_ia32_pmuldq128, __builtin_ia32_roundpd, __builtin_ia32_roundps, __builtin_ia32_roundsd, __builtin_ia32_roundss, __builtin_ia32_movntsd, __builtin_ia32_movntss, __builtin_ia32_extrqi, __builtin_ia32_extrq, __builtin_ia32_insertqi, __builtin_ia32_insertq, __builtin_ia32_crc32di, __builtin_ia32_crc32qi, __builtin_ia32_crc32hi, __builtin_ia32_crc32si, __builtin_ia32_vec_set_v2di, __builtin_ia32_vec_set_v4sf, __builtin_ia32_vec_set_v4si, __builtin_ia32_vec_set_v16qi, and __builtin_ia32_vec_ext_v16qi. (ix86_expand_sse_4_operands_builtin, ix86_expand_crc32, ix86_expand_sse_ptest, ix86_expand_sse_pcmpestr, ix86_expand_sse_pcmpistr): New. (ix86_expand_unop_builtin, ix86_expand_builtin, ix86_expand_vector_set, ix86_expand_vector_extract): Backport 4.3 code. (ix86_expand_vec_set_builtin): Backport PR31582 fix from 4.2. * config/darwin.c (machopic_select_section): Backport 4.3 code. * testsuite/gcc.dg/vect/vect-none.c: Adjust for improved SSE4 vectorization. * testsuite/lib/target-supports.exp (get_compiler_message): Backport additional parameters. (check_no_compiler_messages, check_no_messages_and_pattern): New. (check_visibility_available, check_named_sections_available, check_effective_target_ilp32, check_effective_target_lp64): New parm for get_compiler_message(). * testsuite/gcc.target/i386/sse4_1-pmovsxwq.c: New. * testsuite/gcc.target/i386/sse4_1-dpps-2.c: New. * testsuite/gcc.target/i386/sse4_1-insertps-1.c: New. * testsuite/gcc.target/i386/sse4_1-pcmpeqq.c: New. * testsuite/gcc.target/i386/sse4_1-roundsd-1.c: New. * testsuite/gcc.target/i386/sse4_1-roundsd-3.c: New. * testsuite/gcc.target/i386/sse4_1-pmovsxbq.c: New. * testsuite/gcc.target/i386/sse4_2-popcntq.c: New. * testsuite/gcc.target/i386/sse4_1-pmovsxbw.c: New. * testsuite/gcc.target/i386/sse4_1-pminsb.c: New. * testsuite/gcc.target/i386/sse4_1-pminsd.c: New. * testsuite/gcc.target/i386/sse4_1-pmaxsb.c: New. * testsuite/gcc.target/i386/sse4_1-pblendw.c: New. * testsuite/gcc.target/i386/sse4_1-roundss-1.c: New. * testsuite/gcc.target/i386/sse4_1-pblendvb.c: New. * testsuite/gcc.target/i386/sse4_1-pmaxsd.c: New. * testsuite/gcc.target/i386/sse4_1-roundss-3.c: New. * testsuite/gcc.target/i386/sse4_1-pmovzxwd.c: New. * testsuite/gcc.target/i386/sse4_1-ptest-2.c: New. * testsuite/gcc.target/i386/sse4_1-pextrb.c: New. * testsuite/gcc.target/i386/sse4a-montss.c: New. * testsuite/gcc.target/i386/sse4_1-pextrd.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpestri-2.c: New. * testsuite/gcc.target/i386/i386.exp: New. * testsuite/gcc.target/i386/sse4_1-pmovzxbd.c: New. * testsuite/gcc.target/i386/sse4_1-roundpd-1.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpistri-2.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpestrm-2.c: New. * testsuite/gcc.target/i386/sse4_1-roundpd-3.c: New. * testsuite/gcc.target/i386/sse4_1-pinsrq.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpistrm-2.c: New. * testsuite/gcc.target/i386/sse4_1-pminuw.c: New. * testsuite/gcc.target/i386/sse4_1-packusdw.c: New. * testsuite/gcc.target/i386/sse4_1-pmaxuw.c: New. * testsuite/gcc.target/i386/sse4_1-check.h: New. * testsuite/gcc.target/i386/sse4_2-check.h: New. * testsuite/gcc.target/i386/sse4_1-dppd-1.c: New. * testsuite/gcc.target/i386/sse4_1-pmovsxwd.c: New. * testsuite/gcc.target/i386/sse4_1-blendps.c: New. * testsuite/gcc.target/i386/sse4_1-pmovzxdq.c: New. * testsuite/gcc.target/i386/sse4_1-roundps-1.c: New. * testsuite/gcc.target/i386/sse4_1-roundps-3.c: New. * testsuite/gcc.target/i386/sse4a-extract.c: New. * testsuite/gcc.target/i386/sse4_2-crc32q.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpstr.h: New. * testsuite/gcc.target/i386/sse4_1-pmuldq.c: New. * testsuite/gcc.target/i386/sse4_1-pmovsxbd.c: New. * testsuite/gcc.target/i386/sse4_1-dpps-1.c: New. * testsuite/gcc.target/i386/sse4_2-crc32w.c: New. * testsuite/gcc.target/i386/sse4_1-insertps-2.c: New. * testsuite/gcc.target/i386/sse4_1-phminposuw.c: New. * testsuite/gcc.target/i386/sse4_2-popcnt.h: New. * testsuite/gcc.target/i386/sse4_1-extractps.c: New. * testsuite/gcc.target/i386/sse4_1-blendvps.c: New. * testsuite/gcc.target/i386/sse4_1-roundsd-2.c: New. * testsuite/gcc.target/i386/sse4_1-roundsd-4.c: New. * testsuite/gcc.target/i386/sse4_2-popcntl.c: New. * testsuite/gcc.target/i386/sse4_1-pmovsxdq.c: New. * testsuite/gcc.target/i386/sse4_2-crc32.h: New. * testsuite/gcc.target/i386/sse4a-insert.c: New. * testsuite/gcc.target/i386/sse4a-montsd.c: New. * testsuite/gcc.target/i386/sse4_1-round.h: New. * testsuite/gcc.target/i386/sse4_1-pminud.c: New. * testsuite/gcc.target/i386/sse4_1-roundss-2.c: New. * testsuite/gcc.target/i386/sse4_1-pinsrb.c: New. * testsuite/gcc.target/i386/sse4_1-ptest-1.c: New. * testsuite/gcc.target/i386/sse4_1-mpsadbw.c: New. * testsuite/gcc.target/i386/sse4_1-pmaxud.c: New. * testsuite/gcc.target/i386/sse4_1-roundss-4.c: New. * testsuite/gcc.target/i386/sse4_1-pinsrd.c: New. * testsuite/gcc.target/i386/sse4_1-ptest-3.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpestri-1.c: New. * testsuite/gcc.target/i386/sse4_1-blendpd.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpestrm-1.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpistri-1.c: New. * testsuite/gcc.target/i386/sse4_1-roundpd-2.c: New. * testsuite/gcc.target/i386/sse4_1-pmovzxwq.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpgtq.c: New. * testsuite/gcc.target/i386/sse4_2-pcmpistrm-1.c: New. * testsuite/gcc.target/i386/sse4_2-crc32b.c: New. * testsuite/gcc.target/i386/sse4_1-pextrq.c: New. * testsuite/gcc.target/i386/sse4_1-dppd-2.c: New. * testsuite/gcc.target/i386/sse4_1-pmovzxbq.c: New. * testsuite/gcc.target/i386/sse4_1-pextrw.c: New. * testsuite/gcc.target/i386/sse4_1-movntdqa.c: New. * testsuite/gcc.target/i386/sse4_1-roundps-2.c: New. * testsuite/gcc.target/i386/sse4_2-crc32l.c: New. * testsuite/gcc.target/i386/sse4_1-pmovzxbw.c: New. * testsuite/gcc.target/i386/sse4_1-pmulld.c: New. * testsuite/gcc.target/i386/sse4_1-blendvpd.c: New. 2008-03-05 Josh Conner Radar 5603763 * config/darwin.h (GEN_SUFFIXED_NAME_FOR_SYMBOL): New macro... (GEN_LAZY_PTR_NAME_FOR_SYMBOL): ...use it. * config/arm/arm.c (machopic_output_stub): Generate stub lazy ptr label using GEN_SUFFIXED_NAME_FOR_SYMBOL instead of simple concatenation. 2008-03-04 Josh Conner Radar 5603792 * config/arm/arm.c (arm_darwin_encode_section_info): New function... (TARGET_ENCODE_SECTION_INFO): ...use for TARGET_MACHO. (arm_encode_section_info): Remove TARGET_MACHO-specific bits. 2008-03-03 Jim Grosbach Radar 5316398 * config/arm/t-darwin (LIB2FUNCS_EXTRA, LIB2FUNCS_EXCLUDE): Override libgcc functions for double/single float to DI conversion with arm specific versions. * config/arm/_fixdfdi.c: New file. ARM specific __fixdfdi() * config/arm/_fixunsdfdi.c: New file. ARM specific __fixunsdfdi() * config/arm/_fixsfdi.c: New file. ARM specific __fixsfdi() * config/arm/_fixunssfdi.c: New file. ARM specific __fixunssfdi() 2008-03-03 Josh Conner Radar 5757769 * config/arm/arm.c (arm_dbx_register_number): Start VFP debug register numbering from 256. 2008-02-29 Josh Conner Radar 5730079 * config/i386/darwin.c (DARWIN_ALLOWED_VERSION_TYPES): New macro. * config/rs6000/darwin.h (CC1_SPEC): Generate an error for -maspen-version-min. (DARWIN_ALLOWED_VERSION_TYPES): New macro. * config/darwin.h: Change DARWIN_VERSION from enums to bitfield macros. (darwin_default_min_version): Add allowable types parameter. * config/arm/darwin.c (CC1_SPEC): Generate an error for -mmacosx-version-min. (DARWIN_ALLOWED_VERSION_TYPES): New macro. * config/darwin-driver.c (darwin_default_min_version): Add allowable_vers_types parameter and logic to handle it. Rename vers_type parameter to default_vers_type. 2008-02-26 Caroline Tice Radar 5743691 * dwarf2out.c (DW_ISA_*): New defines. (dwarf_attr_name): Recognize DW_AT_APPLE_isa. (gen_subprogram_die): For ARM, emit DW_AT_APPLE_isa. * dwarf2.h (enum dwarf_attribute): Add DW_AT_APPLE_isa. 2008-02-21 Caroline Tice Radar 5741070 * objc/objc-act.c (objc_finish_message_expr): Find the record-type tree from the class interface, and mark the record type as used, for emitting debug info. * cp/cp-objcp-common.c (c_return_interface_record_type): New function. * cp/cp-tree.h (c_return_interface_record_type): New extern function declaration. * c-tree.h (c_return_interface_record_type): Likewise * c-decl.c (c_return_interface_record_type): New function. 2008-02-18 Jim Grosbach Radar 5752613 * fold-const.c (fold_inf_compare): equality comparisons to infinity are not equivalent to relatives comparison to DBL_MAX due to, e.g., different treatment of the "invalid" flag. Remove the conversions which make those transformations. 2008-02-19 Caroline Tice Radar 2338865 * dwarf2out.c (options.h): New include statement. (dwarf_attr_name): Add cases for DW_AT_APPLE_flags and DW_AT_APPLE_optimized. (gen_subprogram_die): Add DW_AT_APPLE_optimized to subprogram die if optimization level for the subroutine is greater than zero. (dwarf2out_finish): Add DW_AT_APPLE_optimized to the comp unit die if the optimization level is greater than zero. * dwarf2.h (DW_AT_APPLE_optimized): Add new Apple attribute. 2008-02-08 Josh Conner Radar 5681645 Radar 5717692 * config.gcc: Move t-slibgcc-darwin from *-*-darwin* into i[34567]86-*-darwin*, powerpc-*-darwin*, and powerpc64-*-darwin*. Add t-libgcc-aspen to arm*-*-darwin*. * config/i386/darwin.h (DARWIN_ASPEN_LIBGCC_SPEC): New macro. * config/rs6000/darwin.h (DARWIN_ASPEN_LIBGCC_SPEC): New macro. * config/darwin.h (REAL_LIBGCC_SPEC): If -maspen-version-min is seen, use darwin_aspen_libgcc spec. (DARWIN_EXTRA_SPECS): Add darwin_aspen_libgcc. * config/arm/t-darwin (SHLIB_VERPFX): Remove. * config/arm/t-slibgcc-aspen: New file. * config/arm/darwin.h (DARWIN_ASPEN_LIBGCC_SPEC): New macro. * config/arm/libgcc-aspen.ver: New file. * config/arm/darwin-libgcc.10.4.ver: Remove file. * config/arm/darwin-libgcc.10.5.ver: Remove file. 2008-02-06 Josh Conner Radar 5723857 * config/arm/t-darwin: No longer create multilibs. Add -march=armv6k to the library build options. 2008-02-06 Josh Conner Radar 5726269 * config/arm/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Don't set flag_objc_abi or flag_objc_legacy_dispatch here. (OBJC_TARGET_FLAG_OBJC_ABI): New macro. 2008-02-06 Hui-May Chang Radar 5103201 * config/i386/mmx.md (mov_internal_rex64, mov_internal) : Resolved the conflict between mainline and the patch for radar 4043818. 2008-02-04 Josh Conner Radar 5717579 * config/arm/arm.c (arm_encode_section_info): On darwin, invoke arm_encode_call_attribute even if !first. 2008-01-30 Josh Conner Radar 5683689 * config/darwin-c.c (iphone_version_as_macro): Rename to... (aspen_version_as_macro): ...this. Also, replace all iphone references with aspen. (darwin_cpp_builtins): Likewise. * config/darwin.opt (miphone-version-min): Rename to... (maspen-version-min): ...this. Also, replace all iphone references with aspen. * config/i386/darwin.h (CC1_SPEC): Replace all iphone references with aspen. (SUBTARGET_OVERRIDE_OPTIONS): Likewise. (TARGET_DWARF_UNINIT_VARS): Likewise. * config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Likewise. (CC1_SPEC): Likewise. (HAVE_OFFS_MSGSEND_FAST): Likewise. (TARGET_C99_FUNCTIONS): Likewise. (TARGET_DWARF_UNINIT_VARS): Likewise. * config/rs6000/rs6000.c (darwin_rs6000_override_options): Likewise. * config/darwin.h (enum darwin_version_type): Likewise. (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise. (LINK_SPEC): Likewise. (REAL_LIBGCC_SPEC): Likewise. (DARWIN_DYLIB1_SPEC): Likewise. (DARWIN_CRT1_SPEC): Likewise. (OBJC_FLAG_OBJC_ABI): Likewise. * config/arm/darwin.h (CC1_SPEC): Likewise. (DARWIN_CC1_MINVERSION_SPEC): Likewise. (DARWIN_LD_MINVERSION_SPEC): Likewise. (DARWIN_DEFAULT_VERSION_TYPE): Likewise. (SUBTARGET_OVERRIDE_OPTIONS): Likewise. * config/darwin-driver.c (darwin_default_min_version): Likewise. 2008-01-30 Josh Conner Radar 5713583 * config/darwin.h (REAL_LIBGCC_SPEC): When -maspen-version-min is seen, also pass -lgcc. 2008-01-30 Josh Conner Radar 5482675 * config/arm/arm.md (define_expand "call"): Test for longcall before calling machopic_indirect_call_target. (define_expand "call_value"): Likewise. 2008-01-30 Hui-May Chang Radar 5103201 Backport from mainline: 2007-06-05 H.J. Lu 2007-02-06 Richard Henderson * config/i386/mmx.md (mov_internal_rex64, mov_internal, movv2sf_internal_rex64, movv2sf_internal, vec_extractv2si_1): Change Y constraints to Yt. 2008-01-25 Josh Conner Radar 5660282 * config/darwin.h (OBJC_FLAG_OBJC_ABI): Warn and ignore flag_objc_gc and flag_objc_gc_only if darwin_iphone_version_min is set. 2008-01-23 Hui-May Chang Radar 5618945 * config/i386/emmintrin.h : Replace "static __inline" by "__liline" if __GNUC_STDC_INLINE__ is defined. * config/i386/pmmintrin.h : Likewise. * config/i386/tmmintrin.h : Likewise. * config/i386/xmmintrin.h : Likewise. * config/i386/mmintrin.h : Likewise. 2008-01-22 Josh Conner Radar 5683689 * config/darwin-c.c (version_as_macro): Renamed to... (macosx_version_as_macro): ...this. (iphone_version_as_macro): New function. (darwin_cpp_builtins): Define __ENVIRONMENT_IPHONE_VERSION_MIN_REQUIRED__, as needed. * config/darwin.opt (mmacosx-version-min): Initialize to NULL. (miphone-version-min): New option. * config/i386/darwin.h (CC1_SPEC): Use darwin_cc1_minversion if -miphone-version-min and -mmacosx-version-min not seen. (DARWIN_CC1_MINVERSION_SPEC): New define. (DARWIN_LD_MINVERSION_SPEC): New define. (DARWIN_DEFAULT_VERSION_TYPE): New define. (SUBTARGET_OVERRIDE_OPTIONS): Set darwin_macosx_version_min, if needed. (TARGET_DWARF_UNINIT_VARS): Check darwin_iphone_version_min. * config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Don't clear flag_use_cxa_get_exception_ptr if darwin_iphone_version_min is set. (CC1_SPEC): Use darwin_cc1_minversion if -miphone-version-min and -mmacosx-version-min not seen. (DARWIN_CRT2_SPEC): Verify that -mmacosx-version-min is set before using it. (DARWIN_CC1_MINVERSION_SPEC): New define. (DARWIN_LD_MINVERSION_SPEC): New define. (DARWIN_DEFAULT_VERSION_TYPE): New define. (HAVE_OFFS_MSGSEND_FAST): Set if darwin_iphone_version_min is set. (TARGET_C99_FUNCTIONS): Likewise. (TARGET_DWARF_UNINIT_VARS): Likewise. * config/rs6000/rs6000.c (darwin_rs6000_override_options): Set darwin_macosx_version_min, if needed. Set darwin_constant_cfstrings, but not altivec target_flags, if darwin_iphone_version_min is set. * config/darwin.c (darwin_override_options): Verify that darwin_macosx_version_min is set before using it. * config/darwin.h (enum darwin_version_type): New type. (SUBSUBTARGET_OVERRIDE_OPTIONS): Err if both darwin_macosx_version_min and darwin_iphone_version_min are set. (LINK_SPEC): Use darwin_ld_minversion as default. Pass -iphone_version_min to linker, if -miphone-version-min was given. (REAL_LIBGCC_SPEC): Use -lgcc_s.10.5 if -miphone-version-min was seen. (DARWIN_EXTRA_SPECS): Add darwin_cc1_minversion and darwin_ld_minversion. (DARWIN_DYLIB1_SPEC): Use dylib1.10.5.o if -miphone-version-min was given. (DARWIN_CRT1_SPEC): Use crt1.10.5.o if -miphone-version-min was given. (OBJC_FLAG_ZEROCOST_EXCEPTIONS): Verify that darwin_macosx_version_min is set before using it. (OBJC_WARN_OBJC2_FEATURES): Only perform this check if darwin_macosx_version_min is set. (darwin_default_min_version): Add parameter to prototype. (GCC_DRIVER_HOST_INITIALIZATION): Add new parameter to darwin_default_min_version call. * config/arm/darwin.h (CC1_SPEC): Use darwin_cc1_minversion if -miphone-version-min and -mmacosx-version-min not seen. (DARWIN_MINVERSION_SPEC): Change to "1.2". (DARWIN_CC1_MINVERSION_SPEC): New define. (DARWIN_LD_MINVERSION_SPEC): New define. (DARWIN_DEFAULT_VERSION_TYPE): New define. (SUBTARGET_OVERRIDE_OPTIONS): Set darwin_iphone_version_min, if needed. * config/darwin-driver.c (darwin_default_min_version): Add new parameter, vers_type, and logic to handle it. Change size of new_flag. Don't use default if any of the *-version-min options were given. Check for IPHONE_DEPLOYMENT_TARGET environment variable. 2008-01-11 Caroline Tice Radar 5636185 * dwarf2out.c (contained_in_subroutine): New function. (add_sibling_attributes): Add code to test for & remove DW_AT_MIPS_linkage_name, if appropriate. (assembler_name_exists_and_is_different): New function. (add_src_coords_attributes): Modify test condition for adding DW_AT_MIPS_linkage_name attribute: Change TREE_PUBLIC to TREE_PUBLIC || TREE_STATIC || DECL_EXTERNAL, and replace DECL_ASSEMBLER_NAME test with call to assembler_name_exists_and_is_different. 2008-01-10 Josh Conner Radar 5680184 * c.opt (fobjc-legacy-dispatch): New option. * config/darwin.h (OBJC_FLAG_OBJC_ABI): Specify a default for flag_objc_legacy_dispatch. * config/arm/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Specify a default for flag_objc_abi and flag_objc_legacy_dispatch. 2008-01-09 Josh Conner Radar 5256615 * doc/invoke.texi: Document -Xarch_* option. 2008-01-08 Hui-May Chang Radar 5596043 & 5645144 * cse.c (cse_insn) : Ignore the asm source operand of an inline assembly instruction when finding all the SETs in the instruction and invalidate its target. 2007-12-21 Josh Conner Radar 5651192 * config/arm/arm.md (adjustable_thumb_movdi_insn): Fix pool_range. (thumb_movdf_insn): Likewise. 2007-12-19 Caroline Tice Radar 5645155 * dwarf2out.c (dwarf2out.c): Add call to maybe_emit_file, to make sure current compilation unit filename is added to line table info. * testsuite/gcc.apple/dwarf-files.c: New testcase. 2007-12-18 Stuart Hastings Radar 5562718 * tree-vrp.c (value_inside_range): Return can't-tell if cmp1 or cmp2 is not a bool constant. (range_includes_zero_p): Handle can't-tell case. * testsuite/g++.apple/R5562718.C: New. 2007-12-18 Josh Conner Radar 5622318 (continued) * config/arm/darwin-libgcc.10.5.ver: Remove aeabi functions. 2007-12-18 Josh Conner Radar 5622318 * config/arm/ieee754-df.S (muldf3vfp, adddf3vfp, subdf3vfp, divdf3vfp, eqdf2vfp, nedf2vfp, ltdf2vfp, ledf2vfp, gtdf2vfp, gedf2vfp, unorddf2vfp, fixdfsivfp, fixunsdfsivfp, extendsfdf2vfp, truncdfsf2vfp, floatsidfvfp, floatunssidfvfp): New functions. * config/arm/ieee754-sf.S (mulsf3vfp, addsf3vfp, subsf3vfp, divsf3vfp, eqsf2vfp, nesf2vfp, ltsf2vfp, lesf2vfp, gtsf2vfp, gesf2vfp, unordsf2vfp, fixsfsivfp, fixunssfsivfp, floatsisfvfp, floatunssisfvfp): New functions. * config/arm/t-darwin (LIB1ASMFUNCS): Add all of the above. * config/arm/arm.c (arm_init_libfuncs): Set up optabs to call the above in Thumb, non-soft-float, non-static mode. (indirect_sibreturn_reg): New function. (indirect_sibreturn_mem): New function. (use_return_insn): Add support for indirect sibcalls. (arm_function_ok_for_sibcall): Allow indirect sibcalls. (arm_legitimize_address): Improve code for addresses including large constants, or including stack address + constant. (arm_rtx_costs_1): Allow an extra cycle for shifted operands in arithmetic instructions (leading to better decisions about expanding multiplies). (arm_cannot_copy_p): Recognize MEM(UNSPEC_PIC_BASE) within a set insn. (arm_gen_movmemqi): Choose smallest alternative at -Os. (arm_expand_prologue): Use extra register saves instead of a subtract from SP when possible at -Os. (arm_output_epilogue): Likewise. Handle indirect sibcalls that use a callee-saved reg. * config/arm/arm.h (FUNCTION_BOUNDARY): Allow halfword alignment for thumb functions, when possible. (LOCAL_ALIGNMENT): New definition. * config/arm/darwin.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New. * config/arm/lib1funcs.asm (ARM_FUNC_START): Mandate word- alignment of all ARM functions. * config/arm/arm.md (define_peephole2, line 583): New peephole. (define_peephole2, line 6110): New peephole. (arm_pic_ldrsi): New define_insn. (arm_pic_strsi): New define_insn. (sibcall_insn): Add support for indirect sibcalls. (sibcall_value_insn): Likewise. (movmemqi): Choose smallest alternative at -Os (Thumb variant). * config/arm/darwin-libgcc.10.5.ver: Update for Leopard. 2007-12-16 Hui-May Chang Radar 5645144 * cse.c (cse_insn) : Undo the patch of 5596043 for the ld64 failure found in SWB. 2007-12-14 Josh Conner Radar 5635246 * final.c (calculate_alignments): New function. (shorten_branches): Move calculations of uid_align into calculate_alignments. Invoke when alignments change. 2007-12-12 Josh Conner Radar 5643197 * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): Implement TARGET_MACHO+TARGET_64BIT logic. 2007-12-11 Eric Christopher Radar 5582941 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Use correct bitmask for default setting variables. 2007-12-11 Josh Conner Radar 5569774 Backport from FSF 4.2: 2007-07-25 Dorit Nuzman Devang Patel PR tree-optimization/25413 * targhooks.c (default_builtin_vector_alignment_reachable): New. * targhooks.h (default_builtin_vector_alignment_reachable): New. * tree.h (contains_packed_reference): New. * expr.c (contains_packed_reference): New. * tree-vect-analyze.c (vector_alignment_reachable_p): New. (vect_enhance_data_refs_alignment): Call vector_alignment_reachable_p. * target.h (vector_alignment_reachable): New builtin. * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New. * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New. (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define. Revert the following: 2005-12-07 Devang Patel Radar 4333194 * tree-vect-analyze.c (vect_compute_data_ref_alignment): Check misalignment where natural alignment is not reachable using loop peeling. 2007-12-05 Stuart Hastings Radar 5591571 * config/i386/i386.c (override_options): Disable instruction scheduler. * doc/invoke.texi (-fschedule-insns, -fschedule-insns2): Disabled for x86. 2007-12-05 Hui-May Chang Radar 5596043 * cse.c (cse_insn) : Ignore the asm source operand of an inline assembly instruction when finding all the SETs in the instruction and invalidate its target memory reference. 2007-12-03 Caroline Tice Radar 5619139 * dwarf2out.c (gen_typedef_die): Don't add typedef to pubtypes table unless renamed type is fully defined in current file. 2007-11-30 Hui-May Chang Radar 5596043 * cse.c (cse_insn) : Ignore the asm source operand of an inline assembly instruction when finding all the SETs in the instruction. 2007-11-29 Hui-May Chang Radar 5612779 * fold-const.c (extract_muldiv_1) : Do not move a negative constant from an ABS_EXPR. 2007-11-28 Josh Conner Radar 5594980 * defaults.h (TARGET_EXTRA_CASES): New definition. * final.c (compute_alignments): Always compute alignments if TARGET_EXACT_SIZE_CALCULATIONS is defined. (shorten_branches): Figure out asms_present and disallow CASE_VECTOR_SHORTEN_MODE shortening if true. Account for prologue size if TARGET_UNEXPANDED_PROLOGUE_SIZE is defined. Invoke ADJUST_INSN_LENGTH for switch tables. Give table label the same alignment as the table if TARGET_ALIGN_ADDR_DIFF_VEC_LABEL is defined. * function.c (struct function): Add needs_4byte_alignment field. * config/arm/t-darwin (LIB1ASMFUNCS): Add _switchu8, _switch8, _switch16, and _switch32. * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Set for both ARM and Thumb. * config/arm/arm.c (thumb_exit): Rename handle_thumb_exit, rewrite to count bytes as well as emit code. (thumb_pushpop): Rename handle_thumb_pushpop, rewrite similarly. (thumb_unexpanded_epilogue): Rename handle_thumb_unexpanded_epilogue, rewrite similarly. (thumb_output_function_prologue): Rename handle_thumb_unexpanded_prologue, rewrite similarly. (switch8_libfunc, switchu8_libfunc, switch16_libfunc, switch32_libfunc, register_switch8_libfunc, register_switchu8_libfunc, register_switch16_libfunc, register_switch32_libfunc, arm_adjust_insn_length, count_thumb_unexpanded_prologue, arm_label_align): New functions. (arm_reorg): Initialize address with count_thumb_unexpanded_prologue. (thumb_load_double_from_address): Disallow *[reg+reg] addressing. * config/arm/lib1funcs.asm: Add switchu8, switch8, switch16, and switch32 functions. * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_SHORTEN_MODE, ASM_OUTPUT_ADDR_DIFF_VEC, ASM_OUTPUT_ADDR_VEC, ADJUST_INSN_LENGTH, LABEL_ALIGN, TARGET_EXTRA_CASES, TARGET_EXACT_SIZE_CALCULATIONS, TARGET_UNEXPANDED_PROLOGUE_SIZE, TARGET_ALIGN_ADDR_DIFF_VEC_LABEL): New definitions. * config/arm/arm-protos.h (arm_adjust_insn_length, register_switch8_libfunc, register_switchu8_libfunc, register_switch16_libfunc, register_switch32_libfunc, count_thumb_unexpanded_prologue, arm_label_align): New protos. * config/arm/predicates.md (thumb_low_register_operand): New predicate. * config/arm/arm.md (VUNSPEC_POOL_STRING): New VUNSPEC. (*thumb_zero_extendhisi2): Rename adjustable_thumb_zero_extendhisi2. (*thumb_zero_extendhisi2_v6): Rename adjustable_thumb_zero_extendhisi2_v6. (*thumb_extendhisi2_insn_v6): Rename adjustable_thumb_extendhisi2_insn_v6. (*thumb_extendqisi2): Rename adjustable_thumb_extendqisi2. (*thumb_extendqisi2_v6): Rename adjustable_thumb_extendqisi2_v6. Fix typo. (*thumb_movdi_insn): Rename adjustable_thumb_movdi_insn. Fix length. (*pic_load_addr_based_insn): Fix length. (*thumb_movhi_insn): Rename adjustable_thumb_movhi_insn. (*thumb_movdf_insn): Fix length. (*ldmsi_postinc4_thumb): Fix length. (*stmsi_postinc4_thumb): Fix length. (casesi): Add TARGET_THUMB support. (thumb_casesi_internal): New define_insn. (align_4): Fix length. (align_8): Fix length. (consttable_end): Fix length. (prologue_use): Fix length. * stmt.c (expand_case): Allow for ADDR_DIFF_VEC being handled by ASM_OUTPUT_ADDR_DIFF_VEC. Add TARGET_EXTRA_CASES at the end of the table as needed. 2007-11-28 Hui-May Chang Radar 5591491 * tree-sra.c (generate_element_zero) : Built a zero expression when the decision is an integer copy. 2007-11-14 Josh Conner Radar 5595814 * config/arm/arm.c (symbol_mentioned_with_filter): Recurse through symbol_mentioned_with_filter, not symbol_mentioned_p. 2007-11-14 Josh Conner Radar 5597292 * dbxout.c (dbxout_type_xref): For a TYPE_DECL, also check if DECL_NAME(TYPE_NAME) is NULL. 2007-11-14 Josh Conner Radar 5595749 * dwarf2out.c (frame_pointer_fb_offset_from): New variable... (based_loc_descr): ...use it... (compute_frame_pointer_to_fb_displacement): ...set it. * var-tracking.c (find_src_status): Add COND_EXEC handling. (find_src_set_src): Likewise. 2007-11-13 Hui-May Chang Radar 4877693 * config/i386/i386.c (ix86_internal_arg_pointer) : Emit an error message when -mstackrealign -m64 options were specified. 2007-11-13 Josh Conner Radar 5595934 * config/arm/arm.md (pic_load_addr_thumb): Change pool_range to 1022. 2007-11-09 Eric Christopher Radar 5582941 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Add cpu features that don't have masks if we haven't specified an arch. * config/i386/i386.h: Make above variables non-const. * config/i386/i386.c: Ditto. Fix cmpxchg16b definition. 2007-11-09 Eric Christopher * c-common.c (iasm_stmt): Replace use of MACHO_DYNAMIC_NO_PIC_P with !flag_pic. 2007-11-08 Josh Conner Radar 5589109 * gcc/config/arm/darwin-libgcc.10.4.ver (adddf3, extendsfdf2, floatdidf, floatsidf, subdf3): Remove. 2007-11-07 Josh Conner Radar 5581683 * function.h (struct function): Add calls_builtin_ret_addr and calls_builtin_frame_addr. (current_function_calls_builtin_ret_addr): New definition. (current_function_calls_builtin_frame_addr): New definition. * builtins.c (expand_builtin_return_addr): Set current_function_calls_builtin_frame_addr and current_function_calls_builtin_ret_addr. (expand_builtin_setjmp_receiver): Check builtin_setjmp_frame_value. * dbxout.c (dbxout_parms): Adjust debug info offset by DEBUGGER_ARG_OFFSET. * global.c (global_alloc): Add ALLOW_ELIMINATION_TO_SP logic. * reload1.c (update_eliminables): Likewise. (init_elim_table): Likewise. * config/arm/arm.c (arm_builtin_setjmp_frame_value): New function. (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define. (inclusive_bitmask): New function. (use_return_insn): Support darwin alternate frame layout. (arm_compute_save_reg0_reg12_mask): Likewise. (arm_compute_save_reg_mask): Likewise. (thumb_compuate_save_reg_mask): Mandate use of FP. Also, support darwin alternate frame layout. (arm_output_epilogue): Support darwin alternate frame layout. (arm_get_frame_offsets): Likewise. (arm_compute_initial_elimination_offset): Likewise. (arm_expand_prologue): Likewise. (arm_return_addr): Likewise. (thumb_compute_initial_elimination_offset): Likewise. (thumb_expand_prologue): Likewise. (arm_set_return_addr): Likewise. (thumb_set_return_addr): Likewise. (arm_debugger_arg_offset): Adjust for SP-relative addressing. (thumb_output_function_prologue): Mandate use of FP. (arm_builtin_setjmp_frame_value): New function. (arm_local_debug_offset): New function. * config/arm/arm.h (ARM_HARD_FRAME_POINTER_REGNUM): Define as r7. (FRAME_POINTER_REQUIRED): Redefine to match darwin alternate frame layout. (ELIMINABLE_REGS): Don't eliminate from AP into FP. Merge ARM and Thumb hard frame pointers. (CAN_ELIMINATE): Allow elimination to SP if SP doesn't change during a function's lifetime. (DEBUGGER_ARG_OFFSET): Always call arm_debugger_arg_offset. (DEBUGGER_AUTO_OFFSET): Define. (ALLOW_ELIMINATION_TO_SP): Define. * config/arm/arm-protos.h (arm_local_debug_offset): New proto. * config/arm/darwin-libgcc.10.4.ver (addsf3, floatdisf, floatsisf, subsf3): Remove. 2007-11-07 Josh Conner Radar 5585396 * config/arm/arm.md (trap): New define_insn. 2007-11-06 Eric Christopher Radar 5583537 * config.gcc: Remove duplicate apple local code. 2007-11-05 Hui-May Chang Radar 4709514 * tree-pass.h (pass_memset) : Removed. * bitmap.h (bitmap_empty_p) : Removed. * tree-ssa-loop.c: (tree_ssa_loop_memset, gate_tree_ssa_loop_memset, pass_memset) : Removed. * tree-ssa-loop-memset.c : Removed. * tree-vectorizer.h: (vect_analyze_pointer_ref_access) : Removed. * tree-vect-analyze.c (tree vect_get_loop_niters): Declared it as a static instead of an extern function. * tree-flow.h (tree_ssa_memset): Removed. * passes.c (pass_memset): Removed. * Makefile.in (tree-ssa-loop-memset.o) : Removed. 2007-11-05 Josh Conner Radar 5569420 * doc/invoke.texi: Reinstate ARM options. * builtins.c (expand_builtin_alloca): Emit NOTE_INSN_ALLOCA. * final.c (final_scan_insn): Handle NOTE_INSN_ALLOCA. * insn-notes.def (ALLOCA): New INSN_NOTE. * cse.c (fold_rtx): Verify REGNO_QTY_VALID_P (folded_arg1) before using it. * stor-layout.c (start_record_layout): Add PEG_ALIGN_FOR_MAC68K handling. * calls.c (store_one_arg): Handle arguments which are partially on the stack when detecting argument overlap. * except.c (sjlj_emit_function_enter): Split this into (sjlj_generate_setjmp_sequence): ...this new function... (sjlj_emit_function_setjmps): ...and this new function. (sjlj_emit_dispatch_table): Call sjlj_emit_function_setjmps instead of sjlj_emit_function_enter. * config/i386/darwin.h (CC1_SPEC): Ignore -mthumb and -mno-thumb. * config/rs6000/darwin.h (CC1_SPEC): Likewise. * config/arm/arm.c (all_architectures): Change default processors for TARGET_MACHO. (arm_override_options): Don't warn if interworking selected on a processor that doesn't support thumb. Enable interworking by default on v5 and later architectures. (arm_compute_func_type): Consider TARGET_INTERWORK only on pre-v5 architectures. (use_return_insn): Likewise. (thumb_pushpop): Likewise. (thumb_exit): Likewise. (arm_function_ok_for_sibcall): Likewise. Also, don't allow sibcalls of external functions on TARGET_MACHO. Also, don't allow sibcalls of weak functions. (arm_legitimate_index_p): Limit indexed addressing on TARGET_VFP. Also, consider TARGET_INTERWORK only on pre-v5 architectures. (arm_output_mi_thunk): Use a stub for dynamic references. Also, use a -8 offset when calculating the address of a PIC reference to a non-local function. (optimization_options): New function. * config/arm/arm.h (TARGET_INTERWORK): Define. (OPTIMIZATION_OPTIONS): Define. * config/arm/arm-protos.h (optimization_options): New prototype. * config/arm/arm.opt (mthumb-interwork): Set interwork_option instead of a target mask. * config/arm/arm.md (UNSPEC_JMP_XCHG): New UNSPEC. (thumb_extendqisi2_v6): Check for which_alternative == 1. (builtin_setjmp_receiver): Remove. (builtin_setjmp_setup): New define_expand. (builtin_longjmp): New define_expand. (indirect_jump_exchange): New define_expand. (arm_indirect_jump_exchange): New define_insn. (thumb_indirect_jump_exchange): New define_insn. 2007-11-04 Hui-May Chang Radar 5543378 * config/i386/i386.c (ix86_expand_builtin): Improved the previous patch. 2007-10-30 Hui-May Chang Radar 5543378 * config/i386/i386.c (ix86_expand_builtin): Allow non-immediate shift count, load a memory operand to a register and convert to TI mode if necessary. 2007-10-26 Josh Conner Radar 5562046 * defaults.h (LEGITIMATE_INDIRECT_OPERAND_P): Define... * reload.c (find_reloads): ...use. * reload1.c (reload): Likewise. * recog.c (general_operand): Likewise. (immediate_operand): Likewise. (nonmemory_operand): Likewise. (asm_operand_ok): Likewise. * regclass.c (record_reg_classes): Likewise. * gcc.c (main): Add sysroot prefix to startfile_prefixes. * jump.c (rtx_renumbered_equal_p): Don't allow LABEL_REFs to undefined labels to match. * c-common.c (iasm_process_arg): Define default constraints for ARM. (cw_cpsr, cw_cpsr_c): New variables. (iasm_lookup_label): Recognize cpsr and cpsr_c as operands. * config.gcc: Add arm*-*-darwin* target. * config/i386/darwin.h (DARWIN_DSYMUTIL_SPEC): New definition. * config/rs6000/darwin.h (DARWIN_DSYMUTIL_SPEC): New definition. * config/darwin-protos.h (machopic_lookup_stub_or_non_lazy_ptr): New function. (machopic_data_defined_p): Make extern. * config/darwin.c (machopic_data_defined_p): Make extern. (struct machopic_indirection): Add 'emitted' field. (indirection_uses_changed): New variable. (machopic_indirection_name): Set 'emitted' field. (machopic_lookup_stub_or_non_lazy_ptr): New function. (machopic_validate_stub_or_non_lazy_ptr): Set indirection_uses_changed. Use 'emitted' field. (machopic_output_indirection): Set 'emitted' field. (machopic_finish): Use 'indirection_uses_changed' to determine whether to invoke htabl_traverse_noresize again. (machopic_select_section): Fix a signedness mismatch. * config/darwin-sections.def (machopic_symbol_stub4_section): New section defintion. (machopic_picsymbol_stub4_section): New section definition. * config/darwin.h (LINK_COMMAND_SPEC): Use DARWIN_DSYMUTIL_SEPC. (DARWIN_EXTRA_SPECS): Add darwin_dsymutil. (SUBTARGET_ASM_DECLARE_FUNCTION_NAME): New definition... (ASM_DECLARE_FUNCTION_NAME): ...use it. * config/arm/t-darwin: New file. * config/arm/ieee754-df.S (*): Convert macro definitions to gcc preprocessor and cctools assembler style macros. Don't use local labels > 9. * config/arm/ieee754-sf.S (*): Likewise. * config/arm/lib1funcs.asm (*): Likewise. * config/arm/arm.c: Add libcpp/internal.h include. (arm_darwin_file_start): New function. (arm_darwin_file_end): New function. (symbol_mentioned_with_filter): New function. (arm_cannot_force_const_mem): New function. (arm_binds_local_p): New function. (TARGET_ASM_FILE_START): New definition. (TARGET_ASM_FILE_END): New definition. (TARGET_ASM_ALIGNED_SI_OP): New definition. (TARGET_CANNOT_FORCE_CONST_MEM): Redefine. (TARGET_BINDS_LOCAL_P): New definition. (arm_override_options): Don't warn for conflicting -mcpu and -march switch on darwin. Don't set arm_pic_register on darwin. Invoke SUBTARGET_OVERRIDE_OPTIONS and SUBSUBTARGET_OVERRIDE_OPTIONS. (arm_attribute_table): Include SUBTARGET_ATTRIBUTE_TABLE. (arm_encode_call_attribute): Add MACHO handling. (current_file_function_operand): Use SYMBOL_SHORT_CALL_ATTR_P on darwin. (arm_is_longcall_p): Use SYMBOL_LONG_CALL_ATTR_P on darwin. (legitimize_pic_address): Add TARGET_MACHO support. (arm_load_pic_register): Disable for darwin. Pass label rtx when calling gen_pic_load_addr_arm, gen_pic_add_dot_plus_eight, gen_pic_load_addr_thumb, and gen_pic_add_dot_plus_four. (arm_cannot_force_const_mem): New function. (symbol_mentioned_p): Call symbol_mentioned_with_filter. (symbol_mentioned_with_filter): New function. (arm_cannot_copy_insn_p): Match MACHO UNSPEC_PIC_BASE. (arm_output_function_epilogue): For darwin, insert a nop after a trailing label. (arm_print_operand): Use a LOCAL_LABEL_PREFIX, if one is defined. (arm_assemble_integer): Assume aligned_p on darwin. Use DOT_WORD instead of ".word". (arm_elf_asm_constructor): Only define if OBJECT_FORMAT_ELF. (arm_init_builtins): Include SUBTARGET_INIT_BUILTINS. (arm_darwin_file_start): New function. (arm_darwin_file_end): New function. (arm_encode_section_info): For TARGET_MACHO, call darwin_encode_section_info, and use SYMBOL_LONG_CALL and SYMBOL_SHORT_CALL. (arm_cxx_class_data_always_comdat): Return false for darwin. (arm_binds_local_p): New function. (reset_optimization_options): New function. (machopic_output_stub): New function. (iasm_memory_clobber): New function. * config/arm/arm.h (TARGET_MACHO, DOT_WORD, SYMBOL_SHORT_CALL, SYMBOL_LONG_CALL, SYMBOL_SHORT_CALL_ATTR_P, SYMBOL_LONG_CALL_ATTR_P, LEGITIMATE_DYNAMIC_NO_PIC_OPERAND_P, LEGITIMATE_INDIRECT_OPERAND_P): Define. (ENCODED_SHORT_CALL_ATTR_P, ENCODED_LONG_CALL_ATTR_P): Remove. (THUMB_TRAMPOLINE_TEMPLATE): Use DOT_WORD instead of ".word". (ARM_NAME_ENCODING_LENGTHS): Remove handling of SHORT_CALL_FLAG_CHAR and LONG_CALL_FLAG_CHAR. (ARM_DECLARE_FUNCTION_SIZE): Use SYMBOL_SHORT_CALL instead of SHORT_CALL_FLAG_CHAR. (ARM_DECLARE_FUNCTION_NAME): Add symbol name to .thumb_func. (PRINT_OPERAND_PUNCT_VALID_P): Allow '.'. * config/arm/darwin.opt: New file. * config/arm/arm-protos.h (non_local_symbol_mentioned_p): New prototype. * config/arm/darwin.h: New file. * config/arm/arm.opt (mlong-branch): New option, alias for -mlong-calls). * config/arm/predicates.md (arm_branch_target): New predicate. * config/arm/arm.md (movsi): Use LEGITIMATE_INDIRECT_OPERAND_P. (pic_load_addr_arm): Include label reference as param. Allow to match for dynamic-no-pic on darwin. (pic_load_addr_thumb): Likewise. (pic_add_dot_plus_four): Likewise. (pic_add_dot_plus_eight): Likewise. (cbranchsi4_insn, cbranchsi4_scratch, movsi_cbranchsi4, negated_cbranchsi4, tbit_cbranch, tlobits_cbranch, tstsi3_cbranch, andsi3_cbranch, orrsi3_cbranch_scratch, orrsi3_cbranch, xorsi3_cbranch_scratch, xorsi3_cbranch, bicsi3_cbranch_scratch, bicsi3_cbranch, cbranchne_decr1, addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, subsi3_cbranch_scratch): Don't use relative local labels. (call): Calculate stub name on darwin, if building dynamic. (call_value): Likewise. (sibcall): Likewise. (sibcall_value): Likewise. (call_symbol): Require an arm_branch_target destination. (call_value_symbol): Likewise. (call_insn): Likewise. On darwin, use stub if one was generated. (call_value_insn): Likewise. * config/arm/darwin-libgcc.10.4.ver: New file. * config/arm/darwin-libgcc.10.5.ver: New file. 2007-10-26 Josh Conner Radar 3399553 * config/i386/i386.c (ix86_expand_flt_rounds): Fix comment. 2007-10-25 Josh Conner Radar 3399553 * ginclude/float.h (FLT_ROUNDS): Define to __builtin_flt_rounds. * builtins.c (expand_builtin_flt_rounds): New function... (expand_builtin): ...call it. * builtins.def (BUILT_IN_FLT_ROUNDS): Define. * config/i386/i386.md (UNSPEC_FLT_ROUNDS): New UNSPEC. (flt_rounds): New define_expand. * config/i386/i386-protos.h (ix86_expand_flt_rounds): New proto. * config/i386/i386.c (ix86_expand_flt_rounds): New function. * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Bump to 115. (LAST_PHYSICAL_REGISTER): New definition... (DWARF_FRAME_REGISTERS): ...use it here... (DWARF_REG_TO_UNWIND_COLUMN): ...and here. (FIXED_REGISTERS): Add value for FPSCR_REGNO. (CALL_USED_REGISTERS): Likewise. (CALL_REALLY_USED_REGISTERS): Likewise. (FPSCR_REGNO): Define. (REG_ALLOC_ORDER): Add FPSCR_REGNO. (enum reg_class): Add FPSCR_REGNO to ALL_REGS class. (REGISTER_NAME): Add FPSCR name. * config/rs6000/rs6000.md (UNSPEC_MFFS) New UNSPEC. (UNSPEC_FLT_ROUNDS): Likewise. (mffs): New define_insn. (flt_rounds): New define_expand. * config/rs6000/rs6000-protos.h (rs6000_expand_flt_rounds): New proto. * config/rs6000/darwin.h (REGISTER_NAMES): Add fpscr. * config/rs6000/rs6000.c (rs6000_reg_names): Add fpscr. (alt_reg_names): Likewise. (rs6000_expand_flt_rounds): New function. 2007-10-23 Eric Christopher Radar 5547244 * config/i386/i386.c (override_options): For darwin 64-bit kernel compilations turn off the red zone. 2007-10-23 Hui-May Chang Radar 3996036 * config/darwin.c (darwin_init_cfstring_builtins) : Do not emit a warning message for __builtin_CFString when -Wpadded is specified. 2007-10-15 Hui-May Chang Radar 5416357 * tree-sra.c (decide_block_copy) : Removed MERGE FIXME. 2007-10-15 Caroline Tice Radar 5359827 * dwarf2out.c (modified_type_die): If the die is a pointer type, and it has a name, add it to the list of potential types for the pubtypes table. 2007-10-08 Eric Christopher Radar 5516808 * config/rs6000/rs6000.c (altivec_pim_info): Fix comment. (altivec_ovl_resolve): Split out conditionals. (altivec_convert_args): Check for too many arguments to builtin. (rs6000_fold_builtin): Update comment, remove merge fixme. Fix type for fcode. Make sure that our second argument has a proper type as well. 2007-10-05 Eric Christopher Radar 5518348 * common.opt: Remove -fpascal-strings option. 2007-10-01 Jon Ziegler Radar 5490688 * doc/invoke.texi: remove reference to gcc_select 2007-09-28 Eric Christopher Radar 5490617 * varasm.c (assemble_variable): Use the classified section, not DECL_COMMON for zerofill. 2007-09-24 Hui-May Chang Radar 5447227 * config/rs6000/rs6000.c (altivec_expand_predicate_builtin) : Fixed APPLE LOCAL marker. 2007-09-22 Hui-May Chang Radar 5447227 * config/rs6000/rs6000.c (altivec_expand_abs_builtin, altivec_expand_predicate_builtin, altivec_expand_lv_builtin, altivec_expand_stv_builtin) : Fixed compile time warnings. 2007-09-21 Hui-May Chang Radar 5447227 * config/rs6000/rs6000.c (altivec_expand_abs_builtin, altivec_expand_predicate_builtin, altivec_expand_lv_builtin, altivec_expand_stv_builtin, altivec_expand_ld_builtin, altivec_expand_st_builtin, altivec_expand_dst_builtin) : Issue error messages for functions with too few arguments. 2007-09-21 Hui-May Chang Radar 4994150 * rs6000.c (rs6000_legitimate_offset_address_p): Return false for AltiVec vector modes. 2007-09-13 Stuart Hastings Radar 5437393 * gcse.c (gcse_main, cprop_insn): Remove APPLE LOCAL. 2007-09-04 Hui-May Chang Radar 5155743 * target.h (have_dynamic_stack_space): New. * target-def.h (TARGET_HAVE_DYNAMIC_STACK_SPACE) : New. * explow.c (allocate_dynamic_stack_space) : Reserve space for outgoing args and registers saved area if DYNAMIC_STACK_OFFSET is defined. * rs6000.c (TARGET_HAVE_DYNAMIC_STACK_SPACE): New. 2007-08-23 Hui-May Chang Radar 4869885 Backport from mainline: 2006-10-31 Geoffrey Keating PR 23067 * c-decl.c (start_struct): Don't create self-containing structures. * config/rs6000/rs6000.c (darwin_rs6000_special_round_type_align): New. * config/rs6000/rs6000-protos.h (darwin_rs6000_special_round_type_align): New. * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Rewrite. (ROUND_TYPE_ALIGN): Use darwin_rs6000_special_round_type_align. * stor-layout.c (ADJUST_FIELD_ALIGN): Only passed two arguments. 2007-08-22 Fariborz Jahanian Radar 4947311 * c-common.h (objc_declare_protocols, objc_start_protocol): Decl changed. * stub-objc.c (objc_declare_protocols, objc_start_protocol): Changed. * c-parser.c (c_parser_external_declaration): Call to c_parser_objc_protocol_definition takes additional argument. (c_parser_declaration_or_fndef): Protocols with attributes are processed here by passing it to c_parser_objc_protocol_definition. (c_parser_objc_protocol_definition): Takes additional argument and passes it to objc_declare_protocols or objc_start_protocol. 2007-08-21 Hui-May Chang Radar 4874197 * gcc/config/i386/i386.c (legitimate_constant_p): Accepted a sse constant vector as a legitimate constant. 2007-08-20 Hui-May Chang Radar 4870336, 4874471, 4874208 * tree.c (build_vector) : Moved the declaration of max_index inside the block it is used. 2007-08-20 Hui-May Chang Radar 4708086 * passes.c (rest_of_compilation): Removed after confirming the patch to radar 4548482 is no longer needed in gcc 4.2. 2007-08-20 Fariborz Jahanian Radar 5422751 * c-common.h (objc_protocol_implementation): decl removed. * stub-objc.c (objc_protocol_implementation): stub removed. * c-parser.c (c_parser_objc_class_definition): Misplaced syntax recognition removed. 2007-08-17 Hui-May Chang Radar 5134231 * gcc/config/rs6000/rs6000.c (rs6000_handle_option): Set rs6000_alignment_flags to OPTION_MASK_ALIGN_MAC68K instead of OPTION_ALIGN_MAC68K for -malign-mac68k option. 2007-08-17 Hui-May Chang Radar 4876451 Backport from mainline: 2007-04-24 Richard Henderson * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from IS_IBM_EXTENDED. Also define in terms of WIDEST_HARDWARE_FP_SIZE. * libgcc2.c (__floatdisf): Avoid double-word arithmetic when looking for non-zero bits shifted out. Avoid a recursive call when constructing the scalar. (__floatundisf): Likewise. 2007-08-14 Hui-May Chang Radar 4870336, 4874471, 4874208 * tree.c (build_vector) : Assign zeroes to uninitialized vector elements only for -mpim-alitivec option on ppc. 2007-08-10 Fariborz Jahanian Radar 5376125 * doc/invoke.texi (-Wdirect-ivar-access): New option * c.opt (-Wdirect-ivar-access): New warning 2007-08-10 Stuart Hastings Radar 5379188 * config/i386/i386.md (*darwin_cmpstrnqi_nz_1, *darwin_cmpstrqi_1): Mark destination with earlyclobber. 2007-08-10 Stuart Hastings Radar 4448096, 5238795 * gcc/doc/invoke.texi: Remove erroneous comment. 2007-08-09 Hui-May Chang Radar 4875125 Undo the mainline patch who broke ABI compatibility. 2005-06-10 Uros Bizjak PR target/21981 * config/i386/i386.c (ix86_return_in_memory): Return 1 for MMX/3dNow vectors. 2007-08-08 Geoffrey Keating Radar 5395148 * toplev.c (general_init): Don't install SIGHUP handler. (interrupt_signal): Remove. 2007-07-24 Stuart Hastings Radar 5346453 * gcc/config/darwin.c (machopic_select_section): C strings with embedded NUL characters are ineligible for the .cstring section. 2007-07-17 Stuart Hastings * config/i386.c (ix86_init_mmx_sse_builtins): Delete twice-merged definition of __builtin_ia32_vec_ext_v16qi. 2007-07-13 Fariborz Jahanian Radar 5277239 * c-parser.c (c_parser_next_token_starts_declspecs): Exclude objc2's property dot-syntax as a declarator. (c_parser_postfix_expression): Convert property dot-syntax on class objects into a property reference expression. 2007-07-10 Fariborz Jahanian Radar 5285911 * tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): Macro removed. * c-typeck.c (build_component_ref): Call objc_build_property_reference_expr instead of objc_build_getter_call. (build_modify_expr): Call objc_property_reference_expr instead of objc_property_call. * c-common.h (objc_build_getter_call, objc_property_call): Decl removed. (objc_build_property_reference_expr, objc_property_reference_expr): Decl. added. * stub-objc.c (objc_build_getter_call, objc_property_call): Stub removed. (objc_build_property_reference_expr, objc_property_reference_expr): Stub added. 2007-06-29 Stuart Hastings * gcc/cfghooks.c (split_block): One-line APPLE LOCAL needs begin and end markers. * gcc/objc/objc-act.c (objc2_build_indirect_ref_ivar2): Add a comment to prevent '}' from matching in the wrong place. * gcc/testsuite/gcc.dg/invalid-call-1.c: Missing APPLE LOCAL. * gcc/c-common.h (objc_build_weak_reference_tree, objc_v2_build_ivar_ref, diagnose_selector_cast, objc_check_format_nsstring): One-line APPLE LOCAL needs begin and end markers. * gcc/stub-objc.c: Remove a blank line to appease checklocals. (objc_build_weak_reference_type): Move an APPLE LOCAL from here... (objc_weak_reference_expr): ...to here. * gcc/loop-doloop.c (doloop_valid_p): Remove a blank line to appease checklocals. * gcc/predict.c (predict_loops): Likewise. * gcc/tree-flow.c: Likewise. * gcc/tree-ssa-loop-niter.c: Likewise. * gcc/config/i386/i386.c: Likewise. * gcc/cfgrtl.c: Likewise. 2007-07-02 Hui-May Chang Radar 4993982 Backport from mainline: 007-03-08 Zdenek Dvorak PR tree-optimization/31085 * tree-ssa-address.c (create_mem_ref): Fix test of type of base. Do not put an expression containing a cast to the base of TARGET_MEM_REF. 2007-06-29 Stuart Hastings * gcc/builtins.c: Remove a blank line to appease checklocals. 2007-06-29 Fariborz Jahanian Radar 5082000 * c.opt (-print-objc-ivar-layout): New option * c-opts.c (c_common_handle_option): Set print_objc_ivar_layout * c-common.c (print_objc_ivar_layout): declare * c-common.h (print_objc_ivar_layout): declare 2007-06-29 Fariborz Jahanian Radar 5276085 * c-parser.c (c_parser_binary_expression) : objc_generate_weak_read replaced with call to objc_build_weak_reference_tree * c-typeck.c (build_modify_expr, c_objc_common_truthvalue_conversion): objc_remove_weak_read replaced with call to objc_weak_reference_expr. * c-common.h (objc_weak_reference_expr, objc_build_weak_reference_tree) : New decl. (objc_generate_weak_read, objc_remove_weak_read): remove. * stub-objc.c (objc_weak_reference_expr, objc_build_weak_reference_tree): New stub. (objc_generate_weak_read, objc_remove_weak_read): remove. 2007-06-28 Geoffrey Keating * version.c: Update comments, put space before VERSUFFIX. 2007-06-27 Geoffrey Keating * config/darwin.h (CPP_SPEC): Remove local change to pass down -arch (which cc1 doesn't understand). * cgraphunit.c (cgraph_build_static_cdtor): Remove local change so that DECL_IGNORED_P is set. 2007-06-26 Geoffrey Keating Radar 5295606 * tree-if-conv.c (process_phi_nodes): Remove local change. 2007-06-25 Eric Christopher Radar 5293043 * config/i386/i386.c: Revert apple local changes to generic cpu. 2007-06-25 Eric Christopher Radar 5292674 * config.gcc (ix86-darwin): Use core2 for with_cpu. (x86_64-darwin): Ditto. 2007-06-22 Eric Christopher * config.gcc: Update mni tags for mainline. * config/t-slibgcc-darwin: Update no-libtool tags for mainline. 2007-06-22 Eric Christopher * doc/extend.texi: Update ssse3 tags for mainline. * doc/invoke.texi: Ditto. * config/i386/i386.h: Ditto. * config/i386/i386.md: Ditto. * config/i386/i386.opt: Ditto. * config/i386/sse.md: Ditto. 2007-06-22 Eric Christopher Radar 5289424 * config/i386/darwin.h (TARGET_DEEP_BRANCH_PREDICTION): Remove. * config/i386/i386.c (x86_deep_branch): Remove m_GENERIC. Comment. 2007-06-22 Eric Christopher Radar 5289384 * config/i386/darwin.h: Remove duplicate apple local code. 2007-06-22 Geoffrey Keating * configure.ac: Remove -DDARWIN_CROSS_COMPILE. * configure: Regenerate. 2007-06-21 Eric Christopher Radar 5283703 * doc/invoke.texi: Deprecate Wshorten-64-to-32. * tree.h (TREE_OVERFLOW_P): New. * c-common.c: Remove include of options.h. (warnings_for_convert_and_check): New. (convert_and_check): Use. * c-common.h: Declare warnings_for_convert_and_check. * Makefile.in: Remove c-common.o dependence upon options.h. 2007-06-19 Eric Christopher Radar 5279253 * Makefile.in: Remove apple order file support. 2007-06-19 Eric Christopher Radar 5279941 * Makefile.in: Remove LIBGCC_OPT local code. 2007-06-18 Eric Christopher * config/i386/i386.c: Remove Altivec vector modes. 2007-06-18 Eric Christopher * config/i386/i386.c (x86_use_incdec): Remove m_CORE2. 2007-06-18 Eric Christopher * config/i386/i386.c: Include c-tree.h and c-common.h. Fix up workarounds in file accordingly. 2007-06-18 Eric Christopher * config/i386/i386.h: Remove apple cpu support. (TARGET_SUBTARGET32_DEFAULT): Define to zero. (TARGET_SUBTARGET64_DEFAULT): Ditto. * config/i386/i386.c: Remove apple cpu support. (override_options): Use above. Move ix86_flag handling earlier. Use ix86_arch_specified. * config/i386/darwin.h (TARGET_SUBTARGET32_DEFAULT): Define. (TARGET_SUBTARGET64_DEFAULT): Ditto. 2007-06-18 Stuart Hastings Radar 5150147 * gcc/tree-ssa-loop-niter.c (unmark_surely_finite_loop, mark_maybe_infinite_loops): Remove. * gcc/tree-pass.h (pass_mark_maybe_inf_loops): Remove. * gcc/builtins.c (BUILT_IN_MAYBE_INFINITE_LOOP): Remove. * gcc/cfghooks.c (split_block, make_forwarder_block): Remove APPLE LOCAL LNO code. * gcc/toplev.c (lang_dependent_init): Remove APPLE LOCAL LNO code. * gcc/builtins.def (BUILT_IN_MAYBE_INFINITE_LOOP): Remove. * gcc/opts.c (set_flags_from_O): Remove APPLE LOCAL LNO code. * gcc/tree-ssa-loop.c (tree_mark_maybe_inf_loops, gate_tree_mark_maybe_inf_loops, pass_mark_maybe_inf_loops): Remove. * gcc/predict.c (predict_loops): Remove APPLE LOCAL LNO code. * gcc/loop-doloop.c (doloop_valid_p): Remove APPLE LOCAL LNO comment. * gcc/cfgloop.c (flow_loops_find): Remove APPLE LOCAL LNO code. * gcc/tree-flow.h (mark_maybe_inf_loops): Remove. * gcc/tree-cfg.c (tree_redirect_edge_and_branch): Remove APPLE LOCAL LNO code. * gcc/passes.c (init_optimization_passes): Remove reference to pass_mark_maybe_inf_loops. * gcc/cfgrtl.c (purge_dead_edges): Remove APPLE LOCAL LNO code. 2007-06-16 Hui-May Chang Radar 5109764 * reload1.c (emit_output_reload_insns): Undo radar 5002270. * config/i386/sse.md (sse2_stored) : Undo radar 4412214, 4172200. Backport from mainline: 2007-04-23 H.J. Lu * config/i386/sse.md (sse2_stored): Don't split to inter-unit move if inter-unit move isn't allowed. Don't split moving the first element of V2DI to DI to inter-unit move if inter-unit move isn't allowed. 2007-02-09 Richard Henderson * config/i386/sse.md (sse2_stored): Split rm alternative, use Yi. 2007-06-06 Fariborz Jahanian Radar 5250860 (Remove old property) * config/darwin-c.c (darwin_cpp_builtins): Define OBJC_NEW_PROPERTIES unconditionally. * c-common.h: Remove enums and macros which defined old property tokens. * c-parser.c: Remove recognition of old property tokens and parsing of old property syntax. 2006-12-13 Geoffrey Keating Radar 4697325 * gcc.c (process_command): Move handling of MACOSX_DEPLOYMENT_TARGET environment variable from here. * config/darwin-driver.c: Remove. 2007-06-07 Stuart Hastings Radar 534419 * gcc/config/rs6000/rs6000.md (movdi_internal64): Change remaining 'm' constraints into 'Y' constraints. 2007-06-01 Mike Stump Radar 5226662 * gcc.c (main): Be sure to set_input when languages == 0. 2007-05-31 Fariborz Jahanian Radar 5172645 * c.opt (Wproperty-assign-default): New warning option. * doc/invoke.texi: Document -Wproperty-assign-default 2007-05-29 Hui-May Chang Radar 5164498 Backport from mainline: * config/i386/i386.c (ix86_function_regparm): Added checking of ix86_force_align_arg_pointer to determine the number of register parameters. 2007-05-23 Fariborz Jahanian Radar 5195402 * c-format.c (handle_format_arg_attribute): Check for NSString * and CFStringRef as valid formatting types. (check_format_string): Ditto. * c-common.h (objc_check_format_nsstring, objc_check_cfstringref_type): New decls. * stub-objc.c (objc_check_nsstring_pointer_type): New stub. * config/darwin-c.c (objc_check_cfstringref_type): New (objc_check_format_cfstring): Call objc_check_cfstringref_type for valid CFStringRef argument type. * config/darwin-protos.h (objc_check_cfstringref_type): New decl. * config/darwin.h (CFSTRING_TYPE_CHECK): New macro. 2007-05-17 Eric Christopher Radar 4663646 * config/rs6000/rs6000.c (rs6000_emit_prologue): If the stack frame is large then save r12 if we're going to save altivec registers and use the frame pointer. 2007-05-18 Fariborz Jahanian Radar 2996215 (twik) * config/darwin.c (darwin_build_constant_cfstring): Change error to warning when character is not valid utf-8. 2007-05-18 Fariborz Jahanian Radar 5202926 * c-common.h (objc_anonymous_local_objc_name): New decl. * config/darwin-protos.h (objc_anonymous_local_objc_name): Decl. * stub-objc.c (objc_anonymous_local_objc_name): New stub. * config/darwin.h (ASM_OUTPUT_LABELREF) Call objc_anonymous_local_objc_name. 2007-05-17 Fariborz Jahanian Radar 2996215 * c-common.h (objc_create_init_utf16_var): New decl. * stub-objc.c (objc_create_init_utf16_var): New stub * config/darwin-c.c (objc_cvt_utf8_utf16): New * config/darwin-protos.h (objc_create_init_utf16_var): New decl. (objc_cvt_utf8_utf16): New decl. * config/darwin.c (darwin_build_constant_cfstring): Add support for native char-set to UTF-16. 2007-05-09 Caroline Tice Radar 4964532 * defaults.h (TARGET_DWARF_UNINIT_VARS): New macro, to control tracking uninitialized variables. * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION note definitions, to allow recording of initialization status in the notes. * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_APPLE_uninit. (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to determine if two note locations are equal. (output_loc_list): Don't output list entries whose start & end labels are the same. (reg_loc_descriptor): Add parameter for initialization status; pass it to other loc descriptor functions. (one_reg_loc_descriptor): Add parameter for initialization status; check its value and add DW_OP_APPLE_uninit to returned loc descr if appropriate. (multiple_reg_loc_descriptor): Add parameter for initialization status; pass its value to other loc descriptor functions; check its value and add DW_OP_APPLE_uninit to returned loc descr if appropriate. (based_loc_descr): Likewise. (mem_loc_descriptor): Likewise. (concat_loc_descriptor): Likewise. (loc_descriptor): Add parameter for initialization status; add appropriate initialization status to other loc descriptor function calls. (loc_descriptor_from_tree_1): Add appropriate initialization status to loc descriptor function calls. (add_location_or_const_value_attribute): Get initialization status from note; add initialization status to loc descriptor function calls. * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_APPLE_uninit. * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if status is uninitialized, add "[uninint]" to output. * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field. (enum var_init_status): New type, for var initialization status field. * var-tracking.c (struct location_chain_def): Two new fields, init, for initialization status, and set_src for the assignment value expr. (unshare_variable): New parameter for initialization status; initialize new init and set_src fields. (var_reg_set): New parameters for initialization status and value; pass them to set_variable_part. (var_mem_set): Likewise. (get_init_value): New function. (var_reg_delete_and_set): New initialization status & value parameters; add call to get_init_value if status is unknown; pass new parameters to clobber_variable_part and var_reg_set. (var_mem_delete_and_set): Likewise. (variable_union): Pass status to unshare_variable; initialize new init and set_src fields. (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be used later to get the set_src value. (find_src_status): New function. (find_src_set_src): New function. (compute_bb_dataflow): Pass status to calls to var_reg_set, var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for MO_SET, get set_src value and pass it to var_reg_delete_and_set and var_mem_delete_and_set. (dump_variable): Print out "[uninit]" if appropriate. (set_variable_part): Add new initialization and set_src parameters; pass status to unshare_variable; set node->init and node->set_src fields and modify slot in hash table appropriately; save the init and set_src values if appropriate and assign to the new node. (clobber_variable_part): New set_src parameter; if two nodes have same variable and same location but different set_src (assignment) values, clobber old node. (delete_variable_part): Pass status to unshare_variable. (emit_note_insn_var_location): Add initialized var; assign var's init status to new 'initialized'; pass new init status field to calls to gen_rtx_VAR_LOCATION. (emit_notes_in_bb): Pass initialization status to calls to var_reg_set, var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for MO_SET, get set_src value and pass it to var_reg_delete_and_set and var_mem_delete_and_set; call emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to make up for change in add_stores. (vt_add_function_parameters): Add status to calls to set_variable_part. * config/i386/darwin.h (TARGET_DWARF_UNINIT_VARS): New macro definition to control tracking uninitialized variables. * config/rs6000/darwin.h (TARGET_DWARF_UNINIT_VARS): New macro definition to control tracking uninitialized variables. 2007-05-07 Fariborz Jahanian Radar 3506309 * doc/invoke.texi: Document -Wnonportable-cfstrings 2007-05-07 Fariborz Jahanian Radar 4157812 * c-common.h (objc_build_keyword_decl): Takes a new argument. * stub-objc.c (objc_build_keyword_decl): Ditto. * c-parser.c (c_parser_objc_method_decl): Recognize optional method's argument attribute. (c_parser_objc_method_decl): Handle errornous selector. 2007-05-04 Eric Christopher Radar 4929122 * config/rs6000/predicates.md: Revert part of patch for 4874526. 2007-05-03 Eric Christopher Radar 4960076 * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate -shared to -Zdynamiclib. 2007-05-02 Fariborz Jahanian Radar 4502186 * c-typeck.c (convert_for_assignment): Remove synthesized 'volatile' type before doing type comparison. 2007-04-25 Hui-May Chang Radar 5122634 Backport from mainline: 2007-04-24 Hui-May Chang * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction. 2007-04-24 Mike Stump Radar 5083137 * gcc.c (PREFIX_PRIORITY_FIRST): Add. (main): Add add_sysrooted_prefix should use SYSROOT_PRIORITY instead of PREFIX_PRIORITY_LAST. * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): Add. 2007-04-24 Stuart Hastings Radar 5108956 * gcc/loop-invariant.c (find_invariant_insn): Remove APPLE LOCAL. 2007-04-23 Fariborz Jahanian Radar 4859753 * config/rs6000/rs6000.h (RS6000_8BYTE_STRUCT_HACK): Define * stor-layout.c (compute_record_mode): Use RS6000_8BYTE_STRUCT_HACK instead of RS6000_VARARGS_AREA. 2007-04-20 Fariborz Jahanian Radar 5130983 * c-common.h (enum lvalue_use): New enumerator lv_foreach added. * c-common.c (lvalue_error): Diagnose on lv_foreach. 2007-04-20 Stuart Hastings Radar 5131847 * gcc/config/i386/i386.md (movstrictqi_and): Add 64-bit support. 2007-04-13 Fariborz Jahanian Radar 4899595 * c.opt (-fobjc-new-property) on by default. * config/darwin-c.c (darwin_cpp_builtins): Define OBJC_NEW_PROPERTIES when new property flag is on. 2007-03-12 Fariborz Jahanian Radar 5023725 * c-opts.c: Remove flag_objc_zerocost_exceptions check. * config/darwin.h (OBJC_FLAG_ZEROCOST_EXCEPTIONS): New macro to issue diagnostic. (OBJC_FLAG_OBJC_ABI): Set -fobjc-zerocost-exceptions as default for objc2 abi. * config/darwin-c.c (darwin_cpp_builtins): Define OBJC_ZEROCOST_EXCEPTIONS when zero-cost exception flag is on. 2007-04-10 Fariborz Jahanian Fix bootstrap problem caused by radar 5096648. * c-format.c (tm_p.h): Include it. * config/darwin-protos.h: (objc_check_format_cfstring): Add decl. 2007-04-09 Fariborz Jahanian Radar 5096648 * c-format.c (tm_p.h): header file include. (format_type): cfstring_format_type enum added. (format_kind_info): New entry for CFString format added. (objc_check_nsformat_arg): Renamed to objc_check_cfformat_arg and modified. (check_format_info): Added support for CFString format. (handle_format_attribute): Ditto. * c-common.h (objc_NSString_format): decl removed. * stub-objc.c (objc_NSString_format): def removed. * config/darwin.h (TARGET_CFSTRING_P): Removed. (CHECK_FORMAT_CFSTRING, CFSTRING_TYPE_NODE): Added. * Makefile.in (tmp.h): c-format.o now depends on. * config/darwin-c.c (objc_check_format_cfstring): New 2007-04-09 Mike Stump Radar 4401222 * gsyslimits.h: Don't include_next here... * limitx.h: instead, include_next here. * limity.h: Simplify. 2007-04-06 Fariborz Jahanian Radar 4792158 * config/darwin.c: (output_objc_section_asm_op): Arrays tomark and tomarkv2 streamlined. darwin_sections initializations streamlined. (machopic_select_section): Switch to objc_v2_constant_string_object_section for objc2's string objects. Sections selection of various symbols are streamlined into objc1 and objc2 specific selections. * config/darwin-sections.def: Cleanup or add new section definitions for objc2 abi. 2007-03-31 Mike Stump Radar 4994030 * c.opt: Accept ObjC/ObjC++ whenever C/C++ is accepted. 2007-03-29 Fariborz Jahanian Radar 4947014 - objc atomic property * c-common.h (RID_NONATOMIC): Add * c-parse.c (c_parser_objc_property_attribute) : Recognize 'nonatomic' as new property. 2007-03-29 Fariborz Jahanian Radar 4564694 * c-parse.c (c_parser_objc_class_instance_variables): Add @package support to syntax. * c-common.h (RID_AT_PACKAGE): Add 2007-03-06 Mike Stump Radar 5033355 * c-incpath.c (merge_include_chains): Note framework include directories. 2007-03-23 Fariborz Jahanian Radar 4985544 * c-format.c (enum format_type): New entry for NSString format. (format_typ): Has a new entry for NSString format. (decode_format_attr): Error on use of NSString format on a non-objective-c program. (objc_check_nsformat_arg): New. (check_format_info): Call back for NSString is objc_check_nsformat_arg (handle_format_attribute): Use objc_check_format_nsstring for NSString format. * c-common.h (objc_NSString_format): New decl. (objc_check_format_nsstring): New decl. * stub-objc.c (objc_NSString_format, objc_check_format_nsstring): New stubs. * config/darwin-protos.h (darwin_cfstring_type_node): New decl. * config/darwin.c (darwin_cfstring_type_node): New * config/darwin.h (TARGET_CFSTRING_P): New macro 2007-03-22 Fariborz Jahanian Radar 4965989 * c-parser.c (c_parser_objc_class_definition): Add supprt for anonymous category syntax. 2007-03-22 Fariborz Jahanian Removed objc2 hybrid abi * c-parsec (c_parser_struct_or_union_specifier): removed flag_objc_abi == 3. * config/darwin-c.c: Removed checking for hybrid abi. * config/darwin.c: Ditto. * config/darwin.h: Issue error if use of hybrid abi is attempted. Removed checking for hybrid abi. 2007-03-21 Fariborz Jahanian Radar 2848255 * c-parser.c (c_parser_objc_try_catch_statement): Parse @catch(...). * c.opt: Add -fobjc-zerocost-exceptions option. * c-opts.c (c_common_post_options): Set the flags for -fobjc-zerocost-exceptions. * c-common.h: Add some declarations. * stub-objc.c (objc2_valid_objc_catch_type, objc2_build_throw_call): New stubs. * config/darwin.h (OBJC_FLAG_OBJC_ABI): Check for proper use of -fobjc-zerocost-exceptions option. 2007-03-21 Stuart Hastings Radar 5000667 * gcc/cse.c (record_jump_equiv): Drop CCmode expressions. * gcc/objc/objc-act.c (next_sjlj_build_catch): 'rethrow' needn't be volatile. 2007-03-15 Eric Christopher * cfgexpand.c (expand_used_vars): Fix warning from previous checkin. 2007-03-14 Eric Christopher Radar 5006196 * cfgexpand.c (expand_used_vars): Do not create a guard for iasm functions. 2007-03-14 Hui-May Chang Radar 5002270 * reload1.c (emit_output_reload_insns): If the output register is a SUBREG, and its mode size is greater than the mode size of its inner value, check if the instruction generated by gen_reload is valid nor not. If not, generate a new instruction with the right mode. 2007-03-07 Hui-May Chang Radar 5021057 * config/rs6000/rs6000.c (rs6000_fold_builtin): Check if there is any error in the argument list of a builtin function. 2007-02-15 Geoffrey Keating Radar 4992792 * dwarf2.h: Modify DW_AT_APPLE_flags value. 2007-02-12 Josh Conner Radar 4708231 * cfgloopmanip.c (loop_split_edge_with): Remove MERGE FIXME comment. 2007-02-12 Josh Conner Radar 4987589 * function.c (instantiate_virtual_regs_in_insn): Add support for OP_OUT and OP_INOUT when predicate no longer matches. 2007-02-07 Dale Johannesen Radar 4981913 * config/i386/i386.c (override_options): Make -fomit-frame-pointer setting work for -fast. 2007-02-06 Fariborz Jahanian Radar 4949034 * c.opt: Update -fobjc-call-cxx-cdtors settings. 2007-02-05 Hui-May Chang Radar 4961827 * gcc/config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size of a variable as an unsigned HOST_WIDE_INT integer. 2007-02-05 Geoffrey Keating Radar 4957887 * dwarf2out.c (dwarf2out_finish): Optionally add DW_AT_APPLE_flags attribute to compilation unit. * dwarf2.h (enum dwarf_attribute): Add DW_AT_APPLE_flags. * toplev.c (get_arguments): New. * toplev.h (get_arguments): New. 2007-01-30 Stuart Hastings Radar 4134510 * gcc/config/i386/i386.md (cmpstrsi): Prefer libcall for indefinite or length > 30. 2007-01-29 Bill Wendling * config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): Removed extra def'n. 2007-01-24 Josh Conner Radar 4708231 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Copy memory address into a register. (rs6000_expand_vector_set): Likewise. (rs6000_expand_vector_extract): Likewise. * config/rs6000/altivec.md (altivec_lvx_, altivec_stvx_, altivec_lvsl, altivec_lvsr, altivec_lvex, altivec_lvesfx, altivec_lvxl, altivec_lvx, altivec_stvx, altivec_stvxl, altivec_stvex, altivec_stvesfx): Replace memory_operand with indexed_or_indirect_operand. 2007-01-24 Mike Stump Radar 4951636 * builtins.c (expand_builtin_synchronize): Use build5 to build ASM_EXPRs. 2007-01-22 Mike Stump Radar 4930711 * config/i386/i386.c (iasm_raise_reg): Use lang hook for pushdecl. Use set_user_assembler_name instead of change_decl_assembler_name. (iasm_type_for): Use lang hook for type_for_mode. 2007-01-19 Eric Christopher Backport from mainline: 2007-01-17 Eric Christopher * config.gcc: Support core2 processor. 2007-01-19 Eric Christopher Backport from mainline: 2007-01-15 Eric Christopher * config/darwin.h: Update copyright. (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella. (LINK_COMMAND_SPEC): Add -u. (LINK_SPEC): Fix umbrella for above. 2007-01-19 Eric Christopher Radar 4928883 * real.c: Fix last checkin. 2007-01-19 Josh Conner Radar 4875159 Backport from mainline: 2007-01-18 Josh Conner PR target/30485 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add support for UNLE, UNLT, UNGE, and UNGT. 2007-01-15 Eric Christopher Radar 4737425 Backport from mainline: 2006-11-18 Vladimir Makarov * doc/invoke.texi (core2): Add item. * config/i386/i386.h (TARGET_CORE2, TARGET_CPU_DEFAULT_core2): New macros. (TARGET_CPU_CPP_BUILTINS): Add code for core2. (TARGET_CPU_DEFAULT_generic): Change value. (TARGET_CPU_DEFAULT_NAMES): Add core2. (processor_type): Add new constant PROCESSOR_CORE2. * config/i386/i386.md (cpu): Add core2. * config/i386/i386.c (core2_cost): New initialized variable. (m_CORE2): New macro. (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen, x86_deep_branch, x86_partial_reg_stall, x86_use_simode_fiop, x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, x86_partial_reg_dependency, x86_memory_mismatch_stall, x86_accumulate_outgoing_args, x86_prologue_using_move, x86_epilogue_using_move, x86_arch_always_fancy_math_387, x86_sse_partial_reg_dependency, x86_rep_movl_optimal, x86_use_incdec, x86_four_jump_limit, x86_schedule, x86_pad_returns): Add m_CORE2. (override_options): Add entries for Core2. (ix86_issue_rate): Add case for Core2. 2007-01-12 Dale Johannesen Radar 4875151 (partial) * tree-sra.c (decide_block_copy): Don't use DImode copy for two-field structs. 2007-01-10 Eric Christopher Radar 4709353 * gcc.c (execute): Remove status wait workaround for --help. 2007-01-09 Eric Christopher Radar 4872009 * config/darwin-c.c (darwin_pragma_pack): Update for 4.2 2007-01-08 Eric Christopher * config.gcc: Use --with-arch=apple. 2007-01-08 Dale Johannesen Radar 4708067 * tree-pass.h (pass_loop_prefetch): Remove duplicate declaration. * timevar.def (TV_DEP_GRAPH): Remove. * tree-ssa-loop.c (tree_mark_maybe_inf_loops): Remove setting of marked_maybe_inf_loops. * function.h (struct function): Remove marked_maybe_inf_loops. * params.def (PARAM_MAX_DOLOOP_INSNS): Remove. * loop-doloop.c (doloop_optimize): Remove check for it. * tree-flow.h (tree_debug_loop, tree_debug_loops): Remove declarations. * sched-rgn.c (compute_trg_info): Remove initializations for el.nr_members, el.first_member. * tree-cfg.c (tree_debug_loops): Rename to debug_loop_ir. (tree_debug_loop): Remove. 2007-01-05 Eric Christopher * tree-ssa-loop.c (pass_mark_maybe_inf): Update ssa after pass. 2007-01-05 Josh Conner Radar 4708067 * cfgloop.c (flow_loops_find): Re-enable call to free_dominance_info. * passes.c (execute_todo): Remove TODO_write_loop_closed logic. * tree-pass.h: Likewise. * tree-ssa-loop-niter.c (unmark_surely_finite_loop): Remove unneeded comments. (maybe_mark_infinite_loops): Mark call to builtin_maybe_infinite_loop for SSA renaming. * tree-ssa-loop.c (tree_mark_maybe_inf_loops): Re-enable. * tree-ssa-sink.c (execute_sink_code): Split call to calculate_dominance_info into two calls. 2007-01-05 Dale Johannesen Radar 4859866 * opts.c (option_enabled): Dump options that use the access_flag mechanism. * opt-functions.awk (switch_flags): Handle CL_VARUINT, CL_PERFUNC correctly. 2007-01-04 Dale Johannesen Radar 4874634 * config/rs6000/rs6000.c (optimization_options): Set sra-max-structure-count. 2007-01-03 Dale Johannesen Radar 4874526 * config/rs6000/predicates.md (word_offset_memref_operand): Check for valid operands of LO_SUM. * config/rs6000/rs6000.md (*movdi_internal64): Use Y constraint for ld and std instructions. 2006-12-22 Josh Conner Radar 4746131 * targhooks.c (default_vector_alignment_reachable): Remove. * targhooks.h: Remove prototypes for [default_]vector_alignment_reachable. * target.h: Remove vector_alignment_reachable. * tree-vect-analyze.c: Don't include target.h. (vect_enhance_data_refs_alignment): Remove APPLE LOCAL code for rdar://4375453. * target-def.h: Remove TARGET_VECTOR_ALIGNMENT_REACHABLE. * Makefile.in: Remove tree-vect-analyze.o dependency on $(TARGET_H). * config/rs6000/rs6000.c: Remove rs6000_vector_alignment_reachable and TARGET_VECTOR_ALIGNMENT_REACHABLE. 2006-12-20 Dale Johannesen Revert darwin.h part of preceding. 2006-12-20 Stuart Hastings Radar 4709503 * gcc/tree-ssa-forwprop.c (cast_conversion_assignment_p, replacable_use_in_cond_expr, all_uses_are_replacable, eliminate_unnecessary_casts): Remove. (tree_ssa_forward_propagate_single_use_va): Delete call. 2006-12-19 Dale Johannesen Radar 4874526 * config/rs6000/darwin.h (DATA_ALIGNMENT): New. * Makefile.in (targethooks.o): Add missing dependency. 2006-12-19 Josh Conner Radar 4709381 * opts.c (handle_option): Don't try to handle CLVC_BIT_CLEAR, CLVC_BIT_SET, or CLVC_STRING when using option->access_flag. 2006-12-14 Mike Stump * config/darwin.h (OBJC_FLAG_OBJC_ABI): Use abi 1 for the gnu runtime. 2006-12-14 Fariborz Jahanian Radar 4841447 * c.opt (-fobjc-new-property): Modified its language description 2006-12-14 Josh Conner Radar 4874491 Revert: Radar 4134283 2005-07-29 Devang Patel * c-decl.c (ext_block): New static variable. (c_write_global_declarations): Optimize before wrapping up globals. 2006-12-13 Josh Conner Radar 4856717 * varasm.c (output_constructor): Sort bitfields by position before outputting them. * vec.h (VEC_swap): New. 2006-12-23 Mike Stump Radar 4527353 * libgcc2.c (__eprintf): Ensure backwards compatibility to 10.3.9. 2006-12-13 Fariborz Jahanian Radar 4531086 * config/darwin.h (OBJC_WARN_OBJC2_FEATURES): New macro. 2006-12-13 Fariborz Jahanian Radar 4862848 * common.opt (flag_objc_abi): Defaulted to -1 * config/darwin.h (OBJC_FLAG_OBJC_ABI): New macro. 2006-12-12 Fariborz Jahanian Radar 4865576 * tree.c (type_hash_eq): Check for TYPE_NAME of two colliding tentative struct/union types. 2006-12-11 Josh Conner Radar 4870233 * config/rs6000/rs6000.c (round_type_align): Check for error_mark_node in TREE_TYPE of fields. 2006-12-11 Josh Conner Radar 4870523 * config/darwin-c.c (darwin_pragma_pack): verify that constants are INTEGER_CST. 2006-12-09 Dale Johannesen * tree-pass.h: Eliminate pass_loop_test. * tree-ssa-dom.c: Eliminate include of cfgloop.h. * tree-ssa-loop.c: Eliminate includes of tree-data-ref.h, function.h. Eliminate tree_ssa_loop_test, gate_tree_ssa_loop_test, pass_loop_test. * lambda.h: Eliminate include of gcc.h. * cfglayout.c: Eliminate extra decl of cfg_layout_duplicate_bb. * common.opt: Eliminate -floop-test. * passes.c: Eliminate pass_loop_test. 2006-12-08 Dale Johannesen Radar 4709381 (partial) * optc-gen.awk: Fix merge FIXMEs related to host-dependent macro in padding computation. * opth-gen.awk: Ditto. 2006-12-07 Eric Christopher Radar 4869218 * doc/extend.texi: Replace mni with ssse3. * doc/invoke.texi: Ditto. 2006-12-06 Dale Johannesen Radar 4859530 * config/rs6000/rs6000.c (rs6000_override_options): Fix merge FIXMEs related to -fast. 2006-12-05 Dale Johannesen Radar 4859374 * c-decl.c (diagnose_mismatched_decls): Use warning not note for mismatch inside disable_typechecking_for_spec. 2006-12-01 Fariborz Jahanian Radar 4859096 * c-typeck.c (build_modify_expr): Skip property calls when checking for lvalue-ness. * c-common.h (objc_property_call): New decl. * stub-objc.c (stub-objc.c): New function stub. * c-parser.c (reswords): Add new objc property keywords. (c_parse_init): Fix up 'dynamic' as an @ keyword. (c_lex_one_token): Handle recognition of new property keywords. (c_parser_external_declaration): Add call to parsing routines for @synthesize and @dynamic. (c_parser_objc_property_attribute): Handle new property attributes. (c_parser_objc_atsynthesize_declaration): New to parse @synthesize directive. (c_parser_objc_atdynamic_declaration): New to parse @dynamic directive. 2006-11-15 Eric Christopher * config/darwin.h (LINK_COMMAND_SPEC): Remove {u*} from options passed through. 2006-11-15 Eric Christopher Radar 4839411 * config/i386/tmmintrin.h: Depend on SSSE3. 2006-11-15 Dale Johannesen Radar 4827197 * doc/extend.texi (align=power): Document actual behavior and workaround for existing code. 2006-11-14 Dale Johannesen Radar 4812082 * doc/invoke.texi (-fast): Describe Intel options, fix typos. * config/i386/i386.c (override_options): Change -fast options. 2006-10-26 Hui-May Chang Radar 4709300 * dominance.c (first_dom_son): Remove the code added during merging, building and testing. 2006-10-05 Hui-May Chang Radar 4708086 * passes.c (MaxAlignForThisBlock, LargestAlignmentOfVariables): Moved to local-alloc.c. (rest_of_compilation) : patch involved save_PREFERRED_STACK_BOUNDARY as moved to final.c. * local-alloc.c (MaxAlignForThisBlock, LargestAlignmentOfVariables): Moved from passes.c. * final.c (rest_of_clean_state) : patch involved save_PREFERRED_STACK_BOUNDARY was moved from passes.c. * i386.h : define SAVE_PREFERRED_STACK_BOUNDARY. * i386.c : define ix86_preferred_stack_boundary. 2006-09-29 Hui-May Chang Radar 4709138 * cgraphunit.c (record_reference): Remove MERGE FIXME comment. 2006-09-18 Hui-May Chang Radar 4699543 Restore patch for radar 4158356 * tree-sra.c 1006-11-09 Fariborz Jahanian Radar 4810609 * c.opt (-fobjc-gc-only): New option * doc/invoke.texi (Objective-C GC Options): Add -fobjc-gc-only. 2006-11-09 Eric Christopher Radar 4574849 * t-slibgcc-darwin: Pass -install_name directly. * config/darwin.h (LINK_COMMAND_SPEC): Use ld, not libtool. Fix up argument passthrough accordingly. (STARTFILE_SPEC): Ditto. 2006-11-07 Stuart Hastings Radar 4611086 * gcc/config/rs6000/rs6000.c (rs6000_stack_info): Include vrsave_size in stack size computation. 1006-11-06 Fariborz Jahanian Radar 4781080 (part 2) * targhooks.c (default_objc_fpreturn_msgcall): Takes 2nd argument. * targhooks.h (default_objc_fpreturn_msgcall): Changed Decl. * target.h (objc_fpreturn_msgcall): Changed Decl. * config/i386/i386.h (OBJC_FPRETURN_MSGCALL): Changed Decl. * config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): Changed Decl. * config/i386/i386.c (ix86_objc_fpreturn_msgcall): Changed definition. 1006-11-06 Fariborz Jahanian Radar 4781080 * targhooks.c (default_objc_fpreturn_msgcall): New * targhooks.h (default_objc_fpreturn_msgcall): Declare * target.h (objc_fpreturn_msgcall): New field declaration. * target-def.h (TARGET_OBJC_FPRETURN_MSGCALL): New macro * config/i386/i386.h (OBJC_FPRETURN_MSGCALL): New macro * config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): New declaration. * config/i386/i386.c (ix86_objc_fpreturn_msgcall): New definition 2006-11-06 Stuart Hastings * gcc/global.c (expand_preferences): Move another APPLE LOCAL. 2006-11-06 Hui-May Chang Radar 4805365 * gcc/config/rs6000/rs6000.c (lwa_operand): Check the alignment of a memory operand is 32 bits aligned or not. 2006-11-03 Stuart Hastings * gcc/global.c (expand_preferences): Move APPLE LOCAL. 2006-11-03 Josh Conner Radar 4815483 Backport from mainline: 2005-08-02 Diego Novillo PR 23192 * tree-ssa-alias.c (add_pointed_to_var): If VALUE is of the form &(*PTR), take points-to information from PTR. Give up if VALUE by marking PTR as pointing anywhere if VALUE is not recognized. 2006-11-02 Stuart Hastings Radar 4253848 * gcc/convert.c (convert_to_vector): Generate VIEW_CONVERT_EXPR. * gcc/c-typechk.c (digest_init): Treat VIEW_CONVERT_EXPR like NOP_EXPR. * gcc/c-common.c (vector_types_convertible_p, lvalue_or_else): Treat VIEW_CONVERT_EXPR like NOP_EXPR. * gcc/global.c (expand_preferences): Pseudo regs that die in the current instruction are tied to the destination psuedo on two-address opcodes (e.g. x86). (pseudo_preference_transitivity): New. Radar 4517311 * gcc/config/i386/i386.c (ix86_expand_convert_uns_DF2SI_sse, ix86_expand_convert_uns_SF2SI_sse): Use gen_sse2_stored() to avoid useless MOVs. 2006-11-01 Fariborz Jahanian Radar 4805321 (new property). * c-common.h (RID_AT_SYNTHESIZE, RID_AT_DYNAMIC, RID_READWRITE, RID_ASSIGN, RID_RETAIN, RID_COPY): New enums. (OBJC_IS_NEW_PATTR_KEYWORD): New macro. (OBJC_IS_NEW_AT_KEYWORD): New macro. * stub-objc.c: (objc_declare_property_impl): New stub. * c.opt (fobjc-new-property): New command-line option. * c-parse.in: New grammar added for recognition of new property syntax. 2006-10-31 Caroline Tice * dwarf2out.c (size_of_pubnames): Only add DWARF_OFFSET_SIZE for entries in table that will actually be written out. * testsuite/gcc.apple/pubtypes-2.c: Fix size in "Length of Public Type Names Info" line. * testsuite/gcc.apple/pubtypes-3.c: Likewise. * testsuite/gcc.apple/pubtypes-4.c: Likewise. 2006-10-27 Eric Christopher Radar 4806229 * config/darwin-driver.c (main): Don't set ima_is_used if we're only compiling. 2006-10-26 Hui-May Chang Radar 4603883 Backport from mainline: 2005-08-17 James E Wilson * c-decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE in array size check. 2006-10-25 Eric Christopher Temporarily revert: 2006-09-25 Eric Christopher Radar 4574849 * config/t-slibgcc-darwin (SHLIB_LINK): Use -dylib_install_name. * config/darwin.h (LINK_COMMAND_SPEC): Remove use of libtool. (LINK_SPEC): Adjust options for above. (STARTFILE_SPEC): Ditto. 2006-10-19 Caroline Tice * dwarf2out.c (pubname_entry): Add DEF_VEC_GC_O statement for this type. (pubname_table): Redefine as a vector. (pubtype_table): New static global variable, defined as a vector. (pubname_table_allocated): Remove static global variable. (pubname_table_in_use): Remove static global variable. (PUBNAME_TABLE_INCREMENT): Remove constant. (size_of_pubnames): Add parameter to deal with either pubnames or pubtypes, and change code to deal with table being a vector. (add_pubname): Change to deal with table being a vector. (add_pubtype): New function. (output_pubnames): Add parameter to deal with either pubnames or pubtypes, and change code to deal with table being a vector. (gen_array_type_die): Add call to add_pubtype. (gen_enumeration_type_die): Add call to add_pubtype. (gen_struct_or_union_type_die): Add call to add_pubtype. (gen_subroutine_type_die): Add call to add_pubtype. (gen_typedef_die): Add call to add_pubtype. (dwarf2out_init): Add code to initialize pubname_table and pubtype_table vectors. (prune_unused_types): Change to deal with pubnames being a vector. (dwarf2out_finish): Change to deal with pubnames being a vector; add pubnames table to call to output_pubnames; Add code to output pubtypes table if DEBUG_PUBTYPES_SECTION is defined. * config/darwin.c (darwin_file_start): Add DEBUG_PUBTYPES_SECTION to debugnames. * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable. * testsuite/gcc.dg/pubtypes-1.c: New file/testcase. * testsuite/gcc.dg/pubtypes-2.c: New file/testcase. * testsuite/gcc.dg/pubtypes-3.c: New file/testcase. * testsuite/gcc.dg/pubtypes-4.c: New file/testcase. * testsuite/g++.dg/pubtypes.C: New file/testcase. 2006-10-18 Mike Stump Radar 4094959 * c-opts.c (c_common_handle_option): Handle language specific target options. * opts.c (handle_option): Verify language for target options, if any are given. * opth-gen.awk: Add CL_LANG_ALL. * config/darwin.opt (iframework): Add. * config/darwin.h (TARGET_HANDLE_C_OPTION): Add. * config/darwin-c.c (add_system_framework_path): Export. (darwin_handle_c_option): Add. * config/darwin-protos.h (darwin_handle_c_option): Add. * doc/invoke.texi (Darwin Options): Add -iframework. 2006-10-17 Mike Stump Radar 4197305 * c-lex.c (c_lex_with_flags): Arrange for tokens to not be over-written while peeking forward for Objective-C languages. 2006-10-13 Stuart Hastings * Radar 4740805, 4741439 * gcc/loop.c (LOOP_REG_LIFETIME, LOOP_REG_GLOBAL_P): Remove commentary. 2006-10-11 Mike Stump Radar 4197305 * c-lex.c (c_lex_with_flags): Prefer _cpp_backup_tokens over iasm_saved_token. Avoid fetching extra characters. 2006-10-10 Mike Stump Radar 4739936 * c-parse.in (_yylex): Restore error for invalid integer suffixes. 2006-10-06 Stuart Hastings * Radar 4740805, 4741439 * gcc/loop.c (LOOP_REG_LIFETIME, LOOP_REG_GLOBAL_P): Revert APPLE LOCAL. 2006-10-09 Caroline Tice Radar 4755586 * config/i386/i386.h: Rename mni to ssse3. * config/i386/i386.md: Ditto. * config/i386/tmmintrin.h: Ditto. * config/i386/i386.c: Ditto. * config/i386/sse.md: Ditto. 2006-10-05 Dale Johannesen * opts.c (restore_func_cl_pf_opts_mapping): Reset align_loops_log, align_jumps_log, align_labels_log, align_labels_max_skip in code. * flags.h (align_loops_max_skip, align_jumps_max_skip): Remove declarations. * common.opt (align_loops_max_skip, align_jumps_max_skip): Make PerFunc and VarUint. * config/darwin-c.c (darwin_set_flags_from_pragma): New. (darwin_pragma_opt_level): Call it. (darwin_opt_size): Ditto. * config/rs6000/rs6000.c (reset_optimization_options): Reset align_jumps, align_loops, align_jumps_max_skip, align_loops_max_skip. * config/i386/i386.c (reset_optimization_options): Reset ix86_cost, align_loops, align_jumps, align_jumps_max_skip, align_loops_max_skip. (override_options): Move processor_table_target to file scope. 2006-10-03 Dale Johannesen * doc/extend.texi (x86 Vector Extensions): Change di to v1di throughout. Add builtins psllwi, pslldi, psrlwi, psrldi, psrawi, psradi. Remove builtin pmulhuq. * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode. * config/i386/i386-modes.def: Add V1DImode, V1SImode. * config/i386/mmx.md (MMXMODEI): Add V1DImode. (MMXMODE): Add V1DImode. (MMXMODE124): New (same as former MMXMODE). (MMXMODE248): New. (mmxvecsize): Change DI to V1DI. (mmx_adddi3, mmx_subdi3, mmx_ashldi3, mmx_ashldi2si, mmx_lshrdi3, mmx_lshrdi2si): Remove. (mmx_psadbw, sse_movntdi, mmx_ashr3): Change DI to V1DI. (sse2_umulsidi3): Change DI to V1DI, SI to V1SI. (mmx_lshr3, mmx_ashl3): Change DI to V1DI. Change MMXMODE24 to MMXMODE248. (mmx_lshr2si, mmx_ashl2si, mmx_ashr2si): New. (mmx_eq3, mmx_gt3): Change MMXMODEI to MMXMODE124. (*mov_internal_rex64): Remove * constraint in ym->y case. * config/i386/xmmintrin.h (_mm_stream_pi): Remove casts in movntq call. * config/i386/mmintrin.h (_mm_add_si64, _mm_sub_si64, _mm_sll_pi16, _mm_sll_pi32, _mm_sll_si64, _mm_slli_si64, _mm_sra_pi16, _mm_sra_pi32, _mm_srl_pi16, _mm_srl_pi32, _mm_srl_si64, _mm_srli_si64): Remove casts in calls. (_mm_slli_pi16, _mm_slli_pi32, _mm_srai_pi16, _mm_srai_pi32, _mm_srli_pi16, _mm_srli_pi32): Call -i form of builtin. * config/i386/sse.md (mni_psign3, mni_pabs2): Change MMXMODEI to MMXMODE124. (mni_palignrdi): Change to mni_palignrv1di. Change DI to V1DI. * config/i386/i386.c (type_natural_mode): Treat V1DI as DI in 32-bit calling sequence. (builtin_description bdesc_2arg): Change PADDQ to use mmx_addv1di3. Change PSUBQ to use mmx_subv1di3. Change PSLLWI to use ashlv4hi2si. Change PSLLDI to use ashlv2si2si. Change PSLLQ to use ashlv1di3. Change PSLLQI to use mmx_ashlv1di2si. Change PSRLWI to use mmx_lshrv4hi2si. Change PSRLDI to use lshrv2si2si. Change PSRLQ to use lshrv1di3. Change PSRLQI to use mmx_lshrv1di2si. Change PSRAWI to use mmx_ashrv4hi3. Change PSRADI to use mmx_ashrv2si2si. (ix86_init_mmx_sse_builtins): Add V1DI_type_node. Rename pdi_type_node to pv1di_type_node, adjust arguments. Rename v4hi_ftype_v4hi_di to v4hi_ftype_v4hi_v1di, adjust. Rename v2si_ftype_v2si_di to v2si_ftype_v2si_v1di, adjust. v2si_ftype_v2si_int: New. Rename void_ftype_pdi_di to void_ftype_pv1di_v1di, adjust. Rename di_ftype_di_di to v1di_ftype_v1di_v1di, adjust. Rename di_ftype_di_int to v1di_ftype_v1di_int, adjust. Rename di_ftype_di_di_int to v1di_ftype_v1di_v1di_int, adjust. Rename di_ftype_v8qi_v8qi to v1di_ftype_v8qi_v8qi, adjust. Use v4hi_ftype_v4hi_v1di for builtin psllw. Add builtin psllwi. Use v2si_ftype_v2si_v1di for builtin pslld. Add builtin pslldi. Use v1di_ftype_v1di_v1di for builtin psllq. Use v1d1_ftype_v1di_int for builtin psllqi. Use v4hi_ftype_v4hi_v1di for psrlw builtin. Add psrlwi builtin. Use v2si_ftype_v2si_v1di for psrld builtin. Add psrldi builtin. Use v1di_ftype_v1di_v1di for psrlq builtin. Use v1di_ftype_v1di_int for psrlqi builtin. Use v4hi_ftype_v4hi_v1di for psraw builtin. Add psrawi builtin. Use v2si_ftype_v2si_v1di for psrad builtin. Add psradi builtin. Use void_ftype_pv1di_v1di for movntq builtin. Use v1di_ftype_v8qi_v8qi for psadbw builtin. Use v1di_ftype_v2si_v2si for pmuludq builtin. Use v1di_ftype_v1di_v1di_int for palignr builtin. Use CODE_FOR_sse_movntv1di for movntq builtin. Use CODE_FOR_mni_palignrv1di for palignr builtin. 2006-09-29 Hui-May Chang Radar 4736174 Backport from mainline: 2005-08-27 Richard Guenther PR target/23575 * config/i386/sse.md (sse2_movsd): Add missing closing braces. 2006-09-27 Hui-May Chang Radar 4412214, 4172200 * config/sse.md (sse2_stored): Add 'r' constraint to the destination operand. 2006-09-26 Eric Christopher Radar 4106877 * config/darwin-driver.c (main): Remove dependence on -o option. Fix comment spelling. 2006-09-26 Fariborz Jahanian Radar 4733555 *config/darwin.c (darwin_handle_weak_import_attribute): Ignore 'weak_import' on objc methods. 2006-09-26 Dale Johannesen * config/i386/mmx.md (mmx_lshrdi2si): New. (mmx_ashldi2si): New. (*vec_extractv2si_0): Allow mmx->int reg moves. * config/i386/i386.c (bdesc_2arg): Use mmx_ashldi2si for IX86_BUILTIN_PSLLQI. Use mmx_lshrdi2si for IX86_BUILITN_PSRLQI. (ix86_init_mmx_sse_builtins): Add di_ftype_di_int. Add __builtin_ia32_psllqi, __builtin_ia32_psrlqi. * config/i386/mmintrin.h (_mm_slli_si64): Use __builtin_ia32_psllqi. (_mm_srli_si64): Use __builtin_ia32_psrlqi. * doc/extend.texi: Document new builtins. 2006-09-25 Eric Christopher Radar 4740850 * config.gcc: Add apple as i386 cpu variant. * config/i386/i386.h (TARGET_CPU_DEFAULT_apple): New. (TARGET_CPU_DEFAULT_NAMES): Add apple. (processor_type): Add PROCESSOR_APPLE. * config/i386/i386.c (apple_cost): New. (override_options): Use. Add apple cpu. Move default SSE options to 64-bit default init section. 2006-09-25 Eric Christopher Radar 4574849 * config/t-slibgcc-darwin (SHLIB_LINK): Use -dylib_install_name. * config/darwin.h (LINK_COMMAND_SPEC): Remove use of libtool. (LINK_SPEC): Adjust options for above. (STARTFILE_SPEC): Ditto. 2006-09-25 Bill Wendling PR c/23576 * c-decl.c (grokdeclarator): Don't write to fields of error_mark_node. 2006-09-22 Mike Stump Radar 4736998 * config/i386/i386.c (iasm_x86_canonicalize_operands): Avoid outputting arguments for movs, as the assembler can mis-assemble it. 2006-09-19 Josh Conner Radar 4727273 * flow.c (initialize_uninitialized_subregs): Only do something if TARGET_MUST_INIT_SUBREG is set. 2006-09-18 Fariborz Jahanian Radar 4667060 * c-gimplify.c (gimplify_c_loop): Add support for setting of foreach loop controlling variable to 'nil' on normal loop exit. 2006-09-15 Fariborz Jahanian Radar 4727659 * c-common.c (handle_noreturn_attribute): Handle method_decl nodes as well. 2006-09-14 Bill Wendling Radar 4731660 * config/darwin.h (REDO_SECTION_INFO_P): Removed 2006-09-11 Josh Conner Radar 4658012 * calls.c (expand_call): Don't set keep bit on temps for holding structure return values. * integrate.c (copy_decl_for_inlining): Add is_result parameter, add handling for DECL_BY_REFERENCE. * integrate.h (copy_decl_for_inlining): Add is_result parameter. * tree-inline.c (remap_decl): Adjust call for above. (setup_one_parameter): Likewise. (mark_local_for_remap_r): Likewise. (declare_return_variable): Likewise. Add bind_expr parameter. Add handling for DECL_BY_REFERENCE. (expand_call_inline): Adjust call to declare_return_variable for additional parameter. 2006-09-08 Stuart Hastings Radar 4664847 * gcc/config/i386/i386.md (fixuns_trunc_si2): Check for TARGET_SSE2. * gcc/config/i386/i386.c (ix86_expand_convert_uns_DF2SI_sse, ix86_expand_convert_uns_SF2SI_sse, ix86_expand_convert_uns_DI2DF_sse): Add to commentary. 2006-09-07 Hui-May Chang Radar 4577796 * config/i386/i386.c : Redefine global constant x86_use_incdec. 2006-09-07 Stuart Hastings * gcc/config/i386/i386.c (processor_alias_table): Delete APPLE LOCAL comment. 2006-09-06 Caroline Tice Radar 4707854 * dwarf2out.c (dwar2out_abstract_function): Remove call_site test from condition determining if an abstract origin die needs to be generated. 2006-09-06 Stuart Hastings Radar 4515157 * gcc/config/i386/i386.c (processor_alias_table): Enable SSE3 for nocona. (override_options): Turn SSE3 off for 32-bit Mach-O unless explicitly enabled on command line. 2006-09-05 Mike Stump Radar 4699545 * config/i386/i386.c (iasm_indirect): Avoid doing bad things with ARRAY_TYPEs. (iasm_canonicalize_bracket): Handle [var][edx+edx]. (iasm_canonicalize_bracket_1): Allow edx+edx to have a type so that we can pass it to the optimizer. 006-09-01 Fariborz Jahanian Radar 4712269 * c-common.h (objc_build_incr_decr_setter_call): New decl. * stub-objc.c (objc_build_incr_decr_setter_call): New stub. * c-typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call for potential ince/decr pre/post expressions involving properties. 2006-08-31 Fariborz Jahanian Radar 4697411 * c-common.h (objc_volatilize_component_ref): New decl. * c-typeck.c (build_component_ref): Call objc_volatilize_component_ref. * stub-objc.c (objc_volatilize_component_ref): New stub. 2006-08-29 Mike Stump Radar 4699524 * config/i386/i386.c (iasm_x86_canonicalize_operands): Add pushfd/popfd. 2006-08-29 Fariborz Jahanian Radar 4705250 * c.opt (fobjc-atdefs): Add * c-parse.in: No error on use of @defs with -fobjc-atdefs 2006-08-28 Bill Wendling Radar 4679943 * doc/extend.texi (Structure-Packing Pragmas): Changed #pragma pack documentation to reflect Apple's implementation. * config/darwin-c.c (push_field_alignment, darwin_pragma_pack): If #pragma pack([N]), don't clear out the natural alignment flag on PPC64. 2006-08-25 Fariborz Jahanian PR c/28418 * c-gimplify.c (gimplify_compound_literal_expr): Don't add variable again if DECL_SEEN_IN_BIND_EXPR_P. 2006-08-24 Mike Stump Radar 4682427 * c-common.c (iasm_stmt): Fix jmp/call. * config/i386/i386.c (iasm_x86_canonicalize_operands): Likewise. 2006-08-24 Bill Wendling Radar 4699019 * doc/invoke.texi (C Language Options, Linker Options, Warning Options): Removed -Wpragma-once, -no-c++filt, and -Wpragma-once options' documentation. * gcc/common.opt (fppc): Removed fppc flag. * gcc/toplev.c (flag_fppc): Removed flag_fppc variable. 2006-08-22 Hui-May Chang Radar 4287182 * i386.h : Redefine SLOW_BYTE_ACCESS. 2006-08-18 Fariborz Jahanian Reverted patch for radar 4674757 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove darwin_constant_cfstrings setting. 2006-08-18 Fariborz Jahanian Radar 4674757 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Set darwin_constant_cfstrings. 2006-08-17 Fariborz Jahanian Radar 4590221 * c.opt (flag_objc_direct_dispatch): default to -1. * config/rs6000/darwin.h (OFFS_MSGSEND_FAST, OFFS_ASSIGNIVAR_FAST, HAVE_OFFS_MSGSEND_FAST): objective-c macro definitions. 2006-08-15 Stuart Hastings Radar 4106131 * gcc/config/i386/darwin.h (TARGET_DEEP_BRANCH_PREDICTION): Remove NOCONA. * gcc/testsuite/gcc.apple/execute/picbase-1.c (xsqrt): Replace references to __builtin functions with their portable equivalents. 2006-08-15 Stuart Hastings Radar 4424891 * gcc/config/i386/i386.c: APPLE LOCAL fixups. 2006-08-14 Stuart Hastings Radar 4424891 * gcc/config/i386/i386.md (fixuns_truncsi2) Call ix86_expand_convert_uns_2SI_sse. (floatdidf2): Call ix86_expand_convert_sign_DI2DF_sse. (floatunssidf2): New. * gcc/config/i386/i386-protos.h (ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): Update names to ix86_expand_convert_uns_DF2SI_sse, ix86_expand_convert_uns_SF2SI_sse, ix86_expand_convert_uns_DI2DF_sse. (ix86_expand_convert_uns_SI2DF_sse, ix86_expand_convert_sign_DI2DF_sse): New. * gcc/config/i386/i386.c (x86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): Update names to ix86_expand_convert_uns_DF2SI_sse, ix86_expand_convert_uns_SF2SI_sse, ix86_expand_convert_uns_DI2DF_sse. (ix86_expand_convert_uns_SI2DF_sse, ix86_expand_convert_sign_DI2DF_sse): New. (x86_emit_floatuns): Use new functions, tolerate SFmode target. 2006-08-14 Hui-May Chang Radar 4645709 * config/i386/i386.md (movstrictqi_and): Update the whole register for a byte operand. 2006-08-11 Caroline Tice ' Radar 4591706 * dwarf2out.c (dwarf2out_abstract_function): Make sure the abstract die, with DW_AT_inline, exists before adding the inlined call site information. (gen_inlined_subroutine_die): Change code so it no longer relies on matching function names to find correct call site information. Also, generate an internal error if it can't find the call site information for an inlined subroutine. 2006-08-11 Josh Conner Radar 4674871 * gcc.c (process_command): Increment n_infiles for the weak-l command-line option. 2006-08-04 Jon Ziegler Radar 4674934 Revert patch for 4424891 due to it breaking the build. 2006-08-04 Mike Stump Radar 4669052 * Makefile.in (LIBGCC_DEPS): Don't depend on LANGUAGES. (c-parse.y): Ensure that we don't rebuild. 2006-08-04 Stuart Hastings Radar 4106131 * config/i386/darwin.h (TARGET_DEEP_BRANCH_PREDICTION): Override default. 2006-07-31 Mike Stump Radar 4660333 * toplev.c (general_init): Don't try and catch SIGKILL. 2006-07-28 Stuart Hastings Radar 4424891 * gcc/config/i386/i386.md (fixuns_truncsi2): Update. (floatdidf2): Call ix86_expand_convert_sign_DI2DF_sse. (floatunssidf2): New. * config/i386/i386-protos.h (ix86_expand_convert_uns_DF2SI_sse, ix86_expand_convert_uns_SF2SI_sse, ix86_expand_convert_uns_DI2DF_sse): New names. (ix86_expand_convert_uns_SI2DF_sse, ix86_expand_convert_sign_DI2DF_sse): New. * config/i386/i386.c (ix86_expand_convert_uns_DF2SI_sse, ix86_expand_convert_uns_SF2SI_sse, ix86_expand_convert_uns_DI2DF_sse): New names. (ix86_expand_convert_uns_SI2DF_sse, ix86_expand_convert_sign_DI2DF_sse): New. 2006-07-28 Mike Stump Radar 4653181 * c-common.c (iasm_stmt): Don't clabber edx when edx is used as an operand. Ensure that it is an input output operand, if used. 2006-07-25 Stuart Hastings Radar 4643646 * gcc/config/i386/i386.c (ix86_expand_vector_init_duplicate): Omit TARGET_SSE check. 2006-07-26 Hui-May Chang Radar 4629695 * builtins.c (fold_builtin_1): Fix APPLE LOCAL markers. 2006-07-25 Hui-May Chang Radar 4629695 * builtins.c (fold_builtin_1): Check if the callee declaration is available. 2006-07-18 Fariborz Jahanian Radar 4592503 * c-decl.c (finish_struct): Check on illegal use of __weak on struct fields. * decl.c (start_decl): Check on illegal use of __weak on variable declarations. * stub-objc.c (objc_checkon_weak_attribute): New stub. * c-common.h (objc_checkon_weak_attribute): New decl. 2006-07-18 Mike Stump Radar 4636974 * c-parse.in: Remove extraneous commas on tokens. 2006-07-18 Hui-May Chang Radar 4430340 Backport from mainline: 2006-06-09 Mike Stump * c-typeck.c (c_begin_vm_scope): Fix file_scope processing. 2006-07-18 Stuart Hastings Radar 4538899 * gcc/tree-ssa-threadupdate.c (rediscover_loops_after_threading): Tweak another APPLE LOCAL comment. 2006-07-17 Eric Christopher Radar 4633168 Radar 4630878 * config/t-slibgcc-darwin (stmp-lipo): Remove. Rewrite libgcc_s.1.dylib dependencies. 2006-07-17 Stuart Hastings Radar 4538899 * gcc/tree-ssa-threadupdate.c (rediscover_loops_after_threading): Tweak APPLE LOCAL comment. 2006-07-14 Mike Stump Radar 4630911 * config/darwin-driver.c (is_x_file): Add. (resolve_path_to_executable): Use is_x_file instead. 2006-07-14 Fariborz Jahanian Radar 4621020 * c-parse.in: Added 'weak' attribute keyword for @property. * c-common.h: 'weak' related declarations. 2006-07-13 Stuart Hastings Radar 4538899 * config/rs6000/rs6000.c (SMALL_INT): Fix cast. * testsuite/gcc.dg/20060713-1.c: New. 2006-07-13 Jeff Law Stuart Hastings Radar 4538899 original FSF patch dated 2005-03-04 * basic-block.h (rediscover_loops_after_threading): Declare. * tree-ssa-dom.c: Include cfgloop.h. (tree_ssa_dominator_optimize): Discover loops and some basic properties. Remove forwarder blocks recreated by loop header canonicalization. Also mark backedges in the CFG. * tree-ssa-threadupdate.c: Include cfgloop.h (rediscover_loops_after_threading): Define. (struct local_info): New field, JUMP_THREADED. (prune_undesirable_thread_requests): New function. (redirect_edges): Clear EDGE_ABNORMAL. If edges were threaded then record that fact for the callers of redirct_edges. (thread_block): If BB has incoming backedges, then call prune_undesirable_thraed_requests. Note when we are going to have to rediscover loop information. Return a boolean indicating if any jumps were threaded. (thread_through_all_blocks): Bubble up boolean indicating if any jumps were threaded. * Makefile.in (tree-ssa-dom.o): Depend on cfgloop.h (tree-ssa-threadupdate.o): Similarly. 2006-07-14 Hui-May Chang Radar 4614623 * config/i386/i386.c (ix86_expand_vector_move): Set cfun->uses_vector to 1 to honor the alignment requirement of vector instructions. 2006-07-13 Mike Stump Radar 4515069 * c-common.c (iasm_print_operand): Arrange for local variables to not be promoted to static duration. * gimplify.c (gimplify_init_constructor): Likewise. * tree.h (DECL_IASM_DONT_PROMOTE_TO_STATIC): Add. (struct tree_decl): Add iasm_dont_promote_to_static. 2006-07-12 Eric Christopher Radar 4624477 * config/t-slibgcc-darwin: Import from mainline. Add x86_64 libgcc_s.1.dylib support. 2006-07-11 Eric Christopher Radar 4522154 * config/t-slibgcc-darwin: Add extra dependency to stmp-lipo. 2006-07-07 Fariborz Jahanian Radar 4585769 * config/darwin-protos.h: New declarations. * config/darwin.c (machopic_select_section): New sections for objc1 extensions. * config/darwin.h: Declaration of __class_ext, __property and __protocol_ext sections. 2006-06-29 Mike Stump Radar 4560301 * c-common.c (iasm_stmt): Fix argument numbers for repeated arguments. * config/asm.h: Likewise. 2006-06-26 Fariborz Jahanian Radar 4591909 * c-parse.in: New/modified grammar for new attributes in properties. (yylexname): Change to recognize new attribute terminals. * c-common.h (RID_DYNAMIC): New enum declaration. 2006-06-27 Fariborz Jahanian Radar 4600999 * config/darwin.c (darwin_handle_objc_gc_attribute): Fix main variant after attribute insertion. 2006-06-23 Mike Stump * config/i386/mmintrin.h: Simplifiy use of __nodebug__. * config/i386/xmmintrin.h: Likewise. * config/i386/emmintrin.h: Likewise. * config/i386/pmmintrin.h: Likewise. 2006-06-22 Geoffrey Keating Radar 4597080 * dwarf2out.c (dwarf2out_finish): Move output_line_info call after debug_info output. 2006-06-22 Mike Stump Radar 4336222 * c-decl.c (merge_decls): block-scope extern doesn't mean extern at file-scope. 2006-06-21 Geoffrey Keating Radar 4594955 * dwarf2out.c (struct source_loc_list): Use location_s directly, rather than source_locus. (dwarf2out_abstract_function): Use GC to allocate struct source_loc_list. (gen_inlined_subroutine_die): Update for changes to struct source_loc_list. 2006-06-20 Geoffrey Keating Radar 4594280 * dwarf2out.c (struct inlined_calls): Mark for GC; change field 'file_index' to be a 'struct dwarf_file_data *'. (inlined_calls_list): Mark for GC. (add_to_global_inlined_calls_list): Take a 'struct dwarf_file_data *' as the call_file parameter. Allocate struct inlined_calls using GC. Update for file data structure changes. (gen_inlined_subroutine_die): Update for file data structure changes. 2006-06-19 Mike Stump Radar 4336222 * tree.c (variably_modified_type_p): VM arguments don't make the type a VM type. 2006-06-18 Hui-May Chang Radar 4286110 * config/i386/emmintrin.h (_mm_set1_epi16): Redefine. 2006-06-18 Hui-May Chang Radar 4534621 * reload.c (find_reload_address) : Indexed ([reg+reg]) memory address for TImode is not supported on powerpc. Need to load [reg+reg] to a register first before addressing the memory. 2006-06-14 Mike Stump Radar 4586112 * configure.ac (HAVE_GAS_LITERAL16): Add. * config/darwin.c (HAVE_GAS_LITERAL16): Default to 0. * config/i386/t-darwin: Don't assume we can always build x86_64 multilib. 2006-06-12 Devang Patel Radar 4580289 * config/darwin-driver.c (resolve_symlink, resolve_path_to_executable, get_prog_name_len): New. (main): Find appropriate program. 2006-06-12 Devang Patel Radar 4208510 * doc/invoke.texi (fopt-diary): Document. * tree-vectorizer.c (debug.h): Include. (vectorize_loops): Add opt diary entry to note vectorized loops. * sdbout.c (sdb_debug_hooks): Add debug_nothing_od_msg_loc. * vmsdbgout.c (vmsdbg_debug_hooks): Same. * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Same. * debug.c (do_nothing_hooks): Same. (debug_nothing_od_msg_loc): New. * common.opt (fopt-diary): Add. * debug.h (debug_od_msg, debug_od_category): New. (gcc_debug_hooks): Add opt_diary_entry hook. (debug_nothing_od_msg_loc): New. * Makefile.in (tree-vectorizer.o): Depend on debug.h * dwarf2out.c (dwarf2out_od_entry, dwarf2out_od_category, dwarf2out_od_version, gen_new_od_entry_die): New. (dwarf_tag_name): Handle DW_TAG_GNU_OD_entry. (dwarf_attr_name): Handle DW_AT_GNU_OD_msg, DW_AT_GNU_OD_category and DW_AT_GNU_OD_version. (add_src_coords_attributes_locus): New. (add_src_coords_attributes): Use add_src_coords_attributes_locus. (dwarf2out_init): Record opt diary version. * dwarf2.h (dwarf_tag): Add DW_TAG_GNU_OD_entry. (dwarf_attributes): Add DW_AT_GNU_OD_msg, DW_AT_GNU_OD_category, DW_AT_GNU_OD_version. 2006-06-09 Fariborz Jahanian Radar 4084991 * fold-const.c (fold_cond_expr_with_comparison): Check for Objective-C++ same as C++. 2006-06-07 Hui-May Chang Radar 4571747 * rs6000.c (const struct bdesc_altivec_preds) Rename CODE_FOR_altivec_predicate_* to work with new descriptions in altivec.md. * altivec.md Expand nine altivec predicate vcmp* instructions. 2006-06-06 Hui-May Chang Radar 4314956 Import from mainline: 2005-08-31 Richard Henderson * config/i386/i386.c (ix86_function_ok_for_sibcall): Fix test for fp return matching. 2005-08-11 Richard Guenther PR target/23289 * config/i386/i386.c (ix86_function_ok_for_sibcall): Handle cases where we call to/from functions returning void. 2006-06-01 Fariborz Jahanian Radar 4570979 * config/darwin.h: Change certain 'type' of objc2 sections to 'regular' from 'literal_pointers' (reversing radar 4561264).. 2006-06-01 Hui-May Chang Radar 4469713 * i386.c (ix86_init_mmx_sse_builtins) The return type of builtin function, __builtin_ia32_vec_ext_v8hi, should be an unsigned instead of a signed type. 2006-05-30 Roger Sayle Stuart Hastings Radar 4561329 PR middle-end/26557 * stmt.c (emit_case_nodes): Handle the case where the index is a CONST_INT, where the comparison mode is specified by the index type. 2006-05-26 Paolo Bonzini Dale Johannesen Stuart Hastings Fragment from this FSF trunk patch: PR target/19653 * config/i386/i386.c (ix86_preferred_reload_class): Force using SSE registers (and return NO_REGS for floating-point constants) if math is done with SSE. 2006-05-26 Fariborz Jahanian radar 4563012 * config/darwin.c (darwin_construct_objc_string): Clear out the ggc'able cfstring_descriptor node. 2006-05-25 Fariborz Jahanian Radar 4561264 * config/darwin.h: Change certain 'type' of objc2 sections to 'literal_pointers' from 'regular'. 2006-05-18 Geoffrey Keating Radar 3334812 * config/darwin.h (NO_IMPLICIT_EXTERN_C): Define. 2006-05-23 Caroline Tice * passes.c (rest_of_compilation): Add apple local markers. 2006-05-18 Fariborz Jahanian Radar 4548636 (objc attributes on class) * c-parse.in: Add attribute non-terminal before AT_INTERFACE. * c-common.h (objc_start_class_interface): New argument added. * stub-objc.c (objc_start_class_interface): Ditto. 2006-05-19 Caroline Tice Radar 4509291 * Undo Radar 4509280 2006-05-18 Caroline Tice Radar 4548482 * sdbout.c (sdb_debug_hooks): Change do_nothing function for outlining_inline_function to have a second parameter, a source locus. * vmsdbgout.c (vmsdbgout_abstract_function): Add secord (NULL) argument to outlining_inline_function call. * debug.c (do_nothing_debug_hooks): Change do_nothing function for outlining_inline_function to have a second parameter, a source locus. (debug_nothing_tree_loc): New function. * debug.h (struct gcc_debug_hooks): Add a second parameter, a source_locus, to outlining_inling_function. (debug_nothing_tree_loc): New extern declaration. * tree-inline.c (expand_call_inline): Add second argument, input_location, to outlining_inline_function call. * dbxout.c (dbx_debug_hooks): Change do_nothing function for outlining_inline_function to have a second paramenter, a source_locus. (xcoff_debug_hooks): Likewise. * passes.c (rest_of_compilation): Add a second argument, NULL, to the call to outlining_inline_function. * dwarf2out.c (dwarf2out_abstract_function): Add second parameter, a source locus. Add code to check to see if a call site location was passed in, and if so to append the call site location to the list of inlined call sites attached to the abstract origin die. (struct source_loc_list): New struct. (struct die_struct): Add new field, inlined_call_sites. (struct inlined_calls): New struct. (inlined_calls_list): New global variable. (add_to_global_inlined_calls_list): New function. (gen_inlined_subroutine_die): Add second argument, NULL, to call to dwarf2out_abstract_function. Add code to look for appropriate call site record, either in list attached to abstract origin, or in global list, and if found, to add DW_AT_call_file and DW_AT_call_line to inlined subroutine die. (gen_decl_die): Add second argument, NULL, to calls to dwarf2out_abstract_function. (add_abstract_origin_attribute): Likewise. * c-decl.c (merge_decls): Likewise. * testsuite/gcc.apple/dwarf-inlining.c: New file (test). 2006-05-17 Fariborz Jahanian Radar 4550582 * c-parse.in: Reset objc_foreach_context to 0. 2006-05-16 Devang Patel Radar 4547137 * dbxout.c (dbxout_end_source_file): Check current_file. 2006-05-16 Fariborz Jahanian Radar 4547045 * c-gimplify.c (obj_reuse_bc_block): Removed. (objc_pop_label, objc_push_label): New. (gimplify_c_loop): Fix up foreach's innerloop break label. 2006-05-15 Fariborz Jahanian radar 4529765 * c-format.c (format_type_warning): Compensate for two hidden arguments in objc messaging when warning. 2006-05-11 Stuart Hastings Radar 4506977 * gcc/tree-cfg.c (fold_cond_expr_cond): Un-static it. * gcc/tree-flow.h (fold_cond_expr_cond) Extern it. * gcc/tree-optimize.c (execute_cleanup_cfg_post_optimizing): Call it. * gcc/config/rs6000/darwin.md (movdf_low_si): Rewrite to avoid pic-base reference. * gcc/config/rs6000/rs6000.md (zero_reg_mem_operand): New predicate. (extenddftf2_internal): Use it. 2006-05-09 Fariborz Jahanian radar 4529200 * c-parse.in (yylexname): Add '[' as another token that can follow 'in'. 2006-05-08 Fariborz Jahanian radar 4535676 * config/darwin-protos.h: New declarations. * config/darwin.c (machopic_select_section): Code to generate new section __super_refs. * config/darwin.h: Macros for new section declarations. 2006-05-05 Fariborz Jahanian radar 4533974 - ObjC new protocol * c-parse.in: New grammar production. * c-common.h: New declarations. * stub-objc.c (objc_protocol_implementation): New stub. * config/darwin-protos.h: New declarations. * config/darwin.c (machopic_select_section): Code to generate new sections __protocol_list and __protocol_refs. * config/darwin.h: Macros for new section declarations. 2006-05-01 Fariborz Jahanian Radar 4512786 * doc/invoke.texi (fobjc-sjlj-exceptions): Replaces fobjc-exceptions. 2006-04-28 Fariborz Jahanian Radar 4512786 * doc/invoke.texi (fobjc-exceptions): Say it is on by default. 2006-04-26 Fariborz Jahanian Radar 3803157 (method attributes) * c-parse.in: Add grammar support for declaring attribute for objc methods. * c-common.c (handle_deprecated_attribute): Recognize objc methods as valid declarations. (handle_unavailable_attribute): Ditto. * c-common.h: Bunch of new extern declarations. * stub-objc.c (objc_add_method_declaration, objc_start_method_definition): Added new argument. (objc_method_decl): New stub. 2006-04-13 Devang Patel Radar 4503682 * c-lex.c (c_lex_with_flags): CPP_BINCL and CPP_EINCL tokens do not block PCH. 2006-04-12 Devang Patel Radar 4509280 * tree-vectorizer.c (vectorize_loops): Print vectorized loop count in opt diary only if count is more then zero. * flags.h (opt_diary_filename): New. * tree-pass.h (TODO_proposal_1): New. * tree-sra.c (pass_sra): Add TODO_proposal_1 in todo_flags_finish. * tree-ssa-forwprop.c (pass_forwprop): Same. * tree-ssa-dce.c (pass_dce, pass_cd_dce): Same. * tree-ssa-ccp.c (pass_ccp): Same. * tree-ssa-loop.c (pass_lim, pass_unswitch, pass_vectorize, pass_linear_transform, pass_loop_prefetch, pass_iv_canon, pass_complete_unroll, pass_iv_optimize): Same. * common.opt (fopt-diary-proposal-1): New. * toplev.c (opt-diary.h): Include. (opt_diary_filename): new. (do_compile): Open and close opt diary. * tree-optimize.c (opt-diary.h): Include. (execute_one_pass): Redir dump_file to opt diary and restore it back. Insert annotation header tag in opt diary. * Makefile.in (opt-diary.o): New rule. (tree-cfg.o, tree-optimize.o, toplev.o): Depend on opt-diary.h * tree-cfg.c (opt-diary.h): Include. (dump_function_to_file): Do not dump function into opt diary. * opts.c (common_handle_option): Handle OPT_fopt_diary_proposal_1_. * tree-ssa-opearnds. (get_indirect_ref_operands): Suppress flow sensitive alias info dump in optimization diary. * opt-diary.c: New file. * opt-diary.h: New file. 2006-04-13 Fariborz Jahanian Radar 4502236 * c-parse.in (c99_block_lineno_labeled_stmt): Pass same flags to c_end_compound_stmt to match c_begin_compound_stmt. 2006-04-12 Fariborz Jahanian Radar 4507230 * c-common.h (objc_type_valid_for_messaging): Declare. * stub-objc.c (objc_type_valid_for_messaging): New stub. 2006-04-06 Fariborz Jahanian Radar 4436866 (Missing copies attribute) * c-parse.in: Add grammer for 'copies' attribute. * c-common.h (RID_COPIES): New enumerator. 2006-04-04 Fariborz Jahanian Radar 4498373 (Metadata for objective-c properties) * config/darwin.c (machopic_select_section): Put metadata name/attribute strings in .data section. 2006-03-29 Fariborz Jahanian Radar 4493912 * config/darwin.c (darwin_init_cfstring_builtins): Make type of CFString.length 'long'. (darwin_init_cfstring_builtins): Initialize CFString.length to a 'long' value. 2006-03-27 Fariborz Jahanian Radar 4133425 * c-common.h (objc_diagnose_private_ivar): New decl. * stub-objc.c (objc_diagnose_private_ivar): New stub. * c-decl.c (undeclared_variable): Issue disnostic on private 'ivar' access. 2006-03-27 Fariborz Jahanian Radar 4491608 * c-typeck.c (convert_arguments): function name must come from 'selector' when diagnosing 'too many arguments'. 2006-03-24 Devang Patel Radar 4485223 * opts.c (decode_options): Issue warning if -ftree-vectorize overrides -fno-strict-aliasing. 2006-03-23 Fariborz Jahanian Radar 4193359 * c-typeck.c (convert_for_assignment): Remove Objective-C EH machinery 'volatile' qualifier before doing type comparison. 2006-03-22 Geoffrey Keating Radar 4255172 * config/rs6000/darwin.h (PEG_ALIGN_FOR_MAC68K): Move to here from config/darwin.h. Don't test TARGET_ALTIVEC. * config/darwin.h [RS6000_VECTOR_ALIGNMENT] (PEG_ALIGN_FOR_MAC68K): Move this definition to config/rs6000/darwin.h. * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Don't define Altivec PIM macros unless -faltivec. * config/rs6000/rs6000.c (rs6000_override_options): Don't allow special Altivec vector initialisation unless -faltivec. 2006-03-22 Fariborz Jahanian Radar 4436866 * c-parse.in: Add all the needed grammar and lexical support for objective-c @property. * c-typeck.c (build_component_ref): Call objc_build_getter_call. (build_modify_expr): Call objc_build_setter_call. * tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): New macro. * c-common.h: Several new declarations in support of objective-c's @property. * stub-objc.c (objc_set_property_attr, objc_add_property_variable, objc_build_getter_call, objc_build_setter_call): New stubs. 2006-03-16 Fariborz Jahanian Radar 4293709 * c-typeck.c (digest_init): Check for protocol match in initialization of two otherwise matching pointers. 2006-03-13 Fariborz Jahanian Radar 4472881 * c-parse.in: Change grammar code as needed to allow declaration in objective-c's foreach for-loop loop header. 2006-03-08 Fariborz Jahanian Radar 4468456 * c-gimplify.c (gimplify_c_loop): 'continue' label is generated as in normal case and belongs to current loop. 2006-03-07 Fariborz Jahanian Radar 4468498 * c-parse.in (for_objc_collection): Add grammar for non-declarative form of foreach-statement. 2006-02-28 Fariborz Jahanian Radar 4441049 * c-common.h (objc_v2_bitfield_ivar_bitpos): New decl. * expr.h (objc_v2_bitfield_ivar_bitpos): New decl. * stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub. * expr.c (get_inner_reference): Compute ivar's bitfield bit offset. 2006-02-28 Devang Patel Ziemowit Laski Radar 4137741 * Makefile.in (c-lex.o): Revert langhooks.h dependency. (langhooks.o): Revert debug.h dependency. * c-lex.c: Do not include langhooks.h. (fe_file_change): Revert lang_hooks calls; issue debug_hooks calls only if defer_file_change_debug_hooks flag is cleared. (c_lex_with_flags): Propagate line number information for CPP_BINCL and CPP_EINCL tokens. * langhooks-def.h: Revert Radar 4133801 changes. * langhooks.c: Likewise. * langhooks.h: Likewise. 2006-02-15 Fariborz Jahanian Radar 4445586 * c-common.def (DO_STMT): Takes an extra argument. 2006-02-15 Fariborz Jahanian Radar 4441551 * c-parse.in (component_decl_list2): Issue warning for @defs as needed. * c-typeck.c (build_c_cast): Call diagnose_selector_cast. * common.opt: New -Wobjc2 option. * c-common.h (diagnose_selector_cast): New decl. * stub-objc.c (diagnose_selector_cast): New stub. * config/darwin-c.c (darwin_cpp_builtins): Define __OBJC2__ for objc's new abi. 2006-02-14 Fariborz Jahanian Radar 4441049 * c-common.h (objc_v2_component_ref_field_offset): New decl. * stub-objc.c (objc_v2_component_ref_field_offset): New stub. * expr.c (component_ref_field_offset): May get the bitfield byte-offset from a variable for the new objc abi. * expr.h (objc_v2_component_ref_field_offset): New decl. * config/darwin.c (machopic_select_section): Explicitly use .data section for global class/metaclass metadata. 2006-02-08 Fariborz Jahanian Radar 4437670 (new abi stuff) * common.opt: New -fobjc-nilcheck option. * config/darwin-protos.h: Stuff for new __OBJC2, __protocol section. * config/darwin.c: Ditto. * config/darwin.h: Ditto. 2006-02-07 Fariborz Jahanian Radar 4426814 * c-parse.in (cast_expr): Minor fix. 2006-02-02 Fariborz Jahanian Radar 4426814 * c-parse.in (cast_expr): generate objc_read_weak call on each __weak object in the expession. * c-typeck.c (build_modify_expr): Undo the call to objc_read_weak on LHS expression. * c-objc-common.c (c_objc_common_truthvalue_conversion): Generate objc_read_weak call before generating tree for !exp, etc. * c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl. * stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs. 2006-01-30 Fariborz Jahanian Radar 4386773 * c-common.h (RID_AT_OPTIONAL, RID_AT_REQUIRED): Two new objective-c keywords. (objc_set_method_opt): New declaration. * stub-objc.c (objc_set_method_opt): New stub. 2006-01-26 Devang Patel Radar 4388369 * dbxout.c (dbxout_complete_type): Handle internally volatized types for Objective-C EH mechanism. 2006-01-23 Fariborz Jahanian Radar 4391705 * config/darwin-protos.h (objc_v2_selector_refs_section): New declaration. * config/darwin.c: use section __OBJC2,__selector_refs for @selector expressions in new-ABI and hybrid-ABI. * config/darwin.h: Initialization of __OBJC2,__selector_refs section and inclusion of hybrid abi for __OBJC2 sections initializations. 2006-01-18 Fariborz Jahanian Radar 4294910 * c-parse.in: Add grammar supprt for the foreach initialization part. * c-gimplify.c (obj_reuse_bc_block): New function. (gimplify_c_loop): Has a new argument to recgognize nested do-while statement part of foreach-statement synthesis. Use existing continue/break labels for this loop. * c-common.h (DO_FOREACH): New field for a do-while statement. (objc_finish_foreach_loop, objc_build_component_ref, objc_build_foreach_components): New declarations. * stub-objc.c: New stubs. 2006-01-18 Fariborz Jahanian Radar 4391705 * config/darwin-protos.h: New declarations for new sections. * config/darwin.c: Generate new symbols in OBJC2 segment in new sections __category_list, __class_refs, __nonlazy_class and __nonlazy_catgry. * config/darwin.h: Define and initialize the above new sections. 2006-01-02 Fariborz Jahanian Radar 4391705 * config/darwin.h: Change segment and section name of class meta data. (objc_section_init): Initialize OBJC2 sections for new abi only. 2005-12-15 Fariborz Jahanian Radar 4229905 * c-typeck.c (build_conditional_expr): Call objc_have_common_type when looking for objective-c common pointer types. * c-common.h objc_have_common_type): New declaration. * stub-objc.c (objc_have_common_type): New stub. 2005-12-06 Fariborz Jahanian Radar 4360146 * c-common.h (objc_v2_build_ivar_ref): New declaration. * stub-objc.c (objc_v2_build_ivar_ref): New stub. * c-typeck.c (build_component_ref): Generate the new ivar reference tree. 2006-07-05 Hui-May Chang * doc/extend.texi: Fixed the unmatched APPLE LOCAL marker introduced by the previous checkin for radar 4395773. 2006-06-26 Hui-May Chang Radar 4395773 * doc/extend.texi: Document SSE2 built-in functions and other new functions. 2006-06-26 Eric Christopher Radar 4512244 * config/t-slibgcc-darwin (SHLIB_SUFFIX): Depend only on ppc64 for suffix. 2006-06-14 Mike Stump Radar 4586112 * configure.ac (HAVE_GAS_LITERAL16): Add. * config/darwin.c (HAVE_GAS_LITERAL16): Default to 0. * config/i386/t-darwin: Don't assume we can always build x86_64 multilib. 2006-06-26 Eric Christopher Radar 4601627 * config/t-slibgcc-darwin (SHLIB_MAPFILES): Revert previous patch. 2006-06-26 Eric Christopher Radar 4601584 * config.gcc: Revert part of previous patch. * config/t-darwin: Ditto. 2006-06-23 Eric Christopher Radar 4476324 * config/i386/i386.c (standard_sse_mode_p): New. (standard_sse_constant_p): Use. * config/i386/predicates.md (vector_move_operand): Revert patch for 4283414. (nonimmediate_or_sse_const_operand): Define. * config/i386/sse.md (*mov_internal): Use. (*movv4sf_internal): Ditto. (*movv2df_internal): Ditto. 2006-06-23 Mike Stump Radar 4591284 * config/i386/tmmintrin.h: Add __always_inline__ and __nodebug__. 2006-06-22 Eric Christopher Radar 4512244 * config.gcc (*-*-darwin*): Add crt3.o to extra_parts. (powerpc-*-darwin*): Add ${extra_parts}. * config/t-darwin (EXTRA_MULTILIB_PARTS): Remove. * config/t-slibgcc-darwin: Rewrite libgcc_s.1.dylib handling. 2006-06-22 Eric Christopher Radar 4598165 * config/i386/i386.c (ix86_preferred_reload_class): Bring in rest of patch for 3501055 from mainline. * config/i386/i386.h (IS_STACK_MODE): Ditto. 2006-06-22 Mike Stump Radar 4535822 * c-common.c (iasm_stmt): Update for new assembler. (iasm_print_operand): Likewise. * config/asm.h: Likewise. * config/i386/i386.c (iasm_x86_canonicalize_operands): Likewise. * config/i386/i386.h (TARGET_IASM_OP_CONSTRAINT): Fix constraints for lldt and ltr. 2006-06-05 Hui-May Chang Radar 4469713 * i386.c (ix86_init_mmx_sse_builtins) The return type of builtin function, __builtin_ia32_vec_ext_v8hi, should be an unsigned instead of a signed type. 2006-06-05 Eric Christopher Radar 4560266 * config/i386/darwin.h (OPTION_DEFAULT_SPECS): Remove port specific version. 2006-05-30 Eric Christopher Radar 4555787 * config/darwin-protos.h (literal16_section): Prototype. * config/darwin.h (EXTRA_SECTION): Define. (EXTRA_SECTION_FUNCTIONS): Define. * config/darwin.c (machopic_select_section): Use. Conditionalize on TARGET_64BIT. (machopic_select_rtx_section): Ditto. (darwin_set_section_for_var_p): Ditto. 2006-05-26 Paolo Bonzini Dale Johannesen Stuart Hastings Fragment from this FSF trunk patch: PR target/19653 * config/i386/i386.c (ix86_preferred_reload_class): Force using SSE registers (and return NO_REGS for floating-point constants) if math is done with SSE. 2006-05-11 Stuart Hastings Radar 4525731 * gcc/config/i386/i386.c (ix86_handle_cconv_attribute): Diagnose force_align_arg_pointer versus regparm collisions. (ix86_function_regparm): Reduce number of regparms available when force_align_arg_pointer in use. 2006-05-10 Eric Christopher H.J. Lu Radar 4424835 * config.gcc (i[34567]86-*-*): Add tmmintrin.h to extra_headers. (x86_64-*-*): Likewise. * config/i386/i386.c (pta_flags): Add PTA_MNI. (override_options): Check MNI. (ix86_builtins): Add IX86_BUILTIN_PHADDW, IX86_BUILTIN_PHADDD, IX86_BUILTIN_PHADDSW, IX86_BUILTIN_PHSUBW, IX86_BUILTIN_PHSUBD, IX86_BUILTIN_PHSUBSW, IX86_BUILTIN_PMADDUBSW, IX86_BUILTIN_PMULHRSW, IX86_BUILTIN_PSHUFB, IX86_BUILTIN_PSIGNB, IX86_BUILTIN_PSIGNW, IX86_BUILTIN_PSIGND, IX86_BUILTIN_PALIGNR, IX86_BUILTIN_PABSB, IX86_BUILTIN_PABSW, IX86_BUILTIN_PABSD, IX86_BUILTIN_PHADDW128, IX86_BUILTIN_PHADDD128, IX86_BUILTIN_PHADDSW128, IX86_BUILTIN_PHSUBW128, IX86_BUILTIN_PHSUBD128, IX86_BUILTIN_PHSUBSW128, IX86_BUILTIN_PMADDUBSW128, IX86_BUILTIN_PMULHRSW128, IX86_BUILTIN_PSHUFB128, IX86_BUILTIN_PSIGNB128, IX86_BUILTIN_PSIGNW128, IX86_BUILTIN_PSIGND128, IX86_BUILTIN_PALIGNR128, IX86_BUILTIN_PABSB128, IX86_BUILTIN_PABSW128 and IX86_BUILTIN_PABSD128. (bdesc_2arg): Add MNI. (bdesc_1arg): Likewise. (ix86_init_mmx_sse_builtins): Support MNI. (ix86_expand_builtin): Likewise. * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Likewise. * config/i386/i386.md (UNSPEC_PSHUFB): New. (UNSPEC_PSIGN): Likewise. (UNSPEC_PALIGNR): Likewise. Include mmx.md before sse.md. * config/i386/i386.opt: Add -mmni. * config/i386/sse.md (mni_phaddwv8hi3): New pattern for MNI. (mni_phaddwv4hi3): Likewise. (mni_phadddv4si3): Likewise. (mni_phadddv2si3): Likewise. (mni_phaddswv8hi3): Likewise. (mni_phaddswv4hi3): Likewise. (mni_phsubwv8hi3): Likewise. (mni_phsubwv4hi3): Likewise. (mni_phsubdv4si3): Likewise. (mni_phsubdv2si3): Likewise. (mni_phsubswv8hi3): Likewise. (mni_phsubswv4hi3): Likewise. (mni_pmaddubswv8hi3): Likewise. (mni_pmaddubswv4hi3): Likewise. (mni_pmulhrswv8hi3): Likewise. (mni_pmulhrswv4hi3): Likewise. (mni_pshufbv16qi3): Likewise. (mni_pshufbv8qi3): Likewise. (mni_psign3): Likewise. (mni_psign3): Likewise. (mni_palignrti): Likewise. (mni_palignrdi): Likewise. (mni_pabs2): Likewise. (mni_pabs2): Likewise. * config/i386/tmmintrin.h: New file. * doc/extend.texi: Document MNI built-in functions. * doc/invoke.texi: Document -mmni/-mno-mni switches. 2006-05-10 Eric Christopher Radar 4541111 * config/i386/i386.c (override_options): Disable -fomit-frame-pointer. 2005-05-06 Eric Christopher Radar 4539437 * config/i386/i386.c (processor_alias_table): Remove PTA_SSE3 for nocona. 2006-05-05 Eric Christopher Nate Begeman Radar 4434601 Backport from mainline: 2006-01-19 Jan Hubicka H.J. Lu Evandro Menezes * invoke.texi (generic): Document (i686) Update. * config.gcc: Make x86_64-* and i686-* default to generic tuning. * i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC, TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros. (x86_use_incdec, x86_pad_returns): New variables (TARGET_CPU_DEFAULT_generic): New constant (TARGET_CPU_DEFAULT_NAMES): Add generic. (enum processor_type): Add generic32 and generic64. * i386.md (cpu attribute): Add generic32/generic64 (movhi splitter): Behave sanely when both partial_reg_dependency and partial_reg_stall are set. (K8 splitters): Enable for generic as well. * predicates.md (incdec_operand): Use TARGET_INCDEC (aligned_operand): Avoid memory mismatch stalls. * athlon.md: Enable for generic64, new patterns for 128bit moves. * ppro.md: Enable for generic32 * i386.c (generic64_cost, generic32_cost): New. (m_GENERIC32, m_GENERIC64, m_GENERIC): New macros. (x86_use_leave): Enable for generic64. (x86_use_sahf, x86_ext_80387_constants): Enable for generic32. (x86_push_memory, x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop, x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, x86_partial_reg_dependency, x86_memory_mismatch_stall, x86_accumulate_outgoing_args, x86_prologue_using_move, x86_epilogue_using_move, x86_arch_always_fancy_math_387, x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule): Enable for generic. (x86_use_incdec, x86_pad_returns): New. (override_options): Add generic32 and generic64, translate "generic" to generic32/generic64 and "i686" to "generic32", refuse "generic32"/"generic64" as arch target. (ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon. (ix86_reorg): Honor PAD_RETURNS. 2006-05-02 Eric Christopher Radar 4534752 * config/i386/i386.h (MACHOPIC_UNDEFINED_FUNCTION): Remove define. * config/i386/i386.c (output_pic_addr_const): Bracket machopic routines with TARGET_MACHO. * config/darwin.h (MACHOPIC_INDIRECT): Undef before defining. (MACHOPIC_PURE): Ditto. 2006-05-02 Eric Christopher Radar 4534752 * config/rs6000/rs6000.c (reset_optimization_options): Bracket by TARGET_MACHO. * config/i386/i386.c (reset_optimization_options): Ditto. (ix86_file_end): Ditto. * config/i386/i386.h (MACHOPIC_INDIRECT): Define to 0. (MACHOPIC_UNDEFINED_FUNCTION): Ditto. (MACHOPIC_PURE): Ditto. 2006-05-02 Eric Christopher Radar 4533898 * global.c (flag_cw_asm_blocks): Change to flag_iasm_blocks. * config/i386/i386.h (IASM_VALID_PIC): Move... * config/i386/darwin.h: ... here. 2006-05-01 Eric Christopher Radar 4533757 * global.c (flag_cw_asm_blocks): Declare. 2006-04-10 Eric Christopher Radar 4467352 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Disable mdynamic-no-pic for 64-bit. 2006-04-04 Eric Albert Radar 4502551 * config/darwin.h (PREFERRED_DEBUGGING_TYPE): Default to stabs for all configurations. 2006-03-27 Eric Christopher Radar 4446385 * config/darwin-driver.c (get_arch_name): Rewrite. 2006-06-14 Geoffrey Keating Radar 4587142 * dwarf2out.c (dwarf_file_data): New. (enum dw_val_class): Add dw_val_class_file. (struct dw_val_struct): Add val_file. (file_table): Change to a hash table. (file_table_emitted): Delete. (file_table_last_lookup_index): Delete. (emitcount): Delete. (last_emitted_file): New. (lookup_filename): Change prototype to return a struct dwarf_file_data. (init_file_table): Delete. (maybe_emit_file): Change prototype to take a struct dwarf_file_data. (AT_addr): Add comment. (add_AT_file): New. (AT_file): New. (get_AT_file): New. (print_die): Handle dw_val_class_file. (print_dwarf_line_table): Update for new file table structure. (attr_checksum): Do checksum a filename. (same_dw_val_p, same_attr_p): Do compare a filename. (size_of_die): Handle dw_val_class_file. (value_format): Likewise. (output_die): Likewise. Also, call maybe_emit_file here. (struct file_info): Constify filenames. Make file_idx a pointer to a struct dwarf_file_data. (struct dir_info): Constify directory names. Remove 'used' field. (struct file_name_acquire_data): New. (file_name_acquire): New. (output_file_names): Modify to handle new file data structures. (add_src_coords_attributes): Use add_AT_file. (add_call_src_coords_attributes): Likewise. (dwarf2out_imported_module_or_decl): Likewise. (gen_subprogram_die): Modify for new file data structures. (gen_variable_die): Likewise. (file_table_eq): New. (file_table_hash): New. (file_table_last_lookup): New. (lookup_filename): Rewrite to handle new file data structures. (maybe_emit_file): Rewrite to handle new file data structures. (dwarf2out_source_line): Always call lookup_filename and maybe_emit_file. (dwarf2out_init): Create file_table here. (prune_unused_types_walk_attribs): Don't call maybe_emit_file here. (file_table_relative_p): New. (dwarf2out_finish): Change detection of relative filenames to work with new file data structures. 2006-06-05 Roger Sayle Stuart Hastings Radar 4561329 PR middle-end/26557 * stmt.c (emit_case_nodes): Handle the case where the index is a CONST_INT, where the comparison mode is specified by the index type. 2006-05-30 Mike Stump Rarar 4527214 * c-common.c (iasm_stmt): Fix clobbers for mul/imul/div/idiv. 2006-05-18 Mike Stump Radar 4501833 * c-common.c (iasm_delete_blr): Add. (iasm_saw_frfree_blr): Add. (iasm_ensure_blr_last): Add. (iasm_stmt): Add logic to ensure that blr follows frfree and that blr is last. Manage line numbes better. Only allow fralloc and frfree on ppc. * c-parse.in (compstmt_nostart): Use iasm_end_block to end inline assmebly blocks. (iasm_compstmt): Likewise. (iasm_compstmt_nostart): Likewise. * config/asm.h (iasm_end_block): Add. * function.c (assign_parm_setup_reg): Don't spill to memory for a frameless asm function. 2006-05-03 Mike Stump Radar 4529651 * doc/invoke.texi (Optimize Options): Improve -fast documentation a little. 2006-05-01 Stuart Hastings Radar 4222119 * gcc/doc/invoke.texi: Document -mlong-branch. 2006-04-27 Eric Christopher Radar 4454599 Radar 4481146 * stor-layout.c (update_alignment_for_field): Unconditionalize ms_bitfield_layout_p code. Handle non-bitfield fields. Remove extra alignment code. (place_field): Don't realign if ms_bitfield_layout_p. Unconditionalize ms_bitfield_layout_p code. Rewrite handling of structure fields. Rewrite bitfield reversal handling. 2006-04-27 Hui-May Chang Radar 4314956 Revert 2006-04-26 patch. 2006-04-27 Mike Stump Radar 4529992 * c-common.c (pointer_int_sum): Only form ARRAY_REF for ARRAY_TYPEs. (iasm_maybe_force_mem): Ensure that we only use DECL_HARD_REGISTER on VAR_DECLs. * c-typeck.c (iasm_c_build_component_ref): Move [eax].16 code up, to avoid calling lookup_name on [eax]. 2006-04-26 Hui-May Chang Radar 4491613 * loop.c (general_induction_var) : If an induction variable may trap, it shouldn't be a general induction variable. 2006-04-26 Hui-May Chang Radar 4314956 Import from mainline: 2005-08-31 Richard Henderson * config/i386/i386.c (ix86_function_ok_for_sibcall): Fix test for fp return matching. 2006-04-26 Mike Stump Radar 4505697 * config/i386/i386.c (iasm_x86_canonicalize_operands): Fix movzx handling. 2006-04-26 Mike Stump Radar 4505741 * c-common.c (iasm_print_operand): Fix .machine all for ppc64. (iasm_addr): Add. (pointer_int_sum): Handle ptr+4 correctly. (iasm_stmt): Set up the line number correctly for C. (IASM_VALID_PIC): Add. (iasm_type_for): Move to i386.h (iasm_maybe_force_mem): Add. (iasm_print_operand): Split code out to new functions. Add warnings for non-pic code when in PIC mode. Add ARRAY_REF handling. * i386/i386-protos.h (iasm_raise_reg): Add * i386/i386.c: Rename x86_canonicalize_operands to iasm_x86_canonicalize_operands. (iasm_type_for): Add. (iasm_raise_reg): Add. (iasm_default_conv): Add. (iasm_is_offset): Imrove support for ADDR_EXPR. (iasm_canonicalize_bracket_1): Handle constants better. Ensure that stack based addresses occur as one argument to the asm. Ensure that expressions form adderess exrepssions. (iasm_indirect): Add. (iasm_add): Add. (iasm_canonicalize_bracket): Split out code. Ensure that stack based addresses occur as one argument to the asm. Ensure that expressions form adderess exrepssions. (iasm_x86_canonicalize_operands): Handle ARRAY_REF. (iasm_warn_extra_reg): Add. (iasm_print_op): Don't indirect here. Handle address constant memory expressions. Add warnings for extra registers. Handle ADDR_EXPR better. * i386/i386.h (IASM_VALID_PIC): Add. Rename cw_ to iasm_: * c-common.c: Rename flag_cw_asm_blocks to flag_iasm_blocks. Rename cw_asm_states to iasm_states. Rename cw_asm_state to iasm_state. Rename cw_asm_in_decl to iasm_in_decl. Rename inside_cw_asm_block to inside_iasm_block. Rename cw_asm_at_bol to iasm_at_bol. Rename cw_asm_in_operands to iasm_in_operands. Rename cw_split_next to iasm_split_next. Rename cw_asm_buffer to iasm_buffer. Rename cw_asm_labels to iasm_labels. Rename cw_asm_labels_uniq to iasm_labels_uniq. Rename cw_asm_identifier to iasm_identifier. Rename cw_memory_clobber to iasm_memory_clobber. Rename get_cw_asm_label to iasm_get_label. Rename cw_get_mode to iasm_get_mode. Rename cw_ptr_conv to iasm_ptr_conv. Rename cw_build_bracket to iasm_build_bracket. Rename cw_asm_default_function_conversion to iasm_default_function_conversion. Rename cw_is_pseudo to iasm_is_pseudo. Rename cw_op_constraint to iasm_op_constraint. Rename TARGET_CW_OP_CONSTRAINT to TARGET_IASM_OP_CONSTRAINT. Rename cw_op_comp to iasm_op_comp. Rename TARGET_CW_REORDER_ARG to TARGET_IASM_REORDER_ARG. Rename CW_SYNTH_CONSTRAINTS to IASM_SYNTH_CONSTRAINTS. Rename cw_constraint_for to iasm_constraint_for. Rename cw_process_arg to iasm_process_arg. Rename CW_CANONICALIZE_OPERANDS to IASM_CANONICALIZE_OPERANDS. Rename CW_IS_PREFIX to IASM_IS_PREFIX. Rename CW_PRINT_PREFIX to IASM_PRINT_PREFIX. Rename cw_is_prefix to iasm_is_prefix. Rename cw_num_constraints_1 to iasm_num_constraints_1. Rename cw_num_constraints to iasm_num_constraints. Rename cw_set_constraints_1 to iasm_set_constraints_1. Rename cw_set_constraints to iasm_set_constraints. Rename CW_MAX_CLOBBERS to IASM_MAX_CLOBBERS. Rename cw_op_clobber to iasm_op_clobber. Rename cw_op_clobber_comp to iasm_op_clobber_comp. Rename TARGET_CW_EXTRA_CLOBBERS to TARGET_IASM_EXTRA_CLOBBERS. Rename cw_extra_clobbers to iasm_extra_clobbers. Rename cw_asm_stmt to iasm_stmt. Rename cw_asm_field_offset to iasm_field_offset. Rename cw_simple_expr to iasm_simple_expr. Rename cw_asm_expr_val to iasm_expr_val. Rename TARGET_CW_PRINT_OP to TARGET_IASM_PRINT_OP. Rename CW_IMMED_PREFIX to IASM_IMMED_PREFIX. Rename CW_OFFSET_PREFIX to IASM_OFFSET_PREFIX. Rename CW_HIDE_REG to IASM_HIDE_REG. Rename CW_SEE_IMMEDIATE to IASM_SEE_IMMEDIATE. Rename CW_SEE_NO_IMMEDIATE to IASM_SEE_NO_IMMEDIATE. Rename CW_FUNCTION_MODIFIER to IASM_FUNCTION_MODIFIER. Rename cw_force_constraint to iasm_force_constraint. Rename print_cw_asm_operand to iasm_print_operand. Rename cw_asm_get_register_var to iasm_get_register_var. Rename cw_asm_reg_name to iasm_reg_name. Rename cw_asm_label to iasm_label. Rename cw_get_identifier to iasm_get_identifier. Rename clear_cw_asm_labels to iasm_clear_labels. Rename cw_ha16 to iasm_ha16. Rename cw_hi16 to iasm_hi16. Rename cw_lo16 to iasm_lo16. Rename cw_do_id to iasm_do_id. Rename cw_asm_build_register_offset to iasm_build_register_offset. Rename cw_asm_entry to iasm_entry. * c-lex.c: Likewise Rename cw_skip_to_eol to iasm_skip_to_eol. Rename cw_asm_saved_token to iasm_saved_token. Rename cw_insert_saved_token to iasm_insert_saved_token. * c-parse.in: Likewise. Rename CW_ASM_KEYWORD to IASM_ASM_KEYWORD. Rename CW_ASM_BOL to IASM_BOL. Rename CW_ASM_EOL to IASM_EOL. Rename cw_asm_lineno to iasm_lineno. Rename CW_SEE_OPCODE to IASM_SEE_OPCODE. Rename c_parse_cw_maybe_prefix to c_parse_iasm_maybe_prefix. Rename cw_save_location to iasm_save_location. Rename cw_asm_stmt_nobol to iasm_stmt_nobol. Rename cw_asm_stmt_list to iasm_stmt_list. Rename cw_maybe_comment to iasm_maybe_comment. Rename cw_identifier to iasm_identifier. Rename cw_identifier1 to iasm_identifier1. Rename cw_maybe_prefix to iasm_maybe_prefix. Rename single_cw_asm_stmt to single_iasm_stmt. Rename cw_asm_stmts to iasm_stmts. Rename cw_asm_compstmt_start to iasm_compstmt_start. Rename cw_asm_compstmt to iasm_compstmt. Rename cw_asm_compstmt_nostart to iasm_compstmt_nostart. Rename cw_asm_compstmt_contents_nonempty to iasm_compstmt_contents_nonempty. Rename cw_asm_operands to iasm_operands. Rename cw_nonnull_asm_operands to iasm_nonnull_operands. Rename cw_asm_operand to iasm_operand. Rename cw_asm_expr_no_commas to iasm_expr_no_commas. Rename cw_asm_unary_expr to iasm_unary_expr. Rename cw_asm_primary to iasm_primary. Rename cw_asm_specbit to iasm_asm_specbit. Rename cw_asm_typename_or_reserved to iasm_typename_or_reserved. Rename cw_asm_c_build_component_ref to iasm_c_build_component_ref. * config/asm.h: Likewise. Rename cw_asm_none to iasm_none. Rename cw_asm_decls to iasm_decls. Rename cw_asm_asm to iasm_asm. Rename CW_MAX_ARG to IASM_MAX_ARG. Rename TARGET_CW_EXTRA_INFO to TARGET_IASM_EXTRA_INFO. Rename cw_md_Extra_info to iasm_md_Extra_info. Rename cw_md_extra_info to iasm_md_extra_info. * config/darwin-protos.h: Likewise. Rename CW_ASM_SPECIAL_LABEL to IASM_SPECIAL_LABEL. * config/darwin.c: Likewise. Rename darwin_cw_asm_special_label to darwin_iasm_special_label. * i386/darwin.h: Likewise. Rename CW_ASM_REGISTER_NAME to IASM_REGISTER_NAME. * i386/i386-protos.h: Likewise. * i386/i386.c: Likewise. Rename cw_reg_comp to iasm_reg_comp. Rename i386_cw_asm_register_name to i386_iasm_register_name. Rename cw_x86_needs_swapping to iasm_x86_needs_swapping. Rename x86_swap_operands to iasm_x86_swap_operands. Rename cw_is_offset to iasm_is_offset. Rename cw_combine_type to iasm_combine_type. Rename cw_canonicalize_bracket_1 to iasm_canonicalize_bracket_1. Rename cw_canonicalize_bracket to iasm_canonicalize_bracket. Rename x86_canonicalize_operands to iasm_x86_canonicalize_operands. Rename CW_PREFIX_SEP to IASM_PREFIX_SEP. Rename x86_cw_print_prefix to iasm_x86_print_prefix. Rename cw_print_op to iasm_print_op. * i386/i386.h: Likewise. * rs6000/rs6000-protos.h: Likewise. * rs6000/rs6000.c: Likewise. Rename rs6000_cw_asm_register_name to rs6000_iasm_register_name. * rs6000/rs6000.h: Likewise. * rs6000/rs6000.md: Likewise. * function.c: Likewise. * function.h: Likewise. Rename cw_asm_function to iasm_asm_function. Rename cw_asm_noreturn to iasm_noreturn. Rename cw_asm_frame_size to iasm_frame_size. * gimple-low.c: Likewise. * global.c: Likewise. * print-tree.c: Likewise. * reload1.c: Likewise. * scan-decls.c: Likewise. * stmt.c: Likewise. * tree-inline.c: Likewise. * tree.h: Likewise. Rename cw_asm_function_flag to iasm_asm_function_flag. Rename cw_asm_noreturn_flag to iasm_noreturn_flag. 2006-04-25 Devang Patel Radar 4505813 * config/i386/mmintrin.h (__m64): Update def. 2005-04-21 Dale Johannesen Radar 4506160 Bring in Joern Rennecke's fix from mainline: PR middle-end/23135 * reload.c (find_reloads_subreg_address): Pass down TYPE unchanged. Change all callers except find_reloads_toplev. 2006-04-18 Stuart Hastings Radar 4505290 * config/rs6000/rs6000.c (rs6000_initialize_trampoline): Use pmode for SYMBOL_REFs. 2006-04-18 Dale Johannesen Radar 4516827 * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Apply Zdenek's fix from mainline (PR 26643). 2006-04-18 Stuart Hastings Radar 4505290 * config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): New. * config/t-darwin (crt3.o): Use it. * config/rs6000/rs6000.md (call_indirect_nonlocal_sysv, call_nonlocal_sysv, call_value_indirect_nonlocal_sysv, call_value_nonlocal_sysv, sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Use the P macro for 32/64 support. 2006-04-18 Devang Patel Radar 4475058 * tree-ssa-forwprop.c (all_uses_are_replacable): Processing of one worklist stmt may remove casts from another worklist item. 2006-04-17 Devang Patel Radar 4499790 * c-lex.c (lex_string): Enable pascal strings for wchars. 2006-04-12 Mike Stump Radar 4477426 4466768 4498501 * c-common.c (cw_is_pseudo): Add. (cw_asm_stmt): Handle _emit, opword and .machine better. (print_cw_asm_operand): Handle .machine better. * config/asm.h (struct cw_md_Extra_info, no_label_map): Add (cw_is_pseudo): Add. * i386/i386.c (cw_x86_needs_swapping): Handle pseduo instructions better. (x86_canonicalize_operands): Likewise. * i386/i386.h (TARGET_CW_EXTRA_INFO): Add. (CW_IMMED_PREFIX): Handle pseduo instructions better. (TARGET_CW_OP_CONSTRAINT): Add missing cmp.*{pd,ps,sd,ss} instructions. 2006-04-06 Stuart Hastings Radar 4499627 * gcc/config/i386/i386.md (gen_fix_trunc_i386_fisttp): Remove 4209085 peephole. 2006-03-30 Geoffrey Keating Radar 4493694 * c-opts.c (c_common_handle_option): Ignore -fsave-repository when not using STABS. 2006-03-28 Geoffrey Keating Radar 4321213 * doc/include/sourcecode.texi (Source Code): Rewrite for Subversion. 2006-03-28 Stuart Hastings * gcc/config/i386/i386.c (preferred_stack_boundary): Add APPLE LOCAL mainline comments. (ix86_function_regparm): Move APPLE LOCAL comments. 2006-03-24 Stuart Hastings Radar 4443946 * gcc/global.c (global_alloc): Allow -fasm-blocks to clobber the frame pointer. 2006-03-24 Stuart Hastings Radar 4474259 * gcc/config/i386/i386.c (cw_reg_comp): Use strcasecmp. (x86_canonicalize_operands): Exception for movd. 2006-03-22 Eric Christopher Eric Albert Radar 4485288 * config/i386/darwin.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Emit a @GOTPCREL expression for x86_64. 2006-03-22 Eric Christopher Devang Patel * config/darwin-driver.c (get_arch_name): If arch exists in table do not call NXGetLocalArchInfo(). 2006-03-19 Eric Christopher Eric Albert * config/i386/darwin.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Copy from config/darwin.h and disable for x86_64. * config/rs6000/darwin.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Copy from config/darwin.h. * config/darwin.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Remove. 2006-03-19 Eric Albert * config/i386/darwin.h (FUNCTION_PROFILER): Disable stub generation for 64-bit. 2006-03-12 Eric Christopher * config.gcc: Remove x86_64 specific changes. * config/i386/darwin32.h: Remove. * config/i386/darwin64.h: Ditto. * config/i386/t-darwin32: Ditto. * config/i386/t-darwin64: Ditto. * config/i386/t-darwin: Add m64 multilib. * config/i386/darwin.h: Revert previous x86_64 specific changes. (TARGET_64BIT): Define. (PTRDIFF_TYPE): Ditto. (MAX_BITS_PER_WORD): Ditto. (TARGET_OS_CPP_BUILTINS): Add 64-bit support. (ASM_SPEC): Ditto. (SUBTARGET_EXTRA_SPECS): Ditto. (ASM_QUAD): Define. * config/i386/i386.c (processor_alias_table): Add 64bit to possible pentium-m and prescott chips. * config/darwin-driver.c (arch_config_guess_map): Move x86_64 to i686 processor. 2006-03-03 Eric Christopher * config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION): Fix typo. * config/i386/darwin64.h (SIZE_TYPE): Redefine. (PTRDIFF_TYPE): Ditto. (WCHAR_TYPE): Ditto. (WCHAR_TYPE_SIZE): Ditto. * config/i386/i386.c (override_options): Clean up flag_pic. (ix86_function_ok_for_sibcall): Fix conditional for TARGET_MACHO. (ix86_expand_move): Ditto. 2006-03-22 Eric Christopher Radar 4473966 * config/darwin-driver.c (fnasm_seen): Remove. (do_nasm): Ditto. (main): Remove check for fnasm. Remove call. 2006-03-22 Geoffrey Keating Radar 4484188 * config/darwin.h (STARTFILE_SPEC): Don't use -l for crt3.o. * config/darwin-crt3.c: Rewrite entire file. 2006-03-15 Geoffrey Keating Radar 3992198 * config/i386/darwin.h (C_COMMON_OVERRIDE_OPTIONS): New. * config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Call SUBTARGET_C_COMMON_OVERRIDE_OPTIONS. * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): NEw. * config/darwin-crt3.c: Be empty if __PIC__ is not defined. 2006-03-15 Devang Patel Radar 4479522 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Do not enable Altivec by default when deployment target is Mac OSX 10.5 or higher. 2006-03-13 Mike Stump Radar 4230099 * c.opt (fvisibility-ms-compat): Add. * doc/invoke.texi (-fvisibility-ms-compat): Add. 2006-03-13 Stuart Hastings Radar 4474655 * gcc/config/i386/i386.c (override_options): Remove APPLE LOCAL for ix86_preferred_stack_boundary. 2006-03-07 Stuart Hastings Radar 4457939 * gcc/config/i386/i386.c (ix86_darwin_init_expanders): New. * gcc/config/i386/darwin.h (ix86_darwin_init_expanders): Declare. (INIT_EXPANDERS): Define. 2006-03-07 Mike Stump Radar 4408780 * c-common.c (cw_type_for): Add support for r*, x* and m* registers. * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add or fix up addps, addsd, addss, addsubpd, addsubps, andnpd, andnps, andpd, andps, comisd, comiss, cvtdq2pd, cvtdq2ps, cvtpd2dq, cvtpd2pi, cvtpd2ps, cvtpi2pd, cvtpi2ps, cvtps2dq, cvtps2pd, cvtps2pi, cvtsd2ss, cvtsi2sd, cvtsi2ss, cvtss2sd, cvttpd2dq, cvttpd2pi, cvttps2dq, cvttps2pi, divpd, divps, divsd, divss, fidivl, fidivrl, paddq, pextrw, pinsrw, psubq, psubsb, psubsw, psubw, shld and shrd. 2006-03-03 Stuart Hastings * Radar 4425360 * gcc/tree-ssa-dse.c (dse_optimize_stmt): Update from FSF trunk (see below). 2005-12-16 Jeff Law * tree-ssa-dse.c (dse_optimize_stmt): Correctly handle PHI nodes which represent a use and definition of the same SSA_NAME. 2006-02-28 Stuart Hastings * gcc/function.c (APPLE LOCAL) Fix. * gcc/config/i386/darwin.h (BASIC_STACK_BOUNDARY): Delete. * gcc/config/i386/i386.c (BASIC_STACK_BOUNDARY): Delete. (APPLE LOCAL) Fix. 2006-02-28 Devang Patel Dorit Nuzman Radar 4375453 * targhooks.h (vector_alignment_reachable): New. * targhooks.c (default_vector_alignment_reachable): New. * target.h (gcc_target): Add vector_alignment_reachable. * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New. * tree-vect-analyze.c (vect_enhance_data_refs_alignment): Avoid peeling when natural alignment is not reachable due to known misalignment. Use target hook to check unknown alignment. * config/rs6000.c (TARGET_VECTOR_ALIGNMENT_REACHABLE, rs6000_vector_alignment_reachable): New. 2006-02-27 Stuart Hastings Radar 4356747 (marked APPLE LOCAL "4356747 stack realign") * gcc/config/i386/i386.c (ix86_force_align_arg_pointer_string): Tweak decl. 2006-02-27 Stuart Hastings Radar 4356747 (marked APPLE LOCAL "4356747 stack realign") * gcc/rtl.h (gen_tmp_stack_mem): Declare. Fix up previous ChangeLog entry. 2006-02-27 Stuart Hastings Radar 4356747 (marked APPLE LOCAL "4356747 stack realign") * doc/extend.texi (force_align_arg_pointer): Document. * doc/invoke.texi (-mstackrealign): Document. * config/i386/i386.h (TARGET_OPTIONS): Add -mstackrealgin. * config/i386/i386.c (ix86_force_align_arg_pointer): New. (ix86_force_align_arg_pointer_string): New. (ix86_attribute_table): Add "force_align_arg_pointer" attribute. (ix86_function_regparm): Compensate for new attribute. (ix86_internal_arg_pointer): Check for new attribute. 2005-11-02 Richard Henderson PR target/9350 PR target/24374 * dwarf2out.c (dwarf2out_reg_save_reg): New. (dwarf2out_frame_debug_expr): Return after dwarf_handle_frame_unspec. * function.c (assign_parms): Use calls.internal_arg_pointer. (expand_main_function): Remove FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN code. * target-def.h (TARGET_INTERNAL_ARG_POINTER): New. (TARGET_CALLS): Add it. * target.h (struct gcc_target): Add calls.internal_arg_pointer. * targhooks.c (default_internal_arg_pointer): New. * targhooks.h (default_internal_arg_pointer): Declare. * tree.h (dwarf2out_reg_save_reg): Declare. * doc/tm.texi (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Remove. * config/i386/i386.c (dbx_register_map): Add return column. (dbx64_register_map, svr4_dbx_register_map): Likewise. (TARGET_INTERNAL_ARG_POINTER, ix86_internal_arg_pointer): New. (TARGET_DWARF_HANDLE_FRAME_UNSPEC, ix86_dwarf_handle_frame_unspec): New. (ix86_function_ok_for_sibcall): Disable if force_align_arg_pointer. (ix86_save_reg): Save force_align_arg_pointer. (ix86_emit_save_regs): Make regno unsigned. (ix86_emit_save_regs_using_mov): Likewise. (ix86_expand_prologue): Handle force_align_arg_pointer. (ix86_expand_epilogue): Likewise. * config/i386/i386.h: (dbx_register_map): Update. (dbx64_register_map, svr4_dbx_register_map): Update. (struct machine_function): Add force_align_arg_pointer. * config/i386/i386.md (UNSPEC_REG_SAVE, UNSPEC_DEF_CFA): New. (UNSPEC_TP, UNSPEC_TLS_GD, UNSPEC_TLS_LD_BASE): Renumber. (TARGET_PUSH_MEMORY peepholes): Disable if RTX_FRAME_RELATED_P. 2006-02-27 Stuart Hastings Radar 4448096 * gcc/config/i386/i386.md (fixuns_truncdfsi2, fixuns_truncsfsi2, floatunsdidf2): Disable for 4-byte aligned stack. * gcc/config/i386/i386.c (override_options): Set 4-byte aligned stack for -fapple-kext. (ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): assert a 16-byte aligned stack. * gcc/doc/invoke.texi (-fapple-kext): Document new -fapple-kext behavior. 2006-02-24 Mike Stump Radar 4456673 * c-common.c (print_cw_asm_operand): Revert change from Radar 4399388 as it breaks C++ ppc. 2006-02-24 Mike Stump Radar 4298040 * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Improve fdivr, fiadd, ficom, ficomp, fidiv, fidivr fild, fimul, fist, fistp, fisttp, fisub, fisubr, fmul, idiv, inc, lds, les, lfs, lgs, lss. Remove fildl, fildll, fistpll, fisttpll. * config/i386/i386.c (x86_canonicalize_operands): Add DImode support. Allow mov to be used on floats. * c-common.c (m1, m2, m4, m2m4): Remove. (m64, m16m32, m16m32m64, r16r32, r16r32r64): Add. (rm64, rm8rm16rm32rm64): Add. (print_cw_asm_operand, case INDIRECT_REF): Handle all INDIRECT_REFs uniformly. 2006-02-23 Eric Christopher Radar 4081414 * global.c (local_reg_weight): Make HOST_WIDE_INT. (global_alloc): Remove casts to double for local_reg_weight. (find_reg): Use integer temporary for weight computation. 2006-02-21 Geoffrey Keating Radar 4444941 * dwarf2out.c (gen_subprogram_die): Add DW_AT_MIPS_linkage_name when it might not have been added previously. 2006-02-16 Mike Stump Radar 4419735 * c-common.c (cw_build_bracket): Add support for [word ptr esi]. (cw_ptr_conv): Likewise. * config/i386/i386.c (cw_canonicalize_bracket): Likewise. (cw_canonicalize_bracket_1): Likewise. (cw_combine_type): Add. (x86_canonicalize_operands): Don't add a modifier for fstcw/fnstcw. 2006-02-14 Eric Christopher Radar 4331439 * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute): Disable for 64-bit Mach-O. * config/rs6000/darwin.h (SUBTARGET_OPTIONS): Disable longcall only for Mach-O. 2006-02-14 Mike Stump Radar 4443942 * config/i386/i386.c (x86_canonicalize_operands): Don't add a modifier for movq/movntq. 2006-02-14 Mike Stump Radar 4415216 * config/i386/i386.c (additional_names): Add. (cw_reg_comp): Add. (i386_cw_asm_register_name): Add support for upper case register names. 2006-02-14 Josh Conner Radar 4373419 PR target/25376 * varasm.c (function_section): Don't call select_section if a section name is present. 2006-02-13 Geoffrey Keating Radar 4408439 * opts.c (set_debug_level): DWARF is now best for GDB. 2006-02-10 Dale Johannesen Radar 4420531 * doc/invoke.texi: Warn that -ftree-loop-linear is buggy. 2006-02-10 Dale Johannesen Radar 4430139 4431497 * tree.h: Remove reversed_flag. (record_layout_info_s): Add among_reversed_bitfields, reversed_bitfield_type_size, reversed_bitfield_bitpos. * stor-layout.c (place_field): Rewrite reversed-bitfield logic to use them. 2006-02-09 Devang Patel Radar 4435472 * config/darwin-driver.c (main.c): Check --save-temps. 2006-02-09 Mike Stump Radar 4399388 * config/i386/i386.c (cw_canonicalize_bracket_1): Add. (cw_canonicalize_bracket): Improve. (cw_is_offset): Add NEGATE_EXPR support. (cw_print_op): Improve BRACKET_EXPR handling. * c-common.c (print_cw_asm_operand): Add parens around NEGATE_EXPR. 2006-02-08 Stuart Hastings Radar 4176531 (revised version of 27jan06 patch) * config/i386/i386.md (fixuns_truncsi2, fixuns_truncdfhi2, fixuns_truncsfhi2): New. (floatunsdidf2): Allow for 32-bit when optimize_size is off. * config/i386/i386-protos.h (ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): New. * config/i386/i386.c (ix86_expand_vector_move2, gen_2_4_rtvec, ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): New. (x86_emit_floatuns): Call ix86_expand_convert_DI2DF_sse. 2006-02-08 Mike Stump Radar 4407059 * c-lex.c (c_lex_with_flags): Only recognize "offset" when doing x86 assembly. 2006-02-03 Mike Stump Radar 4432782 * config/i386/i386.c (x86_canonicalize_operands): A movz with 2 operands of the same size is converted to a normal mov. 2006-02-02 Mike Stump Radar 4433955 * c-common.c (cw_asm_get_register_var): Remove static. (pointer_int_sum): Build up ARRAY_REFs when possible. * config/i386/i386.c (cw_canonicalize_bracket): Let forms with pointer types through to optimizer and print_operand. (cw_print_op): Likewise. * config/asm.h (cw_asm_get_register_var): Add. * c-common.c (pointer_int_sum): Strip NOPs for C++. 2006-02-01 Stuart Hastings Radar 4429317 (SWB regressions; back out patch for Radar 4176531.) * config/i386/i386.md (fixuns_truncsi2, fixuns_truncdfhi2, fixuns_truncsfhi2): Remove. (floatunsdidf2): Restore to previous. * config/i386/i386-protos.h (ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): Remove. * config/i386/i386.c (ix86_expand_vector_move2, gen_2_4_rtvec, ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): Remove. (x86_emit_floatuns): Remove call to ix86_expand_convert_DI2DF_sse. 2006-02-01 Devang Patel Radar 4208007 * tree-vectorizer.c (vect_print_dump_info): Add vect_dump check. 2006-01-31 Devang Patel Radar 4382844 * tree-data-ref.c (analyze_array, init_data_ref, find_data_references_in_loop): Set DR_TYPE. * tree-data-ref.h (data_ref_type): New. (struct data_reference): New member, data reference type. (DR_TYPE): New. * tree-vect-analyze.c (record_ptr_differ_p, vect_base_object_differ_p): New. (vect_base_addr_differ_p): Check base objects. 2006-01-30 Stuart Hastings Radar 4176531 * config/i386/i386.c (ix86_expand_convert_DF2SI_sse): Fixes for -Werror. 2006-01-28 Dale Johannesen Radar 4420068 * stor-layout.c (place_field): don't adjust rli->bitpos and rli->offset after a non-bitfield whose type is zero-sized. 2006-01-27 Stuart Hastings Radar 4176531 * config/i386/i386.md (fixuns_truncsi2, fixuns_truncdfhi2, fixuns_truncsfhi2): New. (floatunsdidf2): Allow for 32-bit when optimize_size is off. * config/i386/i386-protos.h (ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): New. * config/i386/i386.c (ix86_expand_vector_move2, gen_2_4_rtvec, ix86_expand_convert_DF2SI_sse, ix86_expand_convert_SF2SI_sse, ix86_expand_convert_DI2DF_sse): New. (x86_emit_floatuns): Call ix86_expand_convert_DI2DF_sse. 2006-01-23 Devang Patel Radar 4334498 * dbxout.c (dbxout_init): Queue void type. 2006-01-23 Dale Johannesen Radar 4390273 * cfgloopmanip.c (create_loop_notes): Handle case where we move a block outside the loop into the loop, but the preceding block (the latch) was not moved. 2006-01-20 Mike Stump Radar 4381918 * c-decl.c (start_function): Avoid warnings about lack of return in asm functions. * config/i386/i386.c (ix86_save_reg): Don't save any registers for asm functions. (ix86_expand_prologue): Don't adjust the stack for asm functions. (ix86_expand_epilogue): Don't generate most of the epilogue for an asm function, but do generate a ret. * function.c (assign_parms): Don't avoid doing work for asm functions. (expand_function_start): We don't need DECL_RTL for asm functions. (expand_function_end): Use a naked return for asm functions. (expand_function_end): * gimple-low.c (lower_function_body): Don't generate a return; for asm functions. * tree-inline.c (inline_forbidden_p): Don't inline asm functions on ppc. 2006-01-18 Stuart Hastings Radar 4405429 * global.c (find_tied_stack_pseudo): Insist on a valid memory address (no pseudos). 2006-01-17 Geoffrey Keating Radar 4383509 * dwarf2out.c (debug_frame_section): New. (output_call_frame_info): Use debug_frame_section. Pass it to dw2_asm_output_offset. (output_die): Pass appropriate section to dw2_asm_output_offset. (output_compilation_unit_header): Likewise. (output_pubnames): Likewise. (output_aranges): Likewise. * dwarf2asm.h (dw2_asm_output_offset): Add section parameter. * dwarf2asm.c (dw2_asm_output_offset): Add base section parameter. Pass to ASM_OUTPUT_DWARF_OFFSET. * doc/tm.texi (SDB and DWARF): Add extra parameter to ASM_OUTPUT_DWARF_OFFSET. Use @var to indicate metavariables. 2006-01-13 Geoffrey Keating Radar 4386531 * stab.def (N_OSO): New. * dbxout.c (dbxout_init): Output N_OSO stab always. 2006-01-13 Stuart Hastings Radar 4386991 * cp/typeck2.c (split_nonconstant_init): Remove APPLE LOCAL 4285232. 2006-01-13 Dale Johannesen Radar 4401223 4401224 * tree.h (record_layout_info_s): Add bitfield_seen. * stor-layout.c (start_record_layout): Initialize it. (place_field): When reversing bitfields: consider rli->offset when computing current alignment; maintain rli->bitfield_seen; adjust rli->bitpos and rli_offset after a non-bitfield, but not if we saw a bitfield earlier. 2006-01-03 Geoffrey Keating Radar 4392520 * config/darwin.h (FRAME_BEGIN_LABEL): Use Lname if not for EH. 2005-12-22 Dale Johannesen Radar 4387676 4388773 * tree.h (TREE_FIELDS_REVERSED): Remove. * varasm.c (output_constructor): Remove reference to it. * stor-layout.c (place_field): Ditto. 2005-12-22 Stuart Hastings * config/darwin.c (machopic_force_indirect_call_target): Remove extra APPLE LOCAL marker. * config/rs6000/rs6000.c (output_call): Remove blank line. 2005-12-21 Stuart Hastings Radar 4380289, 4299630 * config/rs6000/rs6000.c (add_compiler_branch_island): Remove one parameter. (rs6000_output_mi_thunk): Update call to add_compiler_branch_island. (macho_branch_islands): Rewrite. (output_call): Rewrite. * config/darwin-protos.h (machopic_force_indirect_call_target): New. * config/darwin.c (machopic_force_stub): New. (machopic_force_indirect_call_target): Use it. (machopic_indirect_call_target): Ditto. 2005-12-20 Dale Johannesen Radar 4385068 * global.c (expand_preferences): Reduce aggressiveness of previous preference enhancement on x86, and disable altogether on ppc. 2005-12-15 Geoffrey Keating Radar 4370117 * config/darwin.h (DEBUG_FRAME_SECTION): Mark as 'regular,debug'; move to __DWARF segment. (DEBUG_INFO_SECTION): Move to __DWARF segment. (DEBUG_ABBREV_SECTION): Move to __DWARF segment. (DEBUG_ARANGES_SECTION): Move to __DWARF segment. (DEBUG_MACINFO_SECTION): Move to __DWARF segment. (DEBUG_LINE_SECTION): Move to __DWARF segment. (DEBUG_LOC_SECTION): Move to __DWARF segment. (DEBUG_PUBNAMES_SECTION): Move to __DWARF segment. (DEBUG_STR_SECTION): Move to __DWARF segment. (DEBUG_RANGES_SECTION): Move to __DWARF segment. * config/darwin.c (darwin_emit_unwind_label): Don't emit global symbols in debug sections. 2005-12-14 Fariborz Jahanian Radar 4278774 * c-common.def: Add new expression code AT_ENCODE_EXPR. 2005-12-14 Eric Christopher Radar 4363479 * tree-ssa-forwprop.c (all_uses_are_replacable): Fold replaced statements. 2005-12-14 Dale Johannesen Radar 4271691 (partial) * global.c (expand_preferences): Enhance pseudo preferences for vectors. * reload1.c (reload): Make sure reused stack slots are expanded correctly. 2005-12-13 Mike Stump * Revert 2005-12-07 Devang Patel Radar 4137741 2005-12-13 Stuart Hastings * config/rs6000/rs6000.c (macho_branch_islands): Add APPLE LOCAL. 2005-12-12 Fariborz Jahanian Radar 4373486 * config/darwin.h (objc_section_init): Remove initialization of C* sections. 2005-12-12 Fariborz Jahanian Radar 4261575 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Undid the setting for darwin_constant_cfstrings. Tests need be modified instead. 2005-12-12 Fariborz Jahanian Radar 4261575 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Set default value for darwin_constant_cfstrings 2005-12-09 Mike Stump Radar 4371551 * c-common.c (print_cw_asm_operand): Handle complex operands better. (cw_simple_expr): New. * c-typeck.c (build_array_ref): Also handle exprs with no type. * config/i386/i386.c (cw_canonicalize_bracket): Add support for more complex offsets. 2005-12-09 Zdenek Dvorak Dale Johannesen Radar 3791237 * toplev.c (process_options): Make -funroll-loops turn on -fweb. * doc/invoke.texi (-fsplit-ivs-in-unroller, -fweb, -funroll-loops): Document this behavior. 2005-12-09 Zdenek Dvorak Radar 4233898 * tree-chrec.c (chrec_fold_multiply_poly_poly): Associate chrecs correctly. 2005-12-09 Stuart Hastings Radar 4299630 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Fixed APPLE LOCAL. 2005-12-08 Dale Johannesen Radar 4285232 * cp/typeck2.c (split_nonconstant_init): Don't zero out object which is fully initialized. 2005-12-08 Devang Patel Geoffrey Keating Radar 4298879 * config/rs6000/darwin.h (PROCESSOR_DEFAULT): Tune for G5 instructions by default when not optimizing for size. (SUBTARGET_OVERRIDE_OPTIONS): Enable Altivec by default when deployment target is Mac OSX 10.5 or higher. 2005-12-07 Devang Patel Radar 4333194 * tree-vect-analyze.c (vect_compute_data_ref_alignment): Check misalignment where natural alignment is not reachable using loop peeling. 2005-12-07 Geoffrey Keating Radar 4370117 * config/darwin.h (DEBUG_INFO_SECTION): Mark as 'debug'. (DEBUG_ABBREV_SECTION): Mark as 'debug'. (DEBUG_ARANGES_SECTION): Mark as 'debug'. (DEBUG_MACINFO_SECTION): Mark as 'debug'. (DEBUG_LINE_SECTION): Mark as 'debug'. (DEBUG_LOC_SECTION): Mark as 'debug'. (DEBUG_PUBNAMES_SECTION): Mark as 'debug'. (DEBUG_STR_SECTION): Mark as 'debug'. (DEBUG_RANGES_SECTION): Mark as 'debug'. 2005-12-07 Devang Patel Ziemowit Laski Radar 4137741 * Makefile.in (c-lex.o): Revert langhooks.h dependency. (langhooks.o): Revert debug.h dependency. * c-lex.c: Do not include langhooks.h. (fe_file_change): Revert lang_hooks calls; issue debug_hooks calls only if defer_file_change_debug_hooks flag is cleared. (c_lex_with_flags): Propagate line number information for CPP_BINCL and CPP_EINCL tokens. * langhooks-def.h: Revert Radar 4133801 changes. * langhooks.c: Likewise. * langhooks.h: Likewise. 2005-12-07 Dale Johannesen Radar 4349512 * tree-ssa-forwprop.c (substitute_single_use_vars): Check that COND_EXPRs being substituted into have the expected form. 2005-12-06 Stuart Hastings * config/rs6000/rs6000.md (longjump): New pattern. * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Use it. 2005-12-06 Dale Johannesen Radar 4332318 * config/i386/sse.md (sse_movhlps): Reverse operands for 2nd and 3rd alternatives. 2005-12-05 Mike Stump Radar 4357979 * doc/invoke.texi (C Dialect Options): Improve -fnested-functions wording. * doc/extend.texi (Nested Functions): Note that on darwin nested functions are off by default. 2005-12-03 Mike Stump * c-parse.in (nested_function): Don't give two errors for nested functions. (notype_nested_function): Likewise. 2005-12-02 Mike Stump Radar 4363798 * config/i386/i386.c (x86_canonicalize_operands): Break out bracket canonicalization from here... * config/i386/i386.c (cw_canonicalize_bracket): to here. Add more canonicalizations. (cw_is_offset): Add offsets built with PLUS_EXPR and MINUS_EXPR. 2005-12-01 Dale Johannesen Radar 4350099 * stor-layout.c (place_field): Keep TREE_FIELDS_REVERSED in the field nodes, not the RECORD node. * varasm.c (output_constructor): Ditto. 2005-12-01 Alan Modra Radar 4345871 ` PR middle-end/24950 * expmed.c (store_bit_field): Don't attempt to insv a field larger than the reg. 2005-11-30 Mike Stump Radar 4357979 * c-parse.in (nested_function): Add -fnested-functions to turn on nested function support. (notype_nested_function): Likewise. * c.opt (-fnested-functions): Likewise. * doc/invoke.texi (C Dialect Options): Likewise. * config/darwin.h (LINK_COMMAND_SPEC): Pass -allow_stack_execute when nested functions are on. 2005-11-30 Dale Johannesen Andrew Pinski Radar 4347034 * combine.c (find_split_point): Sign extend bitmask when changing bitfield assignment to IOR of AND. 2005-11-29 Mike Stump Radar 4358678 * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add "r" to jmp constraint. 2005-11-28 Mike Stump Radar 4357008 * varasm.c (darwin_constant_cfstring_p): Add. * config/i386/i386.c (legitimate_constant_p): Fix C building on linux. (legitimate_address_p): Likewise. (legitimize_address): Likewise. (ix86_expand_move): Likewise. (x86_field_alignment): Likewise. 2005-11-18 Eric Christopher Radar 4324160 * config/i386/i386.md (*zero_extendqihi2_movzbw): Avoid partial register stalls by zero extending to the full register. 2005-11-17 Devang Patel Radar 4343764 * objc/lang-specs.h: Process asm specs while creating symbol repository. * objcp/lang-specs.h: Process asm specs while creating symbol repository. * cp/lang-specs.h: Process asm specs while creating symbol repository. 2005-11-17 Dale Johannesen Radar 4321079 * global.c (remove_invalidated_death_notes): New. * reload1.c (reload): Call it. 2005-11-15 Mike Stump Radar 4344359 * c-common.c (cw_extra_clobbers): Add. (struct cw_op_clobber): Add. (CW_MAX_CLOBBERS): Add. (TARGET_CW_EXTRA_CLOBBERS): Add. (cw_op_clobber_comp): Add. (cw_asm_stmt): Add call to cw_extra_clobbers. * config/i386/i386.h (TARGET_CW_EXTRA_CLOBBERS): Add. 2005-11-15 Dale Johannesen * config/darwin-c.c (darwin_pragma_call_on_load): Give an error for 64-bit targets. (darwin_pragma_call_on_unload): Ditto. 2005-11-15 Dale Johannesen * cfghooks.c (split_block): Copy loop_father. * cfgloopmanip.c (create_loops_notes): Create preheaders. 2005-11-14 Dale Johannesen * expmed.c (store_bit_field): Add offset unconditionally for memory targets. (extract_bit_field): Don't force extzv or extv operand into a register if field is too big. 2005-11-11 Evan Cheng Radar 4299173 * loop-invariant.c (find_invariant_insn): Find more loop invariant insns. 2005-11-10 Mike Stump Radar 4300193 * c-common.c (cw_num_constraints): Add. (cw_set_constraints): Add. (cw_asm_stmt): Call cw_set_constraints to update contraints. (cw_type_for): Add. (print_cw_asm_operand): Transform registers into VAR_DECLs for x86. * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): xchg's 2nd arg is an update. 2005-11-10 Dale Johannesen Radar 4321079 * local-alloc.c (block_alloc): Disable local RA for vectors. * global.c (pseudo_preferences): New. (TEST_PSEUDO_PREF): New. (SET_PSEUDO_PREF): New. (CLEAR_PSEUDO_PREF): New. (global_alloc): Allocate, free pseudo_preferences. Mark pseudo- preferenced regs as nonconflicting when each is assigned to just once. (expand_preferences): Apply transitive property to pseudo_preferences. (find_reg): Propagate pseudo_preferences when a pseudo is assigned a register. (mirror_conflicts): Make pseudo_preferences symmetrical, like conflicts. (set_preference): Look under SUBREG for vector-vector copies. Treat these as creating a preference. (find_tied_stack_pseudo): New. (dump_conflicts): Dump pseudo_preferences and copy preferences. * reload1.c (from_global): New. (reload): Save it. (alter_reg): Use it. Ask GRA for a stack slot already used by a pseudo-preferenced register, before creating a new one. 2005-11-10 Dale Johannesen Radar 4321079 * cfgloopmanip.c: Include option.h. (straighten_blocks): New. (create_loop_notes): Call it. Look for and straighten a specific 2-block loop pattern. * Makefile.in (cfgloopmanip.o): Add options.h dependency. 2005-11-08 Fariborz Jahanian Radar 4330422 * c-common.h (objc_non_volatilized_type): New declaration * stub-objc.c (objc_non_volatilized_type): New stub. 2005-11-03 Evan Cheng * config/i386/i386-protos.h (standard_sse_constant_opcode) Declare * config/i386/i386.c (standard_sse_constant_p) Check for vector constant -1. (standard_sse_constant_opcode) New function to return the opcode associated with standard_sse_constant_p. (ix86_expand_vector_move) Use standard_sse_constant_p. * config/i386/predicates.md (vector_move_operand) Use standard_sse_constant_p. (nonimmediate_or_0_operand) Return true if operand is a nonimmediate or a constant zero. * config/i386/sse.md (*mov_internal) Use standard_sse_constant_opcode. (*movv4sf_internal) Use standard_sse_constant_opcode. (*movv2df_internal) Use standard_sse_constant_opcode. (sse_movlhps) Replace vector_move_operand with nonimmediate_or_0_operand. (*sse_concatv2sf) Replace vector_move_operand with nonimmediate_or_0_operand. (*vec_setv4sf_0) Replace vector_move_operand with nonimmediate_or_0_operand. (sse2_loadlpd) Replace vector_move_operand with nonimmediate_or_0_operand. (*vec_concatv2df) Replace vector_move_operand with nonimmediate_or_0_operand. (sse2_loadld) Replace vector_move_operand with nonimmediate_or_0_operand. (*vec_concatv2di) Replace vector_move_operand with nonimmediate_or_0_operand. * testsuite/gcc.apple/4283414.c: New. 2005-11-01 Fariborz Jahanian objc new meta-data definitions - part 1 * common.opt: Add new -fobjc-abi-version=n option. 2005-11-01 Evan Cheng Radar 4317709 * stor-layout.c (place_field) A bitfield field cannot straddle multiple units. 2005-11-01 Stuart Hastings * config/darwin.h (fix-and-continue): Added APPLE LOCAL for comma. 2005-11-01 Stuart Hastings * config/i386/i386.h (Unused): Fix gratuitous APPLE LOCAL change. 2005-10-31 Devang Patel Radar 4053179 Backport from Mainline. 2005-04-14 Richard Henderson * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Split ... (ix86_expand_sse_fp_minmax): ... from ... (ix86_expand_fp_movcc): ... here. (ix86_expand_sse_movcc): Rewrite from ix86_split_sse_movcc. * config/i386/i386-protos.h: Update. * config/i386/i386.md (UNSPEC_IEEE_MIN, UNSPEC_IEEE_MAX): New. (sse_setccsf, sse_setccdf): Allow before reload. (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): Remove. (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): Remove. (ieee_sminsf3, ieee_smaxsf3, ieee_smindf3, ieee_smaxdf3): New. * config/i386/sse.md (andsf3, nandsf3, iorsf3, xorsf3): New. (anddf3, nanddf3, iordf3, xordf3): New. * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ... (ix86_expand_sse_movcc): ... here. Take cmp as a pre-computed register. (ix86_expand_fp_movcc): Update to match. (ix86_expand_fp_vcond, ix86_expand_int_vcond): New. * config/i386/i386-protos.h: Update. * config/i386/sse.md (vcondv4sf, vcondv2df): New. (vcond, vcondu): New. 2005-10-31 Devang Patel Radar 4310696 * dbxout.c (stabstr_I): Truncate anonymous aggregate names in C++ and Objective-c++. 2005-10-25 Evan Cheng Radar 4209085 * config/i386/i386.md (fix_trunc_i387_fisttp peephole2): Emit fisttp for double signed integer conversion if source operand is in ST(0). * testsuite/gcc.apple/4209085.c: New. 2005-10-25 Eric Christopher Import from mainline: 2005-09-28 Mark Mitchell PR 17886 * expmed.c (expand_shift): Move logic to reverse rotation direction when rotating by constants ... * optabs.c (expand_binop): ... here. * config/i386/i386.md (rotrdi3): Handle 32-bit mode. (ix86_rotrdi3): New pattern. (rotldi3): Handle 32-bit mode. (ix86_rotldi3): New pattern. 2005-10-19 Eric Christopher Radar 3907496 Import from mainline: 2005-08-10 Eric Christopher * config/rs6000/rs6000.c (mems_ok_for_quad_peep): Rewrite. * config/rs6000/rs6000.md (*lfq_power2, *stfq_power2): Use V2DFmode. 2005-10-10 Fariborz Jahanian Radar 4301047 * c-parse.in (objc_quals): Build objc qualifier list same way as gcc-3.3 2005-10-11 Geoffrey Keating Radar 4271575 * config/rs6000/darwin.h (DARWIN_CRT2_SPEC): New. (SUBTARGET_EXTRA_SPECS): Define %(darwin_crt2). * config/i386/darwin.h (SUBTARGET_EXTRA_SPECS): Define %(darwin_crt2) as empty. * config/darwin.h (STARTFILE_SPEC): Use %(darwin_crt2) to possibly link in crt2.o. 2005-10-12 Fariborz Jahanian Radar 4291785 * c-common.h (objc_get_interface_ivars): New declaration (objc_detect_field_duplicates): Ditto. * c-decl.c (finish_struct): Check for duplicate among flattened fields if objective-c. * stub-objc.c (objc_get_interface_ivars): New stub. (objc_detect_field_duplicates): Ditto. 2005-10-07 Fariborz Jahanian Radar 4204796 * c-parse.in (typespec_nonreserved_nonattr): Remove volatile from 'volatalized' type used in a typeof operator. 2005-10-04 Fariborz Jahanian Radar 4281748 * c-common.h (objc_check_global_decl): New declaration. * stub-objc.c (objc_check_global_decl): New stub. * c-decl.c (start_decl): Check for redeclaration of class name. * c-parse.in (after_type_declarator): Recognize CLASSNAME. 2005-10-17 Geoffrey Keating Radar 4122763 * libgcc2.c [LIBCC_KEXT] (panic): Declare properly. [LIBCC_KEXT] (abort): Don't abort with no string. 2005-10-28 Stuart Hastings Radar 4164563 * config/darwin.c (darwin_macho_att_stub, darwin_macho_att_stub_switch): New. * config/darwin.h (-matt-stubs): New flag. (machopic_picsymbol_stub3_section): New __IMPORT section. (MACHOPIC_NL_SYMBOL_PTR_SECTION): New. (machopic_nl_symbol_ptr_section): Move non-lazy pointers to __IMPORT section. * config/i386/darwin.h (-matt-stubs): New flag. (SUBTARGET_OVERRIDE_OPTIONS): Handle -matt-stubs. * config/i386/i386.c (macho_output_stub): Generate AT&T style (self-modifying) stubs. * config/i386/i386.h (MACHOPIC_NL_SYMBOL_PTR_SECTION): Override machopic_nl_symbol_ptr_section with new __IMPORT section. 2005-10-28 Dale Johannesen Radar 4318818 * varasm.c (output_constructor): Do not check DECL_BIT_FIELD when reversing initializer list for types with reversed_flag set. 2005-10-28 Dale Johannesen Radar 4319602 * cfgloopmanip.c (create_loop_notes): Add code to move code logically inside a loop but physically outside, to a place physically inside. * ifcvt.c (find_if_case_1): Adjust cost test for ppc. (find_if_case_2): Ditto. 2005-10-21 Dale Johannesen * opts.c (set_flags_from_O): Revert 10-17 change. * regrename.c (regrename_optimize): Ditto. * ifcvt.c (find_if_case_1, find_if_case_2): Ditto. * cfgloopmanip.c (create_loop_notes): Ditto, also 10-19 and 10-20 changes. 2005-10-20 Devang Patel Radar 4307634 * dbxout.c (struct typeinf): New member, q_type_number. (struct qualified_typeinf): New. (q_typevec, q_typevec_len, q_type_number); New. (dbxout_reusable_type, dbxout_note_q_type, dbxout_next_q_type_number): New. (dbxout_init): Initialize q_typevec. (dbxout_type_index): Check reusable type. (dbxout_partial_type): Remove dbxout_next_type_number call. Use dbxout_note_q_type(). (dbxout_complete_type): Remove dbxout_next_type_number call. (dbxout_pointer_type): Same. (dbxout_file_type): Same. (dbxout_function_type): Same. (dbxout_reference_type): Same. 2005-10-20 Dale Johannesen Radar 4307420 * cfgloopmanip.c (create_loop_notes): Handle fallthru to EXIT_BLOCK. 2005-10-19 Dale Johannesen Radar 4307392 * cfgloopmanip.c (create_loop_notes): Handle jump tables. 2005-10-17 Dale Johannesen Radar 4203984 * ifcvt.c (find_if_case_1): Adjust cost test for ppc. (find_if_case_2): Ditto. * regrename.c (regrename_optimize): Change to do more renaming. * opts.c (set_flags_from_O): Reenable regrename at -O3. * cfgloopmanip.c (create_loop_notes): Add code to move code logically inside a loop but physically outside, to a place physically inside. 2005-10-14 Eric Christopher Radar 4302779 * config/darwin-driver.c (do_nasm): Include -o in explicit args. 2005-10-14 Eric Christopher Radar 4302595 * config/darwin-driver.c (do_nasm): Specify all arguments to nasm explicitly. 2005-10-14 Devang Patel Radar 4300871 * dbxout.c (dbxout_start_source_file): Flush type queue. 2005-10-13 Stuart Hastings Radar 4278461 * config/darwin.c (machopic_legitimize_pic_address): Set regs_ever_live[current_PIC_reg]. 2005-10-13 Devang Patel R4281384 * dbxout.c (dbxout_partial_type): Partially describe method types. 2005-10-11 Evan Cheng Radar 4228294 Radar 4296479 * varasm.c (output_constructor): Reverse initializer list for types with reversed_flag set (revision). 2005-10-12 Devang Patel Radar 4278903 * gcc.c (invoke_as): Process ASM_SPEC when -fsave-repository is seen. 2005-10-11 Dale Johannesen Radar 4134111 * config/i386/i386.md (cmpstrsi): Modify for Darwin. (darwin_cmpstrqi_nz_1): New. (*darwin_cmpstrqi_nz_1): New. (darwin_cmpstrqi_1): New. (*darwin_cmpstrqi_nz_1): New. 2005-10-11 Geoffrey Keating Radar 4276161 * config/darwin.h (REAL_LIBGCC_SPEC): Link in shared libgcc depending on -mmacosx-version-min setting. 2005-10-11 Devang Patel Radar 4117876 * config/rs6000.c (expand_block_clear, expand_block_move): Remove vectorized memset/memcpy warning. 2005-10-10 Stuart Hastings Radar 4271187 * config/rs6000/rs6000.c (macho_branch_islands): Avoid fixed-size buffers. 2005-10-07 Evan Cheng Radar 4109832 * config/i386/xmmintrin.h (_MM_TRANSPOSE4_PS): Rewrite using high/low moves and unpack to speed up. 2005-10-07 Stuart Hastings Radar 4205103 * config/i386/i386.c (ix86_value_regno): Moved APPLE LOCAL marker. 2005-10-06 Devang Patel Radar 4257091 * c-common.c (vector_types_compatible_p): Check REAL_TYPE's precision. 2005-10-06 Dale Johannesen Radar 4284121 * function.c (assign_parms): Fix RETURN_POPS_ARGS call. 2005-10-04 Devang Patel Radar 4278470 * dbxout.c (dbxut_init): Flush type queue. (type_queue, type_queue_index, type_queue_size): GTY'ed. (dbxout_queue_type): Use ggc_realloc. (dbxout_free_type_queue): Use ggc_free. 2005-01-03 Devang Patel Radar 4278903 * gcc.c (invoke_as): Supply -arch when -fsave-repository is seen. 2005-01-03 Devang Patel Radar 4135682 * invoke.texi: Avoid using specific version number. 2005-10-01 Dale Johannesen Radar 4279065 * config/i386/sse.md (sse_storeqv4si): Remove subreg. 2005-09-30 Devang Patel Radar 4274611 * config/darwin-driver.c (do_nasm): New. (fasm_seen): New variable. (main): Check -fnasm. 2005-09-28 Devang Patel Radar 4263352 * config/darwin-driver.c (GTY): Define empty macro. 2005-09-29 Ziemowit Laski Radar 4136489 * config/darwin-c.c (darwin_cpp_builtins): Define a '__weak' macro if Objective-C GC is being used. * config/darwin.c (darwin_handle_objc_gc_attribute): Correctly propagate GC attribute to ..._TYPE nodes, even for functions and arrays. * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Restrict use of GC attribute to ..._TYPE nodes. * doc/invoke.texi: Document '-fobjc-gc' switch. 2005-09-28 Devang Patel Radar 4263352 * config/darwin.h (darwin_reverse_bitfields): Add GTY marker. 2005-09-28 Devang Patel Radar 4258406 * c-parse.in (nested_function): Report an error, instead of a warning. (nontype_nested_function): Same. * c.opt (Wnested-funcs): Remove. * doc/invoke.texi: Remove Wnested-funcs documentations. 2005-09-28 Dale Johannesen Radar 4228294 (revision) * stor-layout.c (layout_type): Move setting of TREE_FIELDS_REVERSED... (place_field): ...to here. 2005-09-26 Ziemowit Laski Radar 4232445 * dbxout.c (dbxout_partial_type): Insert missing TYPE_STUB_DECL accessor. (dbxout_partial_type): Use TYPE_NAME instead of DECL_NAME when accessing a ..._TYPE node. 2005-09-26 Fariborz Jahanian PR target/23847 Radar 4263935 * config/rs6000/rs6000.c (rs6000_function_value): Parallel pattern for __complex__ double in -mcpu=G5 mode. 2005-09-26 Stuart Hastings * config/i386/i386.c (ix86_comp_type_attributes): Moved APPLE LOCAL marker. 2005-09-26 Mike Stump Radar 4273781 * c-common.c (cw_asm_stmt): Add prefix support. (cw_is_prefix): Add. (cw_do_id): Add. (get_cw_asm_label): Make static. * c-common.h (cw_asm_stmt): Move to asm.h (cw_asm_build_register_offset): Likewise. (cw_asm_label): Likewise. (prepend_char_identifier): Likewise. (clear_cw_asm_labels): Likewise. (cw_asm_reg_name): Likewise. (get_cw_asm_label): Likewise. (cw_asm_entry): Likewise. (cw_asm_typename_or_reserved): Likewise. (cw_asm_c_build_component_ref): Likewise. (cw_get_identifier): Likewise. (cw_build_bracket): Likewise. (flag_cw_asm_blocks): Likewise. * config/asm.h: Move various declarations to here. * c-parse.in (c_parse_cw_maybe_prefix): Add. (cw_skip_to_eol): Move decl to asm.h. (cw_maybe_prefix): Add. (single_cw_asm_stmt): Add prefix support. * c-typeck.c (build_external_ref): Move some logic to cw_do_id. * config/i386/i386.h (CW_SYNTH_CONSTRAINTS): Remove trailing ;. (CW_IS_PREFIX): Add. * config/i386/i386-protos.h (x86_cw_print_prefix): Add. * config/i386/i386.c (x86_cw_print_prefix): Add. Radar 4271787 * c-common.c (CW_CANONICALIZE_OPERANDS): Arrange to save the opcode before translation for constraint lookups. (cw_asm_stmt): Likewise. * config/i386/i386.c (CW_CANONICALIZE_OPERANDS): Likewise. 2005-09-24 Mike Stump Radar 4248159 * config/i386/i386.c (x86_canonicalize_operands): Add (a+b) and (a-b) support for memory references. 2005-09-23 Fariborz Jahanian * Radar 4266982 * combine.c (make_extraction): Check for valid use of subreg. 2005-09-23 Mike Stump Radar 4259442 * c-common.c (cw_split_next): Add. (print_cw_asm_operand): Add extra * parameter. (cw_asm_get_register_var): Likewise. (struct Extra): Add. (cw_x86_needs_swapping): Split out from canonicalize_operands. (canonicalize_operands): Handle %st(i) style references for x86. Add code to support opcode modifiers based upon arguments. Rewrite movsx to movs. Rewrite movzx to movz. (cw_constraint_for): Pass number of arguments. Add checking code to ensure that opcode table is sorted. Handle option second opcode. (cw_process_arg): Add extra * and op_num parameters. Allow contrainst to be constructed from context. (cw_asm_stmt): Add extra data structure and pass it around to callees. (print_cw_asm_operand): Add extra * parameter. Prefix constants with "$" unless they are part of an offset. Double up % on register names. Don't track ST(i) lifetimes yet. Handle .+24 as we do for .-24. Ensure that offsets are not output with "$". Track context information and set constraints appropriately. Don't use labels for non-labels like lo16, hi16 and ha16. * config/asm.h: Add. * c-common.h (cw_split_next): Add. (cw_insert_saved_token): Add. * c-lex.c (cw_insert_saved_token): Add. (c_lex_with_flags): When starting a decl, we don't need a BOL to see the start of an instruction. When switching to cw_asm_asm, also arrange for a BOL token to be returned. Arrange to split [.+-] from opcode when PREV_WHITE. * cp-parse.in (cw_identifier1): Add. (cw_identifier): Add trailing ' ' on identifiers to split out [.+-] from opcode. (cw_asm_compstmt): Handle opcode int. (cw_asm_primary): Add '.'. (yylexname): Handle opcode int. * c-typeck.c (cw_asm_typename_or_reserved): Likewise. * config/i386/i386.c (i386_cw_asm_register_name): Don't double up on '%' as a register prefix, as then it doesn't match a register name. (cw_memory_clobber): Move to here. (cw_x86_needs_swapping): Likewise. (x86_swap_operands): Likewise. (x86_canonicalize_operands): Likewise. (cw_is_offset): Likewise. (cw_print_op): Split out from print_cw_asm_operand. * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Massive fixups, switch operand ordering. (TARGET_CW_EXTRA_INFO): Add. (TARGET_CW_EXTRA_INFO): Add. (CW_SYNTH_CONSTRAINTS): Add. (TARGET_CW_PRINT_OP): Add. (CW_CANONICALIZE_OPERANDS): Add. (CW_SEE_OPCODE): Add. (CW_IMMED_PREFIX): Add. (CW_HIDE_REG): Add. (CW_SEE_OFFSET): Add. (CW_SEE_NO_OFFSET): Add. * doc/extend.texi (Asm Blocks and Functions): Update for x86. * tree-cfg.c (set_bb_for_stmt): Handle label rewritting anywhere in opcode. 2005-09-22 Stuart Hastings Radar 4231761 * doc/invoke.texi: Tweak documentation for -Oz. 2005-09-22 Stuart Hastings Radar 4205103 * config/i386/i386.c (ix86_function_value, ix86_value_regno): Backport new three-argument versions from FSF mainline, add support for __attribute__ ((regparmandstackparm)). (ix86_handle_cdecl_attribute, ix86_handle_regparm_attribute, ix86_handle_cconv_attribute): Replace the first two with the third, from FSF mainline; added support for __attribute__ ((regparmandstackparm)). (ix86_function_regparm): Check for __attribute__ ((regparmandstackparm)). (ix86_function_sseregparm): Backported from FSF mainline, add check for __attribute__ ((regparmandstackparm)). (ix86_comp_type_attributes, init_cumulative_args, function_arg_advance, function_arg, TARGET_FUNCTION_VALUE): Backport changes from FSF mainline. (ix86_function_ok_for_sibcall): Backport new version from FSF mainline. (ix86_darwin_make_regparmandstackparmee, ix86_darwin_regparmandstackparm_mangle_name, ix86_darwin_regparmandstackparm_dup_fndecl, ix86_darwin_regparmandstackparm_extern_decl, ix86_darwin_redirect_calls, ix86_darwin_re_context_1, ix86_darwin_re_context, ix86_darwin_regparmandstackparm_wrapper): New. (ix86_darwin_handle_regparmandstackparm, ix86_darwin_redirect_calls): New; support for __attribute__ ((regparmandstackparm)). * cgraphunit.c (cgraph_finalize_function): Use ix86_darwin_handle_regparmandstackparm. (cgraph_finalize_compilation_unit): Use ix86_darwin_redirect_calls. * config/i386/i386-protos.h(ix86_function_value): Updated extern decl. * config/i386/i386.h (MASK_SSEREGPARM, TARGET_SSEREGPARM): New. (FUNCTION_VALUE): Backported three-argument version from FSF mainline. (struct ix86_args): Backported float_in_sse field from FSF mainline. (SSE_REGPARM_MAX): Added Darwin/x86-specific support for __attribute__ ((regparmandstackparm)). (ix86_darwin_handle_regparmandstackparm, ix86_darwin_redirect_calls): Declare. * doc/extend.texi (regparmandstackparm): Documentation for __attribute__ ((regparmandstackparm)). 2005-09-21 Fariborz Jahanian Radar 4043818 (pr19653) * /config/i386/mmx.md (mov_internal): Make cost of 'y' (mmx_regs) computable. 2005-08-31 Richard Henderson Radar 4043818 (pr19653) * expr.c (expand_expr_real_1) : Force subregs into a pseudo before applying gen_lowpart. 2005-08-30 Richard Henderson Radar 4043818 (pr19653) PR target/23630 * expr.c (expand_expr_real_1) : Use gen_lowpart whenever the mode sizes match. 2005-08-23 Paolo Bonzini Radar 4043818 (pr19653) PR middle-end/23517 * fold-const.c (fold_convert): Use VIEW_CONVERT_EXPR to convert between vectors. * convert.c (convert_to_integer, convert_to_vector): Likewise. 2005-09-19 Devang Patel Radar 4252541 * config/rs6000/rs6000.c (rs6000_expand_binop_builtin, rs6000_expand_ternop_builtin, rs6000_expand_unop_builtin): Check expr arguments. 2005-09-16 Fariborz Jahanian Radar 4232296 * config/rs600.c (rs6000_emit_move): Check for a valid symbol_ref before attempt to generate indirect pic stub. 2005-09-15 Devang Patel dbxout_type rewrite. * dbxout.c (enum typestatus): Add TYPE_QUEUED. (dbxout_type):Rewrite. Use dbxout_partial_type and dbxout_complete_type to do actual work. (dbxout_partial_type, dbxout_complete_type, dbxout_type_xref, dbxout_pointer_type, dbxout_void_type, dbxout_integer_type, dbxout_real_type, dbxout_char_type, dbxout_complex_type, dbxout_file_type, dbxout_function_type, dbxout_reference_type, dbxout_next_type_number, dbxout_cross_ref_type_p, dbxout_type_with_name, dbxout_queue_type, dbxout_free_type_queue): New. (dbxout_function_end): Flush type queue. (dbxout_end_source_file): Same. * final.c (debug_flush_symbol_queue): Same. * debug.h (dbxout_flush_type_queue): New. 2005-09-15 Devang Patel Radar 4241538 * config/rs600.c (altivec_cov_rt_2p): Check NULL_TREE. 2005-09-08 Dale Johannesen Radar 4220129 * config/i386/emmintrin.h (_mm_set1_epi8): Redefine. 2005-09-08 Dale Johannesen Radar 4229407 * passes.c (rest_of_compilation): Reduce stack alignment to 8 bytes, not 4, for leaves containing doubles. 2005-09-08 Fariborz Jahanian Radar 4168635 * config/i386/i386.c (ix86_delegitimize_address): Recognize pattern for darwin-style PIC address of a constant. 2005-09-07 Dale Johannesen Radar 4228294 * tree.h (struct tree_common): Add reversed_flag. (TREE_FIELDS_REVERSED): New. * stor-layout.c (layout_type): Set it. * varasm.c (output_constructor): Reverse initializer list for types with reversed_flag set. 2005-08-30 Fariborz Jahanian Radar 4233894 pr 22348 (fsf mainline) * tree-ssa-loop-niter.c (number_of_iterations_cond): constant fold the delta. 2005-08-31 Mike Stump Radar 4239455 * i386/i386.h (TARGET_CW_OP_CONSTRAINT): Sort. 2005-08-31 Dale Johannesen Radar 4212458 * loop-iv.c (iv_number_of_iterations): Fix overflow check for loops that count down. 2005-08-31 Stuart Hastings Radar 4231773 * opts.c (decode_options): Add -Oz. 2005-08-30 Eric Christopher Radar 4223128 * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add remaining opcodes. 2005-08-30 Fariborz Jahanian Radar 4235138 * c-common.c (print_cw_asm_operand): Generate tree for nested member operand. * c-typeck.c (cw_asm_c_build_component_ref): Build component ref for nested member operand. 2005-08-29 Eric Christopher Radar 4223128 * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Finish through m. Add constraints to all existing opcodes. 2005-08-27 Dale Johannesen Radar 4217585 * config/i386/i386.c (nocona_cost): Increase MOVE_RATIO. 2005-08-26 Ian Lance Taylor Radar 4229621 * combine.c (make_extraction): Avoid reference outside object. 2005-08-26 Ziemowit Laski Radar 4080358 * config/darwin.c (darwin_construct_objc_string): Place string literals in the CFString hash table even if they will be used for NSConstantString objects instead. 2005-08-25 Dale Johannesen Radar 4216496 4229407 * passes.c (MaxAlignForThisBlock): Rewrite to descend into nested blocks. (LargestAlignmentOfVariables): Ditto. 2005-08-23 Stuart Hastings Radar 4224227 * opts.c (decode_options): Disable optimize_size after cmdline processing. 2005-08-24 Fariborz Jahanian Radar 4211430 * stmt.c (expand_asm_operands): Make static entry symbol local and not extern. 2005-08-23 Eric Christopher Radar 4223128 * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add through "l". 2005-08-23 Dale Johannesen Radar 4221664 * convert.c (convert_to_real): Don't convert (float)floor(double d) to floorf((float)d). 2005-08-23 Mike Stump Radar 4211971 * c-common.c (cw_is_offset): Add support for complex memory addressing. (cw_build_bracket): Likewise. (print_cw_asm_operand): Likewise. * c-common.def (BRACKET_EXPR): Likewise. * c-common.h (cw_build_bracket): Likewise. * c-parse.in (cw_asm_primary): Likewise. * c-typeck.c (build_array_ref): Likewise. (parser_build_binary_op): Likewise. * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add a few more opcodes. 2005-08-22 Mike Stump Radar 4211954 * c-opts.c (c_common_init): Add support for the h suffix to identify hex integers. 2005-08-19 Mike Stump Radar 4211947 * c-lex.c (c_lex_with_flags): Add support for ; comments. (cw_skip_to_eol): Likewise. * c-parse.in (cw_asm_stmt_list): Likewise. (cw_maybe_comment): Likewise. (cw_asm_compstmt): Likewise. (cw_save_location): Redo how line numbers are saved. (cw_asm_stmt): Likewise. (cw_asm_stmt_nobol): Likewise. (single_cw_asm_stmt): Likewise. * c.opt (-fms-asms): Add support for ; comments. * config/i386/darwin.h: Likewise. * c-common.c (cw_memory_clobber): Assume everything clobbers memory for now. 2005-08-22 Dale Johannesen Radar 4225116 * calls.c (store_one_arg): Disable sibcalls when incoming args are clobbered before being used. 2005-08-18 Eric Christopher Radar 4223128 * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add a-c instructions. 2005-08-18 Mike Stump Radar 4214021 * c-common.c (cw_process_arg): Add more x86 support. (cw_asm_label): Add support for @ . * c-lex.c (c_lex_with_flags): Add more x86 support. * c-parse.in (cw_asm_stmt_nobol): Add. (cw_asm_label): Add '@' CONSTANT. (cw_asm_compstmt): Add asm nop support. * config/i386/i386.h (TARGET_CW_OP_CONSTRAINT): Add jmp. 2005-08-17 Devang Patel Radar 4215975 * dbxout.c (anon_place_holder): New. (dbxout_init): Initialize anon_place_holder. (dbxout_type): Use anon_place_holder. (dbxout_symbol): Check anon_place_holder. 2005-08-16 Fariborz Jahanian Radar 4218231 * c-common (print_cw_asm_operand): Add support for variable component reference. 2005-08-16 Dale Johannesen Radar 4216812 * tree-sra.c (scalarize_init): Add integer_copy handling. 2005-08-16 Eric Christopher Radar 4219129 * c-common.c (TARGET_CW_OP_CONSTRAINT): New. Add default. (cw_constraint_for): Use. * config/rs6000/rs6000.h: Define. * config/i386/i386.h: Ditto. 2005-08-15 Mike Stump Radar 4211978 * c-common.c (swap_operands): Add. (cw_constraint_for): Add x86 support. (cw_process_arg): Add x86 support. (cw_asm_stmt): Add x86 suppport. * config/i386/darwin.h (CW_ASM_REGISTER_NAME): Add. * config/i386/i386-protos.h (i386_cw_asm_register_name): Add. * config/i386/i386.c (i386_cw_asm_register_name): Add. 2005-08-15 Dale Johannesen Radar 4214718 * c.opt: Add -Wnested-functions. * c-parse.in: Warn on nested functions if this is set. * doc/invoke.texi: Document new flag. 2005-08-15 Fariborz Jahanian Radar 4204303 * config/rs6000/rs6000.h (INITIAL_FRAME_ADDRESS_RTX): Define. 2005-08-12 Devang Patel Radar 4209318 * dbxout.c (dbxout_type): Update this function to force type definition in new LSYM stab. (dbxout_symbol): Set TREE_ASM_WRITTEN only if did_output is true. 2005-08-10 Dale Johannesen Radar 3893112 * config/rs6000/rs6000.c (params.h): Include. (optimization_options): Set sra-max-structure-size. 2005-08-09 Stuart Hastings Radar 4209014 * opts.c (set_flags_from_O): Limit auto-inlined functions to 30 insns. * invoke.texi: Adjust documentation to match. 2005-08-08 Devang Patel Radar 4200243 * config/i386/i386.c (override_options): Do not check RC_FORCE_SSE3 env. variable. (optimization_options): Check RC_FORCE_SSE3 env. variable. 2005-08-08 Devang Patel Radar 4200243 * config/i386/i386.c (override_options): Check RC_FORCE_SSE3 env. variable. 2005-08-08 Dale Johannesen Radar 4206991 * config/i386/i386.c (ix86_preferred_reload_class): Disallow int constants in SSE registers. 2005-08-08 Devang Patel Radar 4208760 * config/rs6000.darwin.h (CC1_SPEC): Ignore -msse3. 2005-08-05 Devang Patel * dbxout.c (dbxout_function_end): Enable N_ENSYM in -gused mode. (dbxout_begin_prologue): Enable N_BNSYM in -gused mode. 2005-08-05 Stuart Hastings Radar 4200438 * invoke.texi: Added documentation noting differing inliner behavior between C++ and C. 2005-08-05 Stuart Hastings Radar 4200438 * opts.c (set_flags_from_O): Set inline heuristic according to input language. * rs6000.c (optimization_options): Remove -Os inline heuristic fudging. * i386.c (optimization_options): Likewise. 2005-08-04 Fariborz Jahanian Radar 4205758 * config/rs6000/rs6000.c (rs6000_emit_prologue): No prologue code with CW nofralloc directive. (rs6000_emit_epilogue): No epilogue code with CW nofralloc directive. 2005-08-05 Dale Johannesen * cfgexpand.c (construct_init_block): Roll in fix for PR 21562 from mainline. 2005-08-05 Stuart Hastings Radars 4037817, 4178585, 4200438 * rs6000.c (optimization_options): Set -Os inlining heuristics to 30,30. * i386.c (optimization_options): Likewise. 2005-08-04 Devang Patel Radar 4196953 * dbxout.c (dbxout_type): Emit type defs in new LSYM stab. 2005-08-04 Ziemowit Laski Radar 4174833 * dbxout.c (dbxout_type): For Objective-C classes, do not output superclass metadata before outputting the fields. 2005-08-03 Dale Johannesen * reload.c (push_reload): Better handling for PREFERRED_OUTPUT_RELOAD_CLASS. (find_dummy_reload): Ditto. (find_reloads): Ditto. * regclass.c (struct reg_pref): Redocument prefclass. (regclass): Allow for memory being better than any regclass. (record_reg_classes): Allow for prefclass being NO_REGS. * i386.c (ix86_preferred_reload_class): Improved handling for SSE. (ix86_preferred_output_reload_class): New. * i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): New. * i386.md (cmpfp_i_mixed, cmpfp_iu_mixed, pushsf, pushsf_rex64, movsf_1, pushdf_nointeger, pushdf_integer, movdf_nointeger, movdf_integer, pushxf_integer, movxf_integer, extendsfdf2_mixed, truncxfsf2_mixed, truncxfsf2_i387, truncxfdf2_mixed, truncxfdf2_i387, floatsisf2_mixed, floatdisf2_mixed, floatsidf2_mixed, floatdidf2_mixed, absnegsf2_mixed, absnegdf2_mixed, fp_jcc_1_mixed, fp_jcc_2_mixed, fop_sf_comm_mixed, fop_sf_1_mixed, fop_df_comm_mixed, fop_df_1_mixed, sqrtsf2_mixed, sqrtdf2_mixed, movsfcc_1_387, movdfcc_1, movdfcc_1_rex64): Remove register hints. * i386-protos.h (ix86_preferred_output_reload_class): New. 2005-08-03 Ziemowit Laski Radar 4174833 * dbxout.c (dbxout_type_fields): For Objective-C classes, recursively output fields for superclasses first. 2005-08-03 Fariborz Jahanian Radar 4188876 * c-typeck.c (pop_init_level): Issue diagnostic on non-constant vector initializers. 2005-08-03 Dale Johannesen * loop.c (scan_loop): Disable optimizations of loops that start with a jump into their middle. 2005-08-01 Devang Patel Radar 4168568 * c-incpatch.c (hmap_construct_pathname): Remove case mismatch warning. 2005-07-30 Fariborz Jahanian Radar 4152603 * c-common.c (c_common_att): New entry added for "nodebug". (handle_nodebug_attribute): New function. * tree-inline.c (call_location_p, call_location): New fields in struct inline_data. (copy_body_r): Set new location of copied tree, if available. (expand_call_inline): If callee's '__nodebug__' attribute is set, use caller's input_location for copied trees. * config/i386/emmintrin.h: All intrinsic functions have "__nodebug__" Added to their declarations. * config/i386/mmintrin.h: Ditto. * config/i386/pmmintrin.h: Ditto. * config/i386/xmmintrin.h: Ditto. 2005-07-29 Devang Patel Radar 4134283 * c-decl.c (ext_block): New static variable. (c_write_global_declarations): Optimize before wrapping up globals. 2005-07-28 Stuart Hastings Radar 4178585 * config/rs6000/rs6000.c (optimization_options): Override -Os inlining default, set to 90. * config/i386/i386.c (optimization_options): Raise from 30 to match above. 2005-07-26 Dale Johannesen * postreload-gcse.c (alloc_mem): Start CUID numbering at 1. 2005-07-22 Devang Patel Radar 4167759 * common.opt (flimit-debug-info): New. * doc/invoke.texi: Document -flimit-debug-info. 2005-07-21 Fariborz Jahanian Radar 4187164 * c-common.c (print_cw_asm_operand): Recognize and handle a PIC address expression. * c-typeck.c (parser_build_binary_op): Generate PIC address tree. * function.c (init_function_start): Move fralloc info to asm function declaration. * print-tree.c (print_node): Print extra info for asm function. * reload1.c (init_elim_table): asm function does not need frame pointer. * tree-cfg.c (set_bb_for_stmt): Make PIC label unique inside PIC expression. * config/rs6000/rs6000.c (rs6000_stack_info): Set stack size according to setting of fralloc directive. * rs6000.md (return, return_internal_si): Don't generaate 'blr' with nofralloc. 2005-07-19 Devang Patel Radar 4183032 * tree-vectorizer.c (vect_loop_location): New. (vect_print_dump_info): Use vect_loop_location. (vectorize_loops): Set vect_loop_location. 2005-07-15 Devang Patel Radar 4182529 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Use absolute value of distance vector. 2005-07-14 Fariborz Jahanian Radar 4178242 * c-common.c (print_cw_asm_operand): Add a new argument to return the label declaration in. (cw_asm_label): Add label declaration, if any, to asm_expr tree. (get_cw_asm_label): Build and return a label declaration tree instead of a node_identifier for the label. (cw_asm_labelno): Make it static. * c-common.h: Remove extern declaration of cw_asm_labelno. * c-typeck.c (parser_build_binary_op): Check for a spurious label decl tree and return an error node instead. (cw_asm_c_build_component_ref): If a label declaration, get its underlying identifier node. * tree-cfg.c (set_bb_for_stmt): Generate a unique label name for the asm_expr's generic label name, if any. * tree.def (ASM_EXPR): Define a new field for it. * tree.h (ASM_LABEL): New macro definition. * cp/semantics.c (finish_asm_stmt): Building of ASM_EXPR tree requires a new argument. 2005-07-14 Dale Johannesen Radar 4174405 * calls.c (expand_call): Don't let sibcalls clobber caller's stack space on x86. 2005-07-14 Stuart Hastings Radar 4150746 * config/i386/i386.c (ix86_file_end): Move get_pc_thunks to __TEXT,__textcoal_nt. * config/darwin.h: Remove darwin_textcoal_nt_section. * config/darwin-proto.h: Likewise. 2005-07-14 Dale Johannesen Radar 4095526 * rs6000.c: Fix local comment. 2005-07-14 Stuart Hastings Radar 4177798 * build_gcc: Default to -msse2 -march=pentium-m -mtune=prescott. 2005-07-13 Dale Johannesen Radar 4175845 * tree-ssa-loop-im.c (for_each_index): Permit VIEW_CONVERT_EXPR with int constant operand. 2005-07-12 Dale Johannesen Radar 4095526 (mainline) * expr.c (compress_float_constant): Add cost check. * config/rs6000.c (rs6000_rtx_cost): Adjust FLOAT_EXTEND cost. 2005-07-12 Devang Patel Radar 4172062 : Take 2 * final.c (final_start_function): Supress debug hooks while making symbol repository. (final_scan_insn): Same. * passes (rest_of_handle_final): Same. * dbxout.c (dbxout_function_end): Do not disable FUN stabs when symbol separation is ON. (dbxout_begin_prologue): Do not disable BNSYM stabs when symbol separation is ON. (dbxout_source_line): Do not disable SLINE stabs when symbol separation is ON. (dbxout_symbol, dbxout_symbol_location): Do not disable STSYM and LCSYM stabs when symbol separation is ON. (dbxout_output_lbrac, dbxout_output_rbrack): Do not disable LBRAC and RBRAC stabs when symbol separation is ON. 2005-07-08 Devang Patel Radar 4172150 * dbxout.c (dbxout_type): Check Objective-C++ lang also. 2005-07-08 Dale Johannesen Radar 4173477, 4173754, 4173757, 4173774, 4174030 * tree-sra.c (decide_block_copy): Disallow integer copies bigger than DImode. 2005-07-07 Devang Patel Radar 4172062 * dbxout.c (dbxout_function_end): Disable FUN stabs when symbol separation is ON. (dbxout_begin_prologue): Disable BNSYM stabs when symbol separation is ON. (dbxout_source_line): Disable SLINE stabs when symbol separation is ON. (dbxout_symbol, dbxout_symbol_location): Disable STSYM and LCSYM stabs when symbol separation is ON. (dbxout_output_lbrac, dbxout_output_rbrack): Disable LBRAC and RBRAC stabs when symbol separation is ON. 2005-07-06 Dale Johannesen Andrew Pinski Radar 4158356 * tree-sra.c (enum copy_how): New. (struct sra_elt): Change use_block_copy to how_to_copy. (instantiate_element_integer): New. (decide_block_copy): Rewrite logic. (generate_copy_inout): Use how_to_copy. (generate_element_zero): Ditto. (scalarize_copy): Ditto. (scalarize_init): Ditto. (scalarize_ldst): Ditto. 2005-06-30 Devang Patel * doc/invoke.texi: Document -fsave-repository. 2005-06-30 Devang Patel * c-opts.c (c_common_handle_option): Handle OPT_fsave_repository. Set flag_pch_file. * c.opt (fsave-repository=): New. * dbxout.c: Use dbx_out_file instead of asm_out_file. (dbx_out_file): New. (dbxout_init): Open dbx_out_file for writing. (emit_bincl_stab): Emit EXCL and BINCL stabs with checksum. (dbxout_finish): Close dbx_out_file. * flags.h (flag_pch_file, flag_save_repository): New. * gcc.c (pch): Invoke as when -fsave-repository is used. * toplev.c (asm_file_name2, flag_pch_file, flag_save_repository): New. (init_asm_output): Handle -fsave-repository. 2005-06-30 Fariborz Jahanian * opts.c (decode_options): Don't set -fforce-mem with -O2 and more. 2005-06-30 Stuart Hastings Radar 4131077, copied from FSF mainline. * config/i386/mmintrin.h: Mark vector intrinsics always_inline. * config/i386/emmintrin.h: Likewise. * config/i386/pmmintrin.h: Likewise. * config/i386/xmmintrin.h: Likewise. 2005-06-28 Dale Johannesen Radar 4163069 * config/darwin-c.c (darwin_pragma_options): Add handling for second parameter. 2005-06-22 Ziemowit Laski Radar 4154928 * c-common.h (objc_common_type): New prototype. * c-typeck.c (build_conditional_expr): For two ObjC pointer types, use their ObjC common type. * stub-objc.c (objc_common_type): New stub. 2005-06-21 Ziemowit Laski Radar 4149909 * config/darwin.c (machopic_select_section): constant ObjC string objects now always have type "__builtin_ObjCString". 2005-06-20 Dale Johannesen Radar 4087330 * calls.c (expand_call): Enable indirect sibcalls unconditionally. * config/i386/i386.c (ix86_function_ok_for_sibcall): Allow indirect sibcalls on Darwin when PLT considerations prohibit them on other OSs. 2005-06-20 Stuart Hastings Radar 4146993 * config/i386/i386.c (machopic_output_stub): Use only %ecx. 2005-06-20 Dale Johannesen Radar 4151537 * config/rs6000/rs6000.md (UNSPEC_LD_MPIC_L): New. * config/rs6000/darwin.md (load_macho_picbase_label): New. (load_macho_picbase_label_si): New. (load_macho_picbase_label_di): New. * config/rs6000/rs6000.c (objc_method_using_pic): Remove. (name_encodes_objc_method_p): Rewrite. (rs6000_emit_prologue): Rewrite "ObjC method use of R12". 2005-06-15 Devang Patel Undo 2005-06-04 Devang Patel * dbxout.c (struct dbx_file): Apply GTY markers. (dbxout_init, dbxout_start_source_file): Use ggc_alloc instead of xmalloc. 2005-06-15 Geoffrey Keating * varasm.c (replace_weak): Make 'static'. 2005-06-10 Dale Johannesen Fixes from mainline. Radar 4137102, 4141805, 4104248 * config/i386/i386.md (movqi_1): Fix case where source is memory and destination EDI. * tree-nested.c (finalize_nesting_tree_1): Disable warn_padded around layout_type call. * cfgcleanup.c (try_crossjump_to_edge): update_forwarder_flag for src2 if src2 has been split. 2005-06-04 Devang Patel * dbxout.c (struct dbx_file): Apply GTY markers. (dbxout_init, dbxout_start_source_file): Use ggc_alloc instead of xmalloc. 2005-06-04 Dale Johannesen Radar 4131839 (from mainline) * config/rs6000/rs6000.c (insn-addr.h): Don't include. (no_global_regs_above): New. (rs6000_emit_prologue): Use it; cosmetic formatting fixes. (rs6000_emit_epilogue): Use it; cosmetic formatting fixes. (rs6000_conditional_register_usage): Don't put Darwin PIC register in global_regs. (rs6000_override_options): Add -fgcse-las to -fast. Remove clear of -fspeculative-prefetching. (rs6000_rtx_mult_cost): Remove. (rs6000_stack_info, rs6000_emit_prologue, rs6000_emit_epilogue): Adjust LOCAL comments. (rs6000_is_costly_dependence): Look under ZERO/SIGN_EXTEND for MEMs. * config/rs6000/rs6000-protos.h (rs6000_rtx_mult_cost): Remove. 2005-06-03 Geoffrey Keating * gcc.c (macosx_vers_tbl): Handle '10.5'. 2005-06-02 Stuart Hastings * simplify-rtx.c(simplify_binary_operation, simplify_immed_subreg): Back out these extra checks (Chablis branch). 2005-05-31 Stuart Hastings Copy 2004-05-19 patch from Karma mainline onto Chablis branch: Radar 4124883, 4122515 * config/i386/i386.md (UNSPEC_LDQ, UNSPEC_MOVQ, UNSPEC_STOQ): New. * config/i386/sse.md (sse_loadqv4si, sse_storeqv4si, sse_movqv4si): Move UNSPECs inside patterns, incorporate new UNSPEC_ constants. 2005-05-27 Stuart Hastings Radar 41216124 * config.gcc: Darwin/x86 sets need_64bit_hwint=yes. * config.host: Darwin/x86 sets use_long_long_for_widest_fast_int=yes. * libcpp/configure.ac: Darwin/x86 sets need_64bit_hwint=yes. * libcpp/configure: Regenerated with autoconf. 2005-05-25 Ziemowit Laski * stub-objc.c (objc_comptypes): Remove for real. 2005-05-19 Ziemowit Laski Radar 4035492 * c-common.h (objc_comptypes): Remove prototype. (objc_compare_types, objc_volatilized_decl, objc_type_quals_match): New prototypes. * c-decl.c (objc_mark_locals_volatile): Streamline by calling objc_volatilize_decl(). * c-typeck.c (comp_target_types): Remove third parameter; do not call objc_comptypes(). (comptypes): Remove calls to objc_comptypes(). (build_function_call): Extend compatible prototype check to ObjC. (build_conditional_expr): Adjust call to comp_target_types(). (convert_for_assignment): Call objc_compare_types() instead of objc_comptypes(); adjust calls to comp_target_types(); call objc_type_quals_match() before issuing qualifier mismatch warnings. (build_binary_op): Call objc_compare_types() before issuing pointer mismatch warnings; adjust calls to comp_target_types(). * gimplify.c (gimplify_expr): Adjust APPLE LOCAL markers to point at new culprit. * stub-objc.c (objc_comptypes): Remove stub. (objc_compare_types, objc_volatilized_decl, objc_type_quals_match): New stubs. 2005-05-17 Devang Patel Radar 4119059 * config/altivec.md: Use u5bit_cint_operand and s5bit_cint_operand. * config/rs6000/rs6000.c (s5bit_cint_operand, u5bit_cint_operand): New. (rs6000_expand_unop_builtin): Fix signed 5 bits literal validation. 2005-06-01 Devang Patel Radar 4133801 * Makefile.in (c-lex.o): Depend on langhooks.h. (langhooks.o): Depend on debug.h. * c-lex.c (langhooks.h): Include. (fe_file_change): Use lang hooks instead of debug hooks. * langhooks-def.h (lhd_start_source_file, lhd_end_source_file, LANG_HOOKS_START_SOURCE_FILE, LANG_HOOKS_END_SOURCE_FILE): New. * langhooks.c (debug.h): Include. (lhd_start_source_file, lhd_end_source_file): New. * langhooks.h (struct lang_hooks): Two new members. 2005-05-19 Devang Patel Radar 4123684 * config/rs6000/rs6000.md (insvsi_internal1): Remove. 2005-05-19 Stuart Hastings Radar 4124883, 4122515 * simplify-rtx.c(simplify_binary_operation): Can't simplify vector shifts yet. (simplify_immed_subreg): Fail instead of asserting when asked for a TImode constant. * config/i386/i386.md(UNSPEC_LDQ, UNSPEC_MOVQ, UNSPEC_STOQ): New. * config/i386/sse.md(sse_loadqv4si, sse_storeqv4si, sse_movqv4si): Move UNSPECs inside patterns, incorporate new UNSPEC_ constants. 2005-05-12 Dale Johannesen Stuart Hastings * stor-layout.c (compute_record_mode): Put back 8-byte struct "hack", merged with FSF and 64-bit ABI changes. 2005-05-11 Stan Shebs Fix 64-bit varargs for Darwin (Radar 4028089). * config/rs6000/rs6000.h (rs6000_args): New field floats_in_gpr. * config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_flush): Add argument, add case for 8-byte register half-filled with a float. (rs6000_darwin64_record_arg_advance_recurse): Detect and handle single-precision floats specially. 2005-05-11 Devang Patel Radar 4110735 * config/rs6000/rs6000.md (insvsi_internal1): Fix operand[1]. 2005-05-10 Dale Johannesen Radar 4111151 * toplev.c (backend_init): Call init_caller_save unconditionally. 2005-05-10 Stuart Hastings Radar 4099020 Reinstall patch, omitting simplify-rtx change. * config/i386/sse.md (sse_loadqv4s, sse_storeqv4si, sse_movqv4si): New. * config/i386/i386.c (IX86_BUILTIN_MOVQ, IX86_BUILTIN_LOADQ, IX86_BUILTIN_STOREQ): New. (__builtin_ia32_movqv4si, __builtin_ia32_loadlv4si, __builtin_ia32_storelv4si): New. * emmintrin.h (_mm_loadl_epi64, _mm_storel_epi64, _mm_move_epi64): Use them. * config/i386/mmx.md: Exempt SSE subregs from multiword split. 2005-05-10 Stuart Hastings Radar 4078600 * stor-layout.c(compute_record_mode): Delete the "8-byte struct hack". 2005-05-10 Fariborz Jahanian Radar 4095567 * passes.c (rest_of_compilation): Readjust default stack boundaries for leaf functions with no vector code. 2005-05-09 Jon Ziegler Radar 4099020 Revert Stuart's patch for 4099020. 2005-05-09 Dale Johannesen Radar 4113078 * tree-inline.c (expand_call_inline): Propagate uses_vector bit correctly. 2005-05-07 Stuart Hastings Radar 4099020 * config/i386/sse.md (sse_loadqv4s, sse_storeqv4si, sse_movqv4si): New. * config/i386/i386.c (IX86_BUILTIN_MOVQ, IX86_BUILTIN_LOADQ, IX86_BUILTIN_STOREQ): New. (__builtin_ia32_movqv4si, __builtin_ia32_loadlv4si, __builtin_ia32_storelv4si): New. * emmintrin.h (_mm_loadl_epi64, _mm_storel_epi64, _mm_move_epi64): Use them. * config/i386/mmx.md: Exempt SSE subregs from multiword split. * simplify-rtx.c(simplify_immed_subreg): Exit cleanly if outermode too wide. 2005-05-06 Dale Johannesen Radar 4090661 * config/i386/i386.c (ix86_constant_alignment): Max out alignment of string constants at 4 bytes. 2005-05-05 Stuart Hastings * Radar 4078600 * stor-layout.c(compute_record_mode): Revert previous patch. 2005-04-04 Devang Patel * Radar 4095052 * varasm.c (replace_weak): New. (merge_weak): Use replace_weak. 2005-05-04 Stuart Hastings * Radar 4078600 * stor-layout.c(compute_record_mode): Remove flag_pic from "8-byte struct hack" test. 2005-05-03 Dale Johannesen Radar 4104248 * objc/objc-act.c: Include opts.h. * objc/Make-lang.in (objc-act.o): Ditto. * config/darwin-protos.h (machopic_picsymbol_stub2_section): New. * config/i386/i386.c: Include params.h. * config/i386/i386.md (movqi_1): Handle ESI/EDI destination. 2005-05-02 Mike Stump * Radar 4099000 * config/i386/lib1funcs.asm: Add ___i686.get_pc_thunk. to libgcc. * config/i386/t-darwin: Add. * config.gcc: Add i386/t-darwin. 2005-05-02 Dale Johannesen Radar 4102133 (PR 21293, Zdenek's patch) * tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of integer_zerop. * tree-gimple.c (is_gimple_min_invariant): Consider overflowed constants invariant. * fortran/trans-intrinsic.c (gfc_conv_intrinsic_ishft): Convert the argument of the shift to the unsigned type. 2005-04-28 Devang Patel Radar 4086969 * c-typeck.c (convert_for_assignment): Fix warn_discard_qual. 2005-04-28 Devang Patel Radar 4086969 * c-typeck.c (convert_for_assignment): Check warn_discard_qual. * c.opt (Wdiscard-qual): New. * doc/invoke.texi: Dcoument -Wdiscard-qual. 2005-04-28 Dale Johannesen Radar 4101687 * i386.c (legitimize_address): Canonicalize shifts correctly. 2005-04-28 Dale Johannesen Radar 4100712 (PR 21173, Dan Berlin's patch) * tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr on things we pass to force_gimple_operand. Don't try to special case min_invariants. 2005-04-28 Dale Johannesen Radar 4101973 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Back out patch for 4096578. * config/i386/i386.c (reset_optimization_options): Ditto. 2005-04-26 Dale Johannesen Radar 4099768 * config/i386/i386.c (ix86_split_long_mode): Adjust stack offsets for 128-bit long doubles correctly. 2005-04-26 Dale Johannesen Radar 4096578 * config/i386/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default omit-frame-pointer on with optimization. * config/i386/i386.c (reset_optimization_options): Ditto. 2005-04-26 Stuart Hastings Radar 4010496 * config/i386/x-darwin: Add -mdynamic-no-pic. 2005-04-25 Devang Patel Radar 4095956 * config/rs6000/darwin.h (REAL_LIBGCC_GCC): Use -lgcc_static. 2005-04-26 Stuart Hastings Radar 4096118 * build_gcc: Default to --with-arch=pentium4 --with-tune=prescott. * config/i386/darwin.h: Override OPTIONS_DEFAULT_SPECS. 2005-04-25 Devang Patel Radar 4095956 * config/darwin.h (REAL_LIBGCC_GCC): Use -lgcc_static. 2005-04-25 Devang Patel Radar 3954848 * dbxout.c (dbxout_type): Emit attribute vector. 2005-04-23 Dale Johannesen Radar 4097111 * opts.c (decode_options): Move cl_pf_opts_cooked setup... * toplev.c (process_options): ...to here. 2005-04-22 Dale Johannesen * common.opt (falign-functions=): Fix it. 2005-04-22 Devang Patel * config/rs6000/darwin.h: Update APPLE LOCAL markers to reflect FSF mainline check-in. 2005-04-21 Dale Johannesen Radar 3124235 * Makefile.in (options.o): New dependencies. (tree-optimize.o): Ditto. * c-decl.c (start_function): Record perfunc flags. * common.opt (falign-jumps, falign-labels, falign-loops): Add PerFunc, VarUint, VarExists. (fbranch-count-reg, fbranch-target-load-optimize, fbranch-target-load-optimize2, fbtr-bb-exclusive, fcaller-saves, fcprop-registers, fcrossjumping, fcse-follow-jumps, fcse-skip-blocks, fcx-limited-range, fdefer-pop, fdelayed-branch, fdelete-null-pointer-checks, fexpensive-optimizations, ffinite-math-only, ffloat-store, fforce-addr, fforce-mem, ffunction-cse, fgcse, fgcse-lm, fgcse-sm, fgcse-las, fgcse-after-reload, fguess-branch-probability, fif-conversion, fif-conversion2, fivopts, floop-optimize, floop-optimize2, fmath-errno, fmodulo-sched, fmove-loop-invariants, freschedule-modulo-scheduled-loops, fomit-frame-pointer, foptimize-register-move, foptimize-sibling-calls, fpeel-loops, fpeephole, fpeephole2, fprefetch-loop-arrays, fregmove, frename-registers, freorder-blocks, freorder-blocks-and-partition, frerun-cse-after-loop, frerun-loop-opt, frounding-math, fsched-interblock, fsched-spec, fsched-spec-load, fsched-spec-load-dangerous, fsched2-use-superblocks, fsched2-use-traces, fschedule-insns, fschedule-insns2, fsignaling-nans, fsplit-ivs-in-unroller, fvariable-expansion-in-unroller, fstrength-reduce, fthread-jumps, ftracer, ftrapping-math, ftrapv, ftree-ccp, ftree-ch, ftree-combine-temps, ftree-copyrename, ftree-dce, ftree-dominator-opts, ftree-dse, ftree-fre, ftree-loop-im, ftree-loop-linear, ftree-loop-ivcanon, ftree-loop-memset, ftree-loop-optimize, ftree-pre, ftree-sra, ftree-ter, ftree-lrs, funroll-loops, funroll-all-loops, funsafe-math-optimizations, funswitch-loops, ftree-vectorize, fweb, fwrapv): Add PerFunc. (fsched-verbose): Add Var, UInteger, PerFunc, VarUint. (fsched-stalled-insns-dep): Add PerFunc, VarUint. (p): Add VarExists. * final.c (asm_insn_count): Replace "optimize" by "optimizing". (final): Ditto. (final_scan_insn): Ditto. * flags.h (optimize, optimize_size): Remove. * haifa-sched.c (sched_verbose_param): Remove. (fix_sched_param): Remove. * loop.c (struct loop_mem_info): Replace "optimize" by "optimizable". (insert_loop_mem, load_mems): Adjust references. * opt-functions.awk (flag_set_p): New. (switch_flags): Add VarUint, PerFunc. (var_ref): Handle them. (access_ref): New. * optc-gen.awk (END): Substantial rewrite to handle PerFunc, VarUint. * opth-gen.awk (END): Ditto. * opts.c (hashtab.h): New include. (handle_option): Use access_flag. (set_flags_from_O): New. (decode_options): Split out set_flags_from_O. Save cl_pf_opts_cooked. (common_handle_options): Remove special cases for align-functions, align-jumps, align-labels, align-loops, sched-verbose, sched-stalled-insns-dep. Use access_flag. (cl_perfunc_opts_hash_table, hash_cl_perfunc_opts, cmp_cl_perfunc_opts, make_perfunc_opts, func_cl_pf_opts_mapping_hash_table, struct func_cl_pf_opts_mapping, func_cl_pf_opts_mapping_hash, func_cl_pf_opts_mapping_eq, record_func_cl_pf_opts_mapping, restore_func_cl_pf_opts_mapping, copy_func_cl_pf_opts_mapping): New. * opts.h (set_flags_from_O, record_func_cl_pf_opts_mapping, restore_func_cl_pf_opts_mapping, copy_func_cl_pf_opts_mapping): New. (struct cl_option): Add access_flag. (CL_VARUINT, CL_PERFUNC): New. * toplev.c (optimize, optimize_size): Remove. (print_switch_values): Use access_flag. * toplev.h (flag_loop_optimize, flag_crossjumping, flag_if_conversion, flag_if_conversion2, flag_peel_loops, flag_rerun_cse_after_loops, flag_thread_jumps, flag_tracer, flag_unroll_loops, flag_unroll_all_loops, flag_unswitch_loops, flag_cprop_registers, flag_loop_optimize2): Remove. * tree-optimize.c (opts.h): New include. (tree_rest_of_compilation): Restore saved opts from definition. * config/darwin-c.c (flags.h, opts.h, varray.h): New includes. (darwin_pragma_reverse_bitfields): Fix obvious spelling bug. (va_opt, push_opt_level, pop_opt_level, darwin_pragma_opt_level, darwin_pragma_opt_size): New. * config/darwin-protos.h (darwin_pragma_opt_level, darwin_pragma_opt_size, reset_optimization_options): New. * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Add optimization_level, optimize_for_size. * config/t-darwin (darwin-c.o): New dependencies. * config/i386/i386.c (reset_optimization_options): New. * config/rs6000/rs6000.c (reset_optimization_options): New. * config/rs6000/rs6000.h (optimize, flag_expensive_optimizations): Remove. * cp/Make-lang.in (cp/decl.o): New dependency. * cp/decl.c (opts.h): New include. (build_library_fn_1): Record perfunc opts. (start_preparsed_function): Propagate saved opts to existing forward decl. (start_function): Record perfunc opts. * doc/extend.texi (pragma optimization_level, optimize_for_size): Document. * objc/objc-act.c (objc_start_function): Record perfunc opts. 2005-04-21 Dale Johannesen Radar 4080945 PR 20742 * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New. * tree-chrec.c (params.h): New include. (chrec_fold_plus_1): Avoid too deep recursion. (reset_evolution_in_loop): Use build2 not build. (tree_contains_chrecs): Add size argument. * tree-chrec.h (tree_constains_chrecs): Add size argument. (tree_does_not_contain_chrecs): Adjust call to it. * tree-scalar-evolution.c (simple_iv): Ditto. * doc/invoke.texi (scev-max-expr-size): Document. 2005-04-21 Devang Patel Radar 4080840 * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New. 2005-04-20 Mike Stump Radar 4077104 * c-common.c (print_cw_asm_operand): Handle -40(sp) in C++ CW asms better. 2005-04-20 Stuart Hastings * Radar 4067496 * config/i386/i386.c (optimization_options): Raise inlining limits under -Os. 2005-04-20 Fariborz Jahanian * expr.c (emit_single_push_insn): Radar 4087332. 2005-04-18 Devang Patel * config/rs6000/atlivec.md (mulv4si3): Update APPLE LOCAL markers to reflect check-in on mainline. 2005-04-15 Devang Patel Radar 3972875 * config/rs6000/atlivec.md (mulv4si3): New pattern. 2005-04-15 Stuart Hastings Radar 4087864 * config/darwin-protos.h: Extern for machopic_symbol_stub2_section. * config/i386/i386.c (machopic_output_stub): Fix stubs targeted for deeply-pipelined CPUs. 2005-04-15 Caroline Tice Radar 4078608 * config/darwin.c (machopic_select_section): Change name for function to switch to cold text section to unlikely_text_section (the correct function name, in varasm.c). * config/darwin.h (SECTION_FUNCTION): Remove code that created a second (incorrect) function for switching to cold text section. 2005-04-14 Devang Patel Radar 4080840 * common.opt (falign-jumps-max-skip, falign-jumps-max-skip=, falign-loops-max-skip, falign-loops-max-skip=): New. * opts.c (common_handle_option): Handle new falign-loops-max-skip and falign-jumps-max-skip options. * doc/invoke.texi: Document -falign-jumps-max-skip and -falign-loops-max-skip. * toplev.c (align_jumps_max_skip, align_loops_max_skip): Remove. 2005-04-14 Devang Patel Radar 3972515 * config/rs600/altivec.md (altivec_vsr): Rename to .. (lhsr3): ... new name. (altivec_vsra): Rename to .. (ashr3): ... new name. * config/rs6000/rs6000.c (builtin_description): Rename shift operations. 2005-04-12 Geoffrey Keating Radar 4087079 * rtlanal.c (subreg_regno_offset): Compute offset into float subregs on x86 properly. (subreg_offset_representable_p): Likewise. 2005-04-08 Ziemowit Laski Radar 4055183 * c-common.h (objc_rewrite_function_call): New prototype. * c-typeck.c (build_function_call): Call objc_rewrite_function_call() to handle casts. * stub-objc.c (objc_rewrite_function_call): New stub. 2005-04-08 Devang Patel Radar 4044861 * config/darwin-drver.c (save_temps_seen): New. (main): Reject -save-temps with multiple -arch options. 2005-04-07 Fariborz Jahanian Radar 4063657 (part 2). * c-common.c (cw_process_arg): Remove from 'uses' list any register which ends up on an output or input list. (cw_asm_stmt): New 'uses' argument is passed to cw_process_arg. 'uses' list is added to 'clobber' list. (print_cw_asm_operand): When building 'uses' list do not duplicate a hard register on this list. 2005-04-07 Devang Patel Radar 4069922 * tree-sra.c (decide_block_copy): Disable scalarization of sub-elements. 2005-04-05 Fariborz Jahanian Radar 4063657 (part 1). * c-common.c (print_cw_asm_operand): Added a new argument to track use of hard registers. Return any use of hard register to caller in a tree-list form. (cw_asm_stmt): Add tree-list of hard register register uses to ASM_EXPR statement tree. (cw_asm_label): Add the extra argument when building ASM_EXPR. (cw_asm_entry): Ditto. * c-typeck.c (build_asm_expr): Ditto. * cp/semantics.c (finish_asm_stmt): Ditto. * recog.c (asm_noperands): Bypass USE seen in asm_operand. (decode_asm_operands): Ditto. * stmt.c (expand_asm_operands): Insert list of use of hard registers in the asm_operand rtl following the clobber list. (expand_asm_expr): Pass hard register usage tree-list to expand_asm_operands. * tree.def (ASM_EXPR): Tree now takes an extra argument. * tree.h (ASM_USES): New macro defined. 2005-04-02 Ziemowit Laski Radar 4072153 * tree.c (build2_stat): Never mark tcc_expression-class nodes as constant, unless AltiVec PIM support has been selected and we have a compound expression with constant elements. 2005-04-01 Jon Ziegler Radar 4075524 * ginclude/tgmath.h (scalbn) Change to use __TGMATH_REAL_1_2 macro. (scalbln) Likewise. 2005-03-31 Dale Johannesen * print-tree.c (print_node): Handle STATEMENT_LIST (mainline). 2005-03-29 Dale Johannesen Radar 3955567 * stor-layout.c (place_field): Reverse bitfields if pragma was set. * target-def.h (TARGET_REVERSE_BITFIELDS_P): New, defaults to false. * target.h (struct gcc_target): Add reverse_bitfields_p. * config/darwin-c.c (darwin_pragma_reverse_bitfields): New. * config/darwin-protos.h: Declare it. * config/darwin.c (darwin_reverse_bitfields): Define, initialize to 0. * config/darwin.h: Declare it. (DARWIN_REGISTER_TARGET_PRAGMAS): Add reverse_bitfields. * config/rs6000/rs6000.c (rs6000_reverse_bitfields_p): New. (TARGET_REVERSE_BITFIELDS_P): Use it. (rs6000_override_options): Set darwin_reverse_bitfields to 0. 2005-03-24 Dale Johannesen Radar 3982365 * cp/tree.c (cp_tree_equal): Fix from mainline. 2005-03-22 Devang Patel Radar 4023104 * config/darwin-driver.c (dash_capital_m_seen): Remove. (main) : Do not handle -M options. 2005-03-21 Stuart Hastings Radars 3805723 4010664 3965893 4010496 4015764 * config/mh-x86-darwin: New; now bootstraps with -mdynamic-no-pic on Darwin/x86. * configure.in: Now bootstraps with -mdynamic-no-pic on Darwin/x86. * configure: Re-autoconfiscated with above. * config/darwin-protos.h (machopic_lazy_symbol_ptr2, machopic_lazy_symbol_ptr3): New lazy_symbol_ptr sections for new Darwin/x86 stubs. (darwin_texcoal_nt_section): New section for set_pc_thunk pic-base settors. * config/darwin.c (machopic_symbol_defined_p): No longer static. (machopic_indirect_data_reference): Revise to support -mdynamic-no-pic for x86. * config/darwin.h (machopic_lazy_symbol_ptr2, machopic_lazy_symbol_ptr3, machopic_picsymbol_stub2, darwin_textcoal_nt): New sections. * config/i386/darwin.h (CC1_SPEC): Un-disable -mdynamic-no-pic option. (TARGET_ASM_FILE_END): Use darwin_x86_file_end. (darwin_x86_file_end): New. (TARGET_DEEP_BRANCH_PREDICTION, MASK_MACHO_DYNAMIC_NO_PIC, TARGET_DYNAMIC_NO_PIC): Un-disable for x86. (SUBTARGET_OVERRIDE_OPTIONS): New arch/tune/fpmath defaults for Darwin/x86. * config/i386/i386.c (override_options): New diagnostic for "-fPIC -mdynamic-no-pic." (get_pc_thunk_name): Mach-O support. (ix86_output_function_epilogue): Isolate labels from the end of Mach-O sections with a NOP. (legitimate_constant_p, legitimze_address, print_operand, ix86_expand_move, machopic_output_stub): Darwin -mdynamic-no-pic support. (darwin_x86_file_end): New; appends set_pc_thunks at end of compilation. * config/i386/i386.h: Update unused-bits comment. * cp/optimize.c: Wire the decloner OFF. 2005-03-18 Geoffrey Keating * doc/include/sourcecode.texi: Update branch name. 2005-03-17 Geoffrey Keating * c-parse.in: Change number of expected conflicts to 15. 2005-03-14 Dale Johannesen Radar 4045984 * rtlanal.c (find_first_parameter_load): Rewrite to return actual first param load or the call if none, instead of first in block, when not all loads exist. 2005-03-11 Devang Patel * target.h: Reinsert one line comment. 2005-03-11 Ziemowit Laski Radar 3995882 * c-decl.c (objc_mark_locals_volatile): Mark local variables and parameters 'volatile' in ways expected by the C front-end. 2005-03-10 Devang Patel Radar 4040918 * c-opts.c (set_std_c89): Do not set lang if it is already set as CLK_ASM. 2005-03-09 Devang Patel * tree-vectorizer.c (vect_analyze_loop): Reorder data refs alignment analysis. 2005-03-08 Dale Johannesen * Makefile.in: Remove useless code from LNO branch. * tree-ssa-loop-ch.c: Local marker cleanup. * tree-pass.h: Ditto. * tree-ssa-loop.c: Ditto both the above. 2005-03-08 Dale Johannesen * Makefile.in: Remove useless code from LNO branch. * cfgloop.h: Ditto. * cfgloopmanip.c: Ditto. * common.opt: Ditto. * lambda-trans.c: Ditto. * opts.c: Ditto. * rtl.h: Ditto. * timevar.def: Ditto. * toplev.c: Ditto. * toplev.h: Ditto. * tree-flow.h: Ditto. * tree-optimize.c: Ditto. * tree-pass.h: Ditto. * tree-ssa-loop-ch.c: Ditto. * tree-ssa-loop.c: Ditto. * tree.h: Ditto. * varray.h: Ditto. 2005-03-07 Devang Patel * target-def.h (TARGET_VECT): Remove. * target.h (tree.h, tree-flow.h): Do not include. (struct gcc_target): Remove struct vect. * config/rs6000/rs6000.c (cfgloop.h): Do not include. (rs6000_support_misaligned_vloads, rs6000_permute_misaligned_vloads, rs6000_build_builtin_lvsl, rs6000_build_builtin_lvsr, rs6000_build_builtin_vperm, rs6000_support_vmul_uch_p, rs6000_build_vmul_uch, rs6000_support_vector_init_p, get_vector_init_fns_for_type, rs6000_build_vector_init): Remove. (TARGET_VECT_SUPPORT_MISALIGNED_LOADS, TARGET_VECT_PERMUTE_MISALIGNED_LOADS, TARGET_VECT_BUILD_BUILTIN_LVSL, TARGET_VECT_BUILD_BUILTIN_LVSR, TARGET_VECT_BUILD_BUILTIN_VPERM, TARGET_VECT_SUPPORT_VMUL_UCH_P, TARGET_VECT_BUILD_VMUL_UCH, TARGET_VECT_SUPPORT_VECTOR_INIT_P, TARGET_VECT_BUILD_VECTOR_INIT, TARGET_GIMPLIFY_VA_ARG_EXPR): Remove. * c-incpath.c (errors.h): Include. 2005-03-06 Devang Patel * config/darwin.h (LINK_COMMAND_SPEC): Remove foutput-dbg. 2005-03-06 Devang Patel * target-def.h (TARGET_VECT_SUPPORT_MISALIGNED_LOADS, TARGET_VECT_PERMUTE_MISALIGNED_LOADS, TARGET_VECT_BUILD_BUILTIN_LVSL, TARGET_VECT_BUILD_BUILTIN_LVSR, TARGET_VECT_BUILD_BUILTIN_VPERM, TARGET_VECT_SUPPORT_VMUL_UCH_P, TARGET_VECT_BUILD_VMUL_UCH, TARGET_VECT_SUPPORT_VECTOR_INIT_P, TARGET_VECT_BUILD_VECTOR_INIT): Remove redundant macros. 2005-03-06 Devang Patel Radar 4025991 * tree-vectorizer.c (vect_is_simple_cond): Now second parameter is loop_vec_info instead of loop *. (vectorizable_select): Supply loop_vec_info to vect_is_simple_use. (vect_build_dist_vector): Use loop nest's depth. 2005-03-06 Devang Patel * c-opts.c (c_common_handle_option): Remove QA_DISABLE_WERROR. 2005-03-06 Devang Patel * tree-ssa-operands.h (add_vdef): Remove. * tree.h (get_array_base): Remove. (swap_tree_comparison): Remove redundant decl. 2005-03-06 Devang Patel * varray.h (VARRAY_DG_INIT, VARRAY_DG): Remove. 2005-03-04 Dale Johannesen Radar 4025985 (partial) * config/rs6000/rs6000.c: Restore 64-bit ABI from mainline. * config/rs6000/rs6000.h: Ditto. 2005-03-03 Dale Johannesen Radar 3897244 * config/i386/darwin.h: Define REGISTER_TARGET_PRAGMAS and ROUND_TYPE_ALIGN. * config/i386/i386.c (x86_field_alignment): Support Mac68K alignment. 2005-03-02 Devang Patel Undo Radar 4023104 * config/darwin-driver.c (dash_capital_m_seen): Remove. (main) : Do not handle -M options. 2005-02-28 Ziemowit Laski Radar 4015382 * config/darwin.c (machopic_select_section): Do not place non-weak '::operator new' and '::operator delete' definitions in the coalesced section. 2005-02-27 Dale Johannesen Radar 4015911 * config/i386/i386.c (ix86_binds_local_p): New. (TARGET_BINDS_LOCAL_P): Use it. 2005-02-26 Dale Johanensen Radar 3988125 PR 19360 (from mainline) * tree-ssa-dom.c (tree_ssa_dominator_optimize): Clear SSA_NAME_VALUE at the end of the main DOM loop rather than just before DOM exits. 2005-02-25 Devang Patel Radar 4023104 * config/darwin-driver.c (dash_capital_m_seen): New. (main) : Handle -M options. 2005-02-24 Dale Johannesen * doc/extend.texi (nested function description): Improvement from mainline. 2005-02-23 Dale Johannesen Radar 4011924 PR 19241 (patch from mainline) * tree-inline.c (copy_body_r): Don't recurse when remapping variables. 2005-02-23 Devang Patel Radar 4021019 * config/rs6000/darwin.h (CC1_SPEC): Ignore -march=pentium4 and -mcpu=pentium4. * config/i386/darwin.h (CC1_SPEC): Ignore -mno-fused-madd. 2005-02-23 Devang Patel Radar 3841402 3841397 3841275 * config/darwin-driver.c (add_arch_options): Do not supply -march=i386. Interpret -arch pentIIm3 appropriately. 2005-02-22 Devang Patel Radar 3844827 Backport from Mainline. 2005-01-18 Andi Kleen * c-typeck.c (convert_for_assignment): Check warn_pointer_sign. * c.opt (-Wpointer-sign): Add. * doc/invoke.texi (-Wpointer-sign): Add. 2005-02-21 Dale Johannesen Radar 4015820 (missing piece) * objcp/objcp-lang.c: Use objc_gimplify_expr. 2005-02-21 Dale Johannesen Radar 4015820 * objc/objc-act.c (objc_gimplify_expr): New. * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Use it. * objc/objc-act.h: Declare it. Include tree-gimple.h. * objc/Make-lang.in: Add required tree-gimple.h's. * objcp/Make-lang.in: Ditto. 2005-02-21 Stan Shebs * config/darwin-c.c (darwin_pragma_options): Warn about uses of mac68k alignment pragma when 64-bit. 2005-02-21 Devang Patel Radar 3964387 * config/rs6000/darwin.h (CC1_SPEC): Ignore -msse and -msse2. 2005-02-19 Ziemowit Laski Radar 4014879 * config/rs6000/rs6000.md (call_nonlocal_sysv, sibcall_symbolic): Add handling of ABSCALL annotations. 2005-02-17 Devang Patel Radar 4008460 * tree-vectorizer.c (vect_analyze_data_ref_dependence): Check for NULL distance vector. 2005-02-17 Devang Patel Undo Radar 3964387 fix. 2005-02-17 Fariborz Jahanian Radar 3971074 * c-common.c (cw_asm_stmt): Generate .file and .line directives. Remove cw_asm_lineno declaration. * c-common.h: Add argument to cw_asm_stmt declaration, remove cw_asm_lineno declaration. * c-parse.in: Accurately pass line no information to cw_asm_stmt routine. 2005-02-17 Ziemowit Laski Radar 3635843, 3922342 * c-common.h (objc_generate_write_barrier): New prototype. * c-typeck.c (lvalue_or_else): Do not emit warning if '-Wno-non-lvalue-assign' has been specified. (build_modify_expr): Call objc_generate_write_barrier() if '-fobjc-gc' has been specified. * c.opt (-Wassign-intercept, -Wnon-lvalue-assign, -fobjc-direct-dispatch, -fobjc-gc): New options. * calls.c (emit_call_1): For functions with 'hard_coded_address' attribute, annotate the RTL call instruction with the address to use. * reg-notes.def (ABSCALL): New RTL annotation. * stub-objc.c (objc_generate_write_barrier): New stub. * config/darwin-protos.h (darwin_handle_objc_gc_attribute): New prototype. * config/darwin.c (darwin_handle_objc_gc_attribute): New function. * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add '-Wno-non-lvalue-assign' whenever '-fobjc-gc' is seen. (SUBTARGET_OS_CPP_BUILTINS): Define '__strong' and '__OBJC_GC__' macros as needed. (SUBTARGET_ATTRIBUTE_TABLE): Add 'objc_gc' attribute. * config/rs6000/rs6000.md (call_value_nonlocal_sysv, sibcall_value_symbolic): Add handling of ABSCALL annotations. 2005-02-16 Dale Johannesen Radar 4006687 PR 17767 et al (fix from mainline) * cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt any simplifications of vector mode comparison operators. * simplify-rtx.c (simplify_relational_operation): Fix variable name. 2005-02-15 Dale Johannesen Radar 3991611 Radar 3990578 PRs 19084 and 19348 (fix from mainline) * recog.c (peephole2_optimize): Do global life update if some peephole decides it doesn't need at least one of its inputs and that change influences liveness at the start of the basic block. * basic-block.h (EXECUTE_IF_AND_COMPL_IN_REG_SET): Needs 2 REGSET arguments instead of 1. 2005-02-15 Dale Johannesen Radar 3876378 Radar 3838108 PR 18109 (fix from mainline) * config/i386/i386.md (movhi_1): Remove previous attempt at a fix. (movqi_1): Ditto. Don't use 4-byte load when unsafe. 2004-02-16 Devang Patel Radar 3964387 * build_gcc: Build darwin-driver-rs6000.c and darwin-driver-i386.c * config/darwin-driver-rs6000.c: New file * config/darwin-driver-i386.c: New file * config/darwin-driver.h: New file * config/darwin-driver.c (darwin-driver.h): Include. (ppc_specific_args, ppc_specific_args_size, ppc_specific_arg_count, x86_specific_args, x86_specific_args_size, x86_specific_arg_count, is_ppc_specific_option, is_x86_specific_option): New. (remove_arch_options): New parameter. (add_arch_options): Insert arch specific options. (main): Interpret arch specific options. 2005-02-16 Fariborz Jahanian Radar 3970655 * c-common.c (prepend_char_identifier): Modified old get_atsign_identifier to handle any character. * c-common.h (prepend_char_identifier): New function declaration. Removed get_atsign_identifier declaration. * c-lex.c (c_lex_with_flags): Add '.' to those tokens which can start a CW asm statement. * c-parse.in (cw_identifier): New CW identifier syntax. 2005-02-15 Fariborz Jahanian Radar 3970646 * c-common.c (cw_asm_identifier): New routine. (cw_asm_stmt): call cw_asm_identifier on asm operator. * cp/parser.c (cp_parser_cw_asm_relative_branch): New routine. (cp_parser_cw_asm_postfix_expression): Call cp_parser_cw_asm_relative_branch to parse relative branch operand. 2005-02-14 Devang Patel Radar 4002184 * config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): Remove -ffix-and-continue. 2005-02-14 Fariborz Jahanian Radar 3971053 * cp/parser.c (cp_parser_unary_expression): Defer 'sizeof' in asm block to cp_parser_cw_asm_postfix_expression. (cp_parser_cw_asm_postfix_expression): Process sizeof here. Radar 3971060 * c-common.c (cw_asm_expr_val): New routine. (print_cw_asm_operand): Call cw_asm_expr_val to evaluate complex numeric expressions used in asm block. Radar 3971070 * c-parse.in (cw_asm_unary_expr): Error on undeclared type used in sizeof. * c-typeck.c (parser_build_binary_op): Check for use of undefined in asm block. * cp/typeck.c (build_x_binary_op): Ditto 2005-02-11 Ziemowit Laski Radar 3962013 (Part 2) * doc/invoke.texi: Document '-Wstrict-selector-match'. 2005-02-11 Devang Patel Radar 3996800 * gcc.c (cpp_uniq_options): Emit '-mconstant-cfstrings' option, if needed. 2005-02-09 Dale Johannesen Radar 3985162 Radar 3990505 * cselib.c (cselib_process_insn): Clear out regs where HARD_REGNO_CALL_PART_CLOBBERED is true at a call. * reload.c (find_equiv_reg): Ditto. 2005-02-06 Dale Johannesen Radar 3988061 * langhooks-def.h: add lhd_vtable_p, LANG_HOOKS_VTABLE_P * langhooks.c (lhd_vtable_p): New. * langhooks.h (struct lang_hooks): Add vtable_p. * config/rs6000/rs6000.c (rs6000_binds_local_p): Treat kext vtables as non-local-binding. * cp/cp-objcp-common.c (cp_vtable_p): New. * cp/cp-objcp-common.h: Use it for LANG_HOOKS_VTABLE_P. * cp/cp-tree.h: Declare it. 2005-02-06 Geoffrey Keating Radar 3984134 (again) * config/darwin-driver.c (do_compile): Update argc_count for target-specific options. (add_arch_options): Improve debug output. 2005-02-02 Mike Stump Radar 3981486 * objcp/lang-specs.h ("@objc++-cpp-output"): Add support for 3.3 language name for distributed builds. 2005-02-02 Geoffrey Keating Radar 3984134 * config/darwin-driver.c (initialize): Allow for extra NULL in new_argv. Update comment for lipo_argv. (do_lipo): Add NULL at end. Check for NULL at end when printing. (do_compile): Add NULL at end of current_argv. (main): Add NULL at end of new_argv. 2005-02-01 Devang Patel Radar 3983593 * c-pch.c (pch_matching[]): Add -faltivec. * c.opt (faltivec): Use flag_altivec as variable. * toplev.c (flag_disable_opts_for_faltivec): New. * flags.h (flag_disable_opts_for_faltivec): Same. 2005-01-31 Ziemowit Laski Radar 3978168 * c-typeck.c (lvalue_or_else): Allow certain non-lvalues as arguments to '&', and print appropriate warning. 2004-01-31 Devang Patel Radar 3978580 * varasm.c (const_hash_1): Check constant cfstring. (compare_constant): Same. * config/darwin-protos.h (darwin_constant_cfstring_p): New. * config/darwin.c (darwin_constant_cfstring_p): New. 2005-01-31 Roger Sayle Dale Johannesen Radar 3974393 * fold-const.c (fold_binary_op_with_conditional_arg): Make types match original operands, before STRIP_NOPS. (From mainline.) 2005-01-30 Ziemowit Laski Radar 3962013 * c.opt (Wstrict-selector-match): New option. 2005-01-28 Fariborz Jahanian Radar 3979484 * cp/typeck2.c (digest_init): Convert AltiVec-style vector constant to its internal tree representation. 2005-01-28 Fariborz Jahanian Radar 3967653 * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Diagnose 'long long' and 64bit 'long' vector declarations. 2005-01-26 Dale Johannesen Back out preceding change, which is wrong. 2005-01-26 Dale Johannesen Radar 3974393 PR 19650 * fold-const.c (fold_binary_op_with_conditional_arg): Make constant 0 or 1 be of correct type. 2005-01-27 Mike Stump Radar 3978098 * config/darwin.h (SUBTARGET_OS_CPP_BUILTINS): Move setting pascal_string for cpp from here... * config/darwin.h (SUBSUBTARGET_OVERRIDE_OPTIONS): ..to here. * c-cppbuiltin.c: Remove includes for pascal strings. * config/rs6000/rs6000.c (parse_in): Add. * config/i386/i386.c (parse_in): Add. 2005-01-26 Stuart Hastings Radar 3967989 * gimplify.c (shortcut_cond_expr): Re-compute side-effects. * testsuite/gcc.c-torture/execute/20050125-1.c: New. 2005-01-26 Ziemowit Laski Radar 3970884 * tree.c (reconstruct_complex_type): Reconstruct REFERENCE_TYPEs correctly, instead of turning them into POINTER_TYPEs. * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate all qualifiers from element type onto vector type. 2005-01-25 Dale Johannesen Radar 3941199 * config/rs6000/darwin-tramp.asm (__trampoline_setup): Make work for 64 bit. 2005-01-25 Dale Johannesen Radar 3944688 PR 19147 * config/rs6000/rs6000.md (andsi3_internal7, andsi3_internal8): Delete. 2005-01-25 Dale Johannesen Radar 3970057 * config/rs6000/rs6000.c (rs6000_return_in_memory): Implement Darwin 64-bit convention correctly. (rs6000_darwin64_record_arg_flush_pending): Compute correct reg for int field following doubles. 2005-01-24 Stuart Hastings Radar 3939078 * cgraphunit.c (cgraph_build_static_cdtor) Don't set DECL_IGNORED_P. 2005-01-24 Ziemowit Laski Radar 3961973 (Part 2) * c-typeck.c (lvalue_or_else): Acccept NON_LVALUE_EXPRs as cast expressions. 2005-01-23 Ziemowit Laski Radar 3961973 * c-common.c (flag_lvalue_cast_assign): Remove. * c-common.h (flag_lvalue_cast_assign): Remove. * c-opts.c (c_common_handle_option): Remove '-flvalue-cast-assign' handling. * c-typeck.c (lvalue_or_else): Change first parameter from 'tree' to 'tree *'; handle conditional lvalues in addition to lvalue casts; when rewriting expressions, create a new tree instead of clobbering an existing one. (build_unary_op, build_modify_expr, build_asm_expr): Adjust calls to lvalue_or_else(). * c.opt: Rename -flvalue-cast-assign to -fnon-lvalue-assign and add Var(...) and Init(...) annotation to create a flag. * doc/invoke.texi: Likewise; add description of lvalue conditional expressions and how they are transformed. 2005-01-21 Ziemowit Laski Radar 3951887 * gimplify.c (gimplify_expr): Adjust the type of INDIRECT_REFs after their argument is gimplified. 2005-01-19 Robert Bowdidge * config/darwin.h (SUBSUBTARGET_OVERRIDE_OPTIONS) Turn off -fweak whenever we're building kexts. * Makefile.in: Add -fno-non-call-exceptions to flags passed when building files for libcc_kext.a * mklibgcc: Move -fexception and -fnon-call-exceptions to start of command line so multilib machinery can override 2005-01-20 Dale Johannesen Radar 3966230 * config/rs6000/darwin.md (movsf_low_di): Make work. 2005-01-19 Dale Johannesen Radar 3961638 * config/rs6000/darwin.md (movdf_low_di): Make work. 2005-01-19 Mike Stump Radar 3962625 * c-incpath.c (hmap_construct_pathname): Warn when headermaps find files with mismatched case. 2005-01-13 Dale Johannesen Radars 3942172 3897795 3944716 3941494 * config/rs6000/rs6000.h (CUMULATIVE_ARGS): New fields intoffset, use_stack, named. * config/rs6000/rs6000.c (rs6000_darwin64_function_arg): Remove. rs6000_darwin64_record_arg_advance_flush_pending_int_fields: New. rs6000_darwin64_record_arg_advance_recurs: New. rs6000_darwin64_record_arg_flush_pending_int_fields: New. rs6000_darwin64_record_arg_recurs: New. rs6000_darwin64_record_arg: New. rs6000_return_in_memory: Remove AGGREGATE_TYPE_P check. function_arg_boundary: Handle 128-bit aligned structs. function_arg_advance: Rewrite darwin-64 struct handling. function_arg: Call rs6000_darwin64_record_arg. function_arg_partial_nregs: Handle darwin-64 structs. rs6000_darwin64_function_value: Remove. rs6000_function_value: Call rs6000_darwin64_record_arg. 2005-01-04 Anders Bertelrud Radar 3871393 * c-incpath.c: Merged in headermap code from GCC 3.3 source base, modifying it somewhat to work in GCC 4.0. (hmap_hash_string): Copied from GCC 3.3. (hmap_compare_strings): Copied from GCC 3.3. (hmap_load_header_map): Copied from GCC 3.3. (hmap_construct_pathname): Copied from GCC 3.3 and modified to have calling convensions for cpp_dir's 'construct' field. (remove_duplicates): If a search path refers to a file rather than a directory, we check if it's a headermap file immediately before we would have reported an error. If it is, call hmap_load_header_map and set up the 'construct' field of the cpp_dir. Otherwise, report the error as usual. 2005-01-17 Ziemowit Laski Radar 3951689 * c-common.h (objc_finish_try_stmt, objc_build_synchronized): Return 'tree' instead of 'void'. * stub-objc.c (objc_build_throw_stmt, objc_begin_try_stmt, objc_finish_try_stmt, objc_begin_catch_clause, objc_finish_catch_clause, objc_build_finally_clause, objc_build_synchronized: New stubs. 2005-01-15 Geoffrey Keating * gcc.c (macosx_version_min_required): Make static. 2005-01-14 Dale Johannesen Radar 3953308 * tree-ssa-dce.c: Remove all vestiges of LNO branch. * tree-flow.h (tree_ssa_dce_no_cfg_changes): Remove declaration. 2005-01-13 Stuart Hastings Radar 3236762 * config/i386/darwin.h (SUBTARGET_EXTRA_SPECS): Revert Mach-O arch back to i386, regardless of -force_cpusubtype_ALL. 2005-01-11 Stuart Hastings Radar 3943021 * config/rs6000/rs6000.md (maxsf3, minsf3, split, maxdf3, mindf3, split): disable when -flag-trapping-math. * config/rs6000/rs6000.c (rs6000_emit_minmax): Don't abort when #pragma fenv (-ftrapping-math) causes failure. 2005-01-11 Fariborz Jahanian Radar 3903960 * fold-const.c (fold_widened_comparison) Replace it with the one from FSF mainline. (fold_sign_changed_comparison): Ditto. 2005-01-10 Ziemowit Laski Radar 3943452 * config/rs6000/rs6000.c (altivec_convert_args): Clear any oveflows caused by integer literal conversions. 2005-01-09 Mike Stump Radar 3926955 * c-opts.c (c_common_handle_option): Remove wrong -faltivec code. * c.opt (faltivec): Remove wrong set 0. * config/rs6000/rs6000.c (rs6000_altivec_switch): Move -maltivec back into TARGET_SWITCHES. (rs6000_override_options): Likewise. * config/rs6000/rs6000.h (TARGET_SWITCHES): Likewise. (TARGET_OPTIONS): Likewise. (rs6000_altivec_switch): Likewise. 2005-01-10 Stuart Hastings Radar 3236762 * config/i386/darwin.h (SUBTARGET_EXTRA_SPECS): Revert Mach-O arch back to i386. 2005-01-09 Dale Johannesen Radar 3941146 Following patches from mainline: 2004-10-27 Daniel Berlin Fix PR tree-optimization/17133 * tree-cfg.c (rewrite_to_new_ssa_names_bb): Also rewrite must def kill operand. * tree-flow-inline.h: V_MUST_DEF_OP became V_MUST_DEF_RESULT. (get_v_must_def_result_ptr): Modify for new structure of v_must_defs array. (get_v_must_def_kill_ptr): New. (op_iter_next_use): Add support for the kill that occurs in V_MUST_DEFs. (op_iter_next_tree): Ditto. Also V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_next_def): V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_init): Initialize new mustu members. (op_iter_next_mustdef): New function. (op_iter_init_mustdef): Ditto. * tree-flow.h (rewrite_def_def_chains): New function. * tree-into-ssa.c (mark_def_sites): Handle mustdefkill operands. (ssa_mark_def_sites): Ditto. (rewrite_stmt): Ditto. (ssa_rewrite_stmt): Ditto. (rewrite_blocks): Factor out from rewrite_into_ssa. (mark_def_block_sites): Ditto. (rewrite_def_def_chains): New function, just rewrites def-def chains without phi node insertion. * tree-pass.h (TODO_fix_def_def_chains): New todo flag. * tree-optimize.c (execute_todo): Handle TODO_fix_def_def_chains. * tree-pretty-print.c (dump_vops): Print out MUST_DEF's so that they include the rhs now. * tree-ssa-ccp.c (visit_assignment): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-dce.c (mark_operand_necessary): Add phionly argument. Update callers. (mark_really_necessary_kill_operand_phis): New function. (perform_tree_ssa_dce): Call it. (pass_dce): Add TODO_fix_def_def_chains. (pass_cd_dce): Ditto. * tree-ssa-loop-im.c (determine_max_movement): Look at kills as well. (rewrite_mem_refs): Ditto. * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Look at kills as well. * tree-ssa-operands.c (allocate_v_may_def_optype): v_may_def_operand_type_t became v_def_use_operand_type_t. (allocate_v_must_def_optype) Ditto. (finalize_ssa_v_must_defs): Update for new operand type, as well as setting the use portion as well. (copy_virtual_operands): Copy the kill operand as well. (create_ssa_artficial_load_stmt): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-operands.h (v_may_def_operand_type): Renamed to v_def_use_operand_type. (v_must_def_optype_d): Use v_def_use_operand_type. (V_MUST_DEF_OP_*): Renamed to V_MUST_DEF_RESULT_* (V_MUST_DEF_KILL_*): New macros. (struct ssa_operand_iterator_d): Add num_v_mustu and v_mustu_i members. Rename existing must_i and num_v_must members to mustd_i and num_v_mustd. (SSA_OP_VMUSTDEFKILL): New flag. (SSA_OP_VIRTUAL_KILLS): New flag. (SSA_OP_ALL_OPERANDS): Add in SSA_OP_ALL_KILLS. (SSA_OP_ALL_KILLS): New flag. (FOR_EACH_SSA_MUSTDEF_OPERAND): New macro. * tree-ssa.c (verify_ssa): Verify virtual kills as well. * tree-vectorizer.c (vect_create_data_ref_ptr): V_MUST_DEF_OP became V_MUST_DEF_RESULT. (rename_variables_in_bb): Rename kill pointer as well. * tree-dfa.c (compute_immediate_uses_for_stmt): Add kills into the immediate uses. 2004-10-28 Daniel Berlin * tree-into-ssa.c (rewrite_virtual_phi_arguments): New function. (rewrite_blocks): Modify argument, and use it to decide which function to call. (rewrite_def_def_chains): Call rewrite_blocks with true here. (rewrite_into_ssa): and call it with false here. 2004-11-16 Daniel Berlin Fix PR tree-optimization/18519 * tree-optimize (execute_todo): Add case for TODO_cleanup_cfg. * tree-pass.h: Add TODO_cleanup_cfg. * tree-ssa-ccp.c (pass_ccp): Use TODO_cleanup_cfg. (ccp_finalize): Remove call to cleanup_cfg. * tree-ssa-dce.c (pass_dce): Use TODO_cleanup_cfg and TODO_dump_func. (pass_cd_dce): Ditto. (perform_tree_ssa_dce): Remove call to cleanup_cfg, dump_function_to_file. * tree-ssa-loop-ch.c (copy_loop_headers): Remove call to cleanup_cfg. (pass_ch): Add TODO_cleanup_cfg. * tree-ssa-loop.c (tree_ssa_loop_done): Remove call to cleanup_cfg. (pass_loop_done): Add TODO_cleanup_cfg. * tree-ssa-phiopt.c (pass_phiopt): Ditto. (tree_ssa_phiopt): Remove call to cleanup_cfg. 2005-01-08 Ziemowit Laski Radar 3913725 * c-common.c (flag_lvalue_cast_assign): New global variable. * c-common.h (flag_lvalue_cast_assign): Forward declare. * c-opts.c (c_common_handle_option): Handle '-f[no-]lvalue-cast-assign'. * c-typeck.c (lvalue_or_else): If expression is not an lvalue, check if it is a cast of an lvalue; if so, and if the cast involves POD types with identical size and aligment, rewrite '(type)expr' into '*(type *)&expr' and allow the result as an lvalue. * c.opt (flvalue-cast-assign): New flag. * invoke.texi: Document '-f[no-]lvalue-cast assign' flag. 2005-01-07 Devang Patel Radar 3943502 * stub-objc.c (objc_get_class_ivars): New. 2005-01-06 Ziemowit Laski Radar 3926755 * c-decl.c (builtin_function): Do not require AltiVec builtins to be explicitly declared. * config/rs6000/rs6000.c (altivec_cov_rt_1h): New function. (pim_flags): Add pim_rt_1h enumeration constant; renumber all pim_rt_... constants. (rs6000_fold_builtin): Select overload candidate before determining return type; call altivec_cov_rt_1h() during latter. (altivec_init_builtins): Create builtins corresponding to "specific operations" listed in AltiVec PIM; fix entry for "vec_re" to return a 'vector float'; fix entries for "vec_pack" to compute return vector type as having twice as many elements as the first argument. * config/rs6000/rs6000.h (rs6000_builtins): Add enumeration constants corresponding to AltiVec PIM "specific operations". 2005-01-06 Stan Shebs * config/rs6000/rs6000.c (rs6000_emit_prologue): Don't skip saving r31 if we must do a full stack frame. (rs6000_emit_epilogue): Similarly for restoring r31. 2005-01-06 Andrew Pinski Stuart Hastings Radar 3830232 * testsuite/gcc.apple/notailcall-1.c: New testcase. 2005-01-06 Stuart Hastings Radar 3941684 * c-common.c (print_cw_asm_operand): Casts for long long format. * gcc.c (process_command): Malloc overflowing static char array. * config/i386/dariwn.h (ASM_SPEC): Revert to i386. * config/i386/i386.h (STACK_BOUNDARY): Must be of indeterminate signedness. 2005-01-06 Mike Stump Radar 3929334 * c-pch.c (c_common_pch_pragma): Add indirection for pch files for distcc. 2005-01-04 Devang Patel Radar 3886137 Part 2. * cppdefault.c (INCLUDE_DEFAULTS): Enable isysroot override by default for all include paths. 2005-01-03 Fariborz Jahanian Radar 3936917 * config/rs6000/altivec.md (altivec_vandc): Correct RTL pattern and use its canonical form. 2005-01-03 Stuart Hastings Radar 3830232, Bugzilla 17526 * tree-gimple.c (is_gimple_mem_rhs): Force a temp for every register-candidate to prevent bad tailcalls. 2004-12-23 Dale Johannesen * config/darwin-c.c: Include options.h. (darwin_pragma_fenv): New. * config/darwin-protos.h: Declare it. * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register it. * config/t-darwin: Add new dependency. * config/rs6000/rs6000.c (optimization_options): Default trapping-math off. * config/i386/i386.c (optimization_options): Ditto. * fixincludes/inclhack.def: Add #pragma GCC fenv to . * fixincludes/fixincl.x: Regenerate. * testsuite/gcc.apple/apple-altivec-9.c: Add -ftrapping-math. * testsuite/gcc.apple/darwin-fsel-3.c: New. 2004-12-23 Dale Johannesen Radar 3926600 Following patches brought in from mainline * tree.c (iterative_hash_expr): Canonicalize builtins. PR tree-opt/16951 * tree-inline.c (setup_one_parameter): Don't directly map a parameter to the address of another variable of the same function. 2004-12-22 Fariborz Jahanian Radar 3765572 * expr.c (emit_push_insn): Remove unnecessary apple local stuff which previously handled partial arguments in mixed mode. 2004-12-20 Dale Johannesen Radar 3926484 * objc/objc-act.c (objc_get_callee_fndecl): New. * objc/objc-act.h: Declare it. * objc/objc-lang.c: Use it. * objcp/objcp-lang.c: Ditto. 2004-12-20 Matt Austern Radar 3845716 PR c++/19044 * c-common.c (set_builtin_user_assembler_name): New. * c-common.h (set_builtin_user_assembler_name): Declare. * c-decl.c (finish_decl): Use set_builtin_user_assembler_name 2004-12-20 Dale Johannesen Radar 3926488 * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Don't reference operand 1 of ADDR_EXPRs. 2004-12-20 Devang Patel Backport vectorizatin patches from Mainline. Radar 3907012 3917979 3917991 3917994 3917999 PR tree-optimization/18009 2004-11-03 Dorit Naishlos * tree-vectorizer.h (enum dr_alignment_support): New type. (MAX_NUMBER_OF_UNALIGNED_DATA_REFS): Removed. (LOOP_UNALIGNED_DR): replaced with LOOP_VINFO_UNALIGNED_DR and holds a single data_reference (instead of a varray of references). * tree-vectorizer.c (new_loop_vec_info): Likewise. (vect_gen_niters_for_prolog_loop): Likewise. (vect_update_inits_of_drs): Likewise. (vect_update_inits_of_drs): Setting of DR_MISALIGNMENT moved to vect_enhance_data_refs_alignment. (vect_do_peeling_for_alignment): Likewise. (vect_enhance_data_refs_alignment): Decide if and by how much to peel; this functionality used to be in vect_analyze_data_refs_alignment. Also update DR_MISALIGNMENT due to peeling; this functionality used to be in vect_update_inits_of_drs and vect_do_peeling_for_alignment). (vect_analyze_data_refs_alignment): Decision on whether and by how much to peel moved to vect_enhance_data_refs_alignment. Call vect_supportable_dr_alignment. (vect_compute_data_ref_alignment): Set STMT_VINFO_VECTYPE. (vect_compute_data_refs_alignment): Return bool. Consider return value of vect_compute_data_ref_alignment and return true/false accordingly. (vect_enhance_data_refs_alignment): Consider return value of vect_compute_data_refs_alignment and return true/false accordingly. (vect_supportable_dr_alignment): New function. (vectorizable_store): Call vect_supportable_dr_alignment. (vectorizable_load): Call vect_supportable_dr_alignment. Alignment support checks moved from here to vect_supportable_dr_alignment. (vect_transform_loop): Avoid 80 columns overflow. 2004-11-11 Dorit Naishlos * tree-vectorizer.c (update_phi_nodes_for_guard): Call reverse_phis. (vect_update_ivs_after_vectorizer): Update function documentation. Avoid quadratic behavior and direct write to PHI_ARG_DEF. 2004-11-14 Dorit Naishlos Andrew Pinski PR tree-opt/18425 * tree-vectorize.c (vect_build_loop_niters): Do not insert NULL into the instruction stream. Initialize new_bb to NULL. (vect_update_ivs_after_vectorizer): Likewise. (vect_gen_niters_for_prolog_loop): Likewise. PR tree-opt/18400 * tree-vectorizer.c (make_loop_iterate_ntimes): Set loop->nb_iterations. (vect_transform_loop_bound): Set loop->nb_iterations. 2004-11-14 Dorit Naishlos PR tree-opt/18400 * gcc.dg/vect/pr18400.c: New test. 2004-11-14 Dorit Naishlos Andrew Pinski PR tree-opt/18425 * gcc.dg/vect/pr18425.c: New test. 2004-11-14 Dorit Naishlos * gcc.dg/vect/vect-78.c: Now vectorized on powerpc*. 2004-11-19 Dorit Naishlos * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): New name for function previously called tree_duplicate_loop_to_edge. (slpeel_tree_duplicate_loop_to_edge_cfg): New name for function previously called tree_duplicate_loop_to_edge_cfg. (slpeel_update_phis_for_duplicate_loop): Prefix 'slpeel' added to function name. (slpeel_update_phi_nodes_for_guard): Likewise. (slpeel_make_loop_iterate_ntimes): Likewise. (slpeel_add_loop_guard): Likewise. (allocate_new_names, free_new_names): Function declaration moved to top of file. (rename_use_op, rename_def_op): Likewise. (rename_variables_in_bb, rename_variables_in_loop): Likewise. (vect_generate_tmps_on_preheader): Function declaration moved. (vect_transform_for_unknown_loop_bound): Added missing function declaration. 2004-11-19 Dorit Naishlos * tree-vectorizer.c (slpeel_can_duplicate_loop_p): New name for function previously called verify_loop_for_duplication. All conditions compacted into one compound condition. Removed debug dumps. (vect_analyze_loop_with_symbolic_num_of_iters): Removed. Some of the functionality moved to vect_can_advance_ivs_p, and some to vect_analyze_loop_form. (vect_can_advance_ivs_p): New function. Contains functionality that was taken out of vect_analyze_loop_with_symbolic_num_of_iters. (slpeel_tree_peel_loop_to_edge): Call slpeel_can_duplicate_loop_p. (vect_analyze_operations): Call vect_can_advance_ivs_p and slpeel_can_duplicate_loop_p. (vect_get_loop_niters): Added documentation. (vect_analyze_loop_form): Check the loop entry always - not only in case of unknown loop bound. Create preheader and exit bb if necessary. Apply a check that used to take place in vect_analyze_loop_with_symbolic_num_of_iters. (vectorize_loops): Call verify_loop_closed_ssa under ENABLE_CHECKING. Remove redundant call to rewrite_into_loop_closed_ssa. (vect_compute_data_refs_alignment): Removed obsolete comment. 2004-11-19 Dorit Naishlos * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Last two arguments removed. (slpeel_tree_peel_loop_to_edge): Call slpeel_make_loop_iterate_ntimes without last two arguments. Update single_exit of loops. (vect_update_niters_after_peeling): Removed. Its functionality was moved to vect_do_peeling_for_alignment. (vect_do_peeling_for_loop_bound): New name for function previously called vect_transform_for_unknown_loop_bound. (vect_transform_loop_bound): Call slpeel_make_loop_iterate_ntimes instead of code that duplicates the same functionality. (vect_do_peeling_for_alignment): Functionality of vect_update_niters_after_peeling moved here. (vect_transform_loop): Unify call to vect_do_peeling_for_loop_bound - previously named vect_transform_for_unknown_loop_bound - for both known and unknown loop bound cases. 2004-11-19 Andreas Tobler * tree-vectorizer.c (slpeel_verify_cfg_after_peeling): Define only if checking is enabled. 2004-11-22 Dorit Naishlos PR tree-opt/18544 * tree-vectorizer.c (vect_analyze_data_refs): Fail if memtag not found. 2004-11-22 Dorit Naishlos PR tree-opt/18536 * tree-vectorizer.c (make_loop_iterate_ntimes): Use type of niters when creating iv instead of integer_type. (vect_build_loop_niters): Remove redundant code. (vect_transform_loop_bound): Removed (duplicates functionality of make_loop_iterate_ntimes. (vect_gen_niters_for_prolog_loop): Add documentation. Call lang_hooks.types.type_for_size to create a type of the required size. Use that type instead of integer_type. Remove redundant code. (vect_update_niters_after_peeling): Use type of niters instead of integer_type. (vect_transform_loop): Unify handling of known and unknown loop bound cases. Call make_loop_iterate_ntimes instead of vect_transform_loop_bound. 2004-11-23 Dorit Naishlos PR tree-opt/18403 PR tree-opt/18505 * tree-vectorizer.c (vect_create_data_ref_ptr): Use lang_hooks.types.type_for_size instead of integer_type_node for the type of ptr_update. 2004-11-23 Dorit Naishlos * tree-vectorizer.c (vect_analyze_operations): Don't vectorize if the vectorization factor is greater than the iteration count. (vect_gen_niters_for_prolog_loop): No need to calculate min if the iteration count is known. (vect_build_symbol_bound): Removed. Its functionality moved to vect_generate_tmps_on_preheader. (vect_generate_tmps_on_preheader): Moved content of vect_build_symbol_bound here instead of calling it. Changed some variables names. (vect_build_loop_niters): We don't expect a new_bb to be generated - use gcc_assert. (vect_gen_niters_for_prolog_loop): Likewise. (vect_gen_niters_for_prolog_loo): Likewise. (slpeel_make_loop_iterate_ntimes): Use buildN instead of build. (slpeel_add_loop_guard): Likewise. (slpeel_tree_peel_loop_to_edge): Likewise. (vect_do_peeling_for_alignment): Likewise. (vect_get_first_index): Missing space. 2004-11-30 Dorit Naishlos PR tree-opt/18173 * tree-vectorizer.c (vect_can_force_dr_alignment_p): Return false for decls that are assembled before vectorization takes place. (vect_compute_data_ref_alignment): Set DECL_USER_ALIGN to 1. 2004-11-30 Dorit Naishlos * tree-vectorizer.c (vect_gen_niters_for_prolog_loop): Use tree_low_cst instead of TREE_INT_CST_LOW. 2004-11-30 Ira Rosen PR tree-opt/18607 * tree-vectorizer.c (vect_analyze_data_refs): Use temporary variable for data_reference when looking for memtag. 2004-12-02 Dorit Naishlos PR tree-opt/18716 * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Properly set then and else labels. 2004-12-17 Mike Stump Radar 3549855 * c-lex.c (c_lex_with_flags): Always do BOL processing for CW asms. 2004-12-17 Dale Johannesen Radar 3851659 * c-decl.c (disagnose_mismatched_decls): Fix from mainline. 2004-12-17 Fariborz Jahanian Radar 3914905 * c-typeck.c (digest_init): Handle case of vector literal initializer initializing a const variable. * convert.c (build_compound_literal_vector): New routine to generate a COMPOUND_LITERAL_EXPR expression for a vector constant. (convert_to_vector); call build_compound_literal_vector. 2004-12-16 Stuart Hastings Radar 3910248, 3915171 * config/rs6000/rs6000.c (output_call): correctly skip non-line-number notes. 2004-12-16 Ziemowit Laski Radar 3921172 * dbxout.c (dbxout_finish): Switch to .text section before emitting final SO STABS record. 2004-12-15 Dale Johannesen Radar 3619824 * config/rs6000/rs6000.c (optimization_options): Clear flag_errno_math. * doc/invoke.texi: Document that -fno-math-errno is the default. 2004-12-15 Ziemowit Laski Radar 3918376 * config/rs6000/rs6000.c (altivec_ovl_resolve): When matching 4-element vectors, allow V4SF in addition to V4SI modes. (rs6000_fold_builtin): If invalid arguments are provided, use the return type for the first overload candidate, if available. 2004-12-15 Ziemowit Laski Radar 3913672 * config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): For '-faltivec', pass in '-pim-altivec' instead of '-maltivec -maltivec-pim'. * config/rs6000/rs6000.c (rs6000_altivec_switch): New. (rs6000_override_options): Handle '-m(no)altivec' explicitly (rather than via TARGET_SWITCHES); for '-maltivec' and '-mcpu=xxx' (where xxx supports AltiVec), clear the flag_disable_opts_for_faltivec flag, move handling of '-m(no-)pim-altivec' (formerly '-m(no-)altivec-pim') before handling of -maltivec and -mcpu, and have it set MASK_ALTIVEC and flag_disable_opts_for_faltivec. * config/rs6000/rs6000.h (TARGET_SWITCHES): Move '-m(no-)altivec' to TARGET_OPTIONS. (TARGET_OPTIONS): Rename '-m(no-)altivec-pim' to '-m(no-)pim-altivec'; add in '-m(no-)altivec'. (rs6000_altivec_switch): New forward declaration. * doc/invoke.texi: Rename '-m(no-)altivec-pim' to '-m(no-)pim-altivec'; move description of disabled optimizations from '-faltivec' to '-mpim-altivec'. 2004-12-14 Stuart Hastings Radar 3910248 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): ignore -mlongcall when -m64 in use. 2004-12-14 Fariborz Jahanian Radar 3889727 brought in fix for PR target/18641 from FSF below. 2004-12-11 David Edelsohn Ulrich Weigand PR target/18641 * config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Reload all constants into all register classes intersecting with FLOAT_REGS via memory. * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Same. * config/rs6000/rs6000.md (movdi_internal32): Ignore FPRs when choosing register preferences. (movdi_internal64): Same. 2004-12-13 Mike Stump Radar 3865314 * c-common.c (convert_and_check): Add support for -Wshorten-64-to-32. * c.opt (Wshorten-64-to-32): Likewise. * doc/invoke.texi (Warning Options): Likewise. * Makefile.in (c-common.o): Added dependancy for options.h. 2004-12-10 Devang Patel Radar 3572046 (related) * tree-ssa-forwprop.c (cast_conversion_assignment_p): New. (replace_use_in_cond_expr): New. (all_uses_are_replacable): New. (eliminate_unnecessary_casts): New. (tree_ssa_forward_propagate_single_use_var): Eliminate unnecessary casts. 2004-12-10 Devang Patel Radar 3572046 (last patch) * config/rs6000/rs6000.c (rs6000_emit_vector_select): Adjust vector select insn parameters. 2004-12-10 Devang Patel Radar 3893659 * gcc.c (main): Do not break out of loop when error is reported while processing one source file. 2004-12-10 Ziemowit Laski Radar 3640156, 3877958 * config/rs6000/altivec.h: Skip contents of file #ifdef __APPLE_ALTIVEC__, and issue a warning. * config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): Do not 'include altivec.h' upon seeing '-faltivec'; instead, specify '-maltivec-pim'. * config/rs6000/rs6000-c.c: Include options.h. (rs6000_cpu_cpp_builtins): Define __APPLE_ALTIVEC__ and 'vec_step' macro only if '-maltivec-pim' has been specified. * config/rs6000/rs6000-protos.h (rs6000_fold_builtin): New prototype. * config/rs6000/rs6000.c (altivec_cov_rt_12, altivec_cov_rt_2p, altivec_cov_rt_1d, altivec_ovl_resolve, altivec_convert_args, rs6000_fold_builtin): New functions. (rs6000_altivec_inline_etc, rs6000_altivec_pim, rs6000_altivec_pim_switch): New variables. (rs6000_override_options): Handle '-m(no-)altivec-pim'. (vector_builtin_fns): Decorate with GTY(()) voodoo; do not reserve extra space for AltiVec PIM built-ins (since they won't be stored there.) (TARGET_FOLD_BUILTIN): Point at rs6000_fold_builtin(). (enum pim_flags, struct altivec_pim_info): New data types. (altivec_pim_table): New global variable. (def_pim_builtin): New macro. (altivec_init_builtins): If '-maltivec-pim' was specified, define AltiVec PIM operations and predicates as built-ins. (rs6000_handle_altivec_attribute): Add handling for 'element__' argument, which returns the element type of the vector type passed in. * config/rs6000/rs6000.h (enum rs6000_builtins): Append a new range, ALTIVEC_PIM__FIRST... ALTIVEC_PIM__LAST, representing built-in codes for AltiVec PIM operations and predicates. (TARGET_OPTIONS): Add '-m(no-)altivec-pim' option. (rs6000_altivec_inline_etc, rs6000_altivec_pim, rs6000_altivec_pim_switch): Forward-declare. * config/rs6000/t-rs6000 (rs6000-c.o): Depend on options.h. * doc/invoke.texi: Update '-faltivec' description; add description for '-maltivec-pim'. 2004-12-08 Mike Stump Radar 3679243 * varasm.c (assemble_variable): Don't use .zerofill for weak symbols as it isn't supported in the assembler. Also, key off !DECL_COMMON directly instead of flag_no_common so that C++ works. 2004-12-08 Devang Patel Radar 3903799 * config/darwin.h (ASM_SPEC): Supply -force_cpusubtype_ALL. 2004-12-07 Dale Johannesen Radar 3888787 * doc/invoke.texi (-msoft-float): Rewrite to reflect reality. 2004-12-07 Mike Stump Radar 3603833, 3896176, 3518821. * c-common.c (cw_asm_operands_arg): New. (print_cw_asm_operand): Add support for figuring out if the argument must be a register or a memory reference. (cw_asm_get_register_var): Likewise. (cw_op_constraint): Likewise. (cw_op_comp): Likewise. (cw_constraint_for): Likewise. (cw_process_arg): Likewise. (cw_asm_stmt): Likewise. (print_cw_asm_operand): Likewise. (cw_asm_get_register_var): Likewise. (cw_memory_clobber): Add support for figuring out if the instruction needs a memory clobber. (cw_asm_stmt): Likewise. (print_cw_asm_operand): Add support for static duration variables. (cw_get_identifier): New. (cw_ha16, cw_hi16, cw_lo16): New. (get_cw_asm_label): Add support for ha16(x), hi16(x) and lo16(x). * c-common.h (cw_get_identifier): New. * c-parse.in (cw_identifier): Add support for '+', '-' and '.' in C CW opcodes to allow for a less tightly coupled lexer. (single_cw_asm_stmt): Likewise. (cw_asm_operand): Add support for ha16(x)(r). * doc/extend.texi (Asm Blocks and Functions): Document memory clobbers and instructions that take a memory operand. 2004-12-06 Fariborz Jahanian Radar 3893215 Following FSF mainline patch fixes it. 2004-11-11 Zdenek Dvorak PR tree-optimization/17742 * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle MINUS_EXPR correctly. 2004-12-03 Dale Johannesen Radar 3905019 * opts.c (common_handle_option): Fix from mainline. 2004-12-03 Stuart Hastings Radar 3855246 * config/rs6000/rs6000.c (init_cumulative_args): Remove APPLE LOCAL. * config/rs6000/rs6000.h (target_flags): Remove APPLE LOCAL. (TARGET_OPTIONS): Add -mlong-branch as a synonym for -mlongcall. 2004-12-03 Caroline Tice Andrew Pinski Radar 3469752 (Adding loops-to-memset optimization) * Makefile.in (OBJS-common): Add tree-ssa-loo-memset.o to list (tree-ssa-loop-memset.o): Add rule for making this. * bitmap.h (bitmap_empty_p): New macro. * common.opt (ftree-loop-memset): Add new flag for optimization. * tree-flow.h (tree_ssa_memset): Add function declaration. * tree-optimize.c (init_tree_optimization_passes): Add loops-to-memset pass. * tree-pass.h (pass_memset): Add extern declaration for loops-to-memset pass. * tree-ssa-loop.c (tree_ssa_loop_memset, gate_tree_ssa_loop_memset): New functions. (pass_memset): Define new pass. * tree-ssa-loop-memset.c: New file. * tree-vectorizer.c (vect_is_simple_iv_evolution): Remove static forward declaration; make the function globally visible. (vect_get_loop_niters): Likewise. (vect_analyze_pointer_ref_access): Likewise. * tree-vectorizer.h (vect_is_simple_iv_evolution): Add external function declaration. (vect_get_loop_niters): Likewise. (vect_analyze_pointer_ref_access): Likewise. 2004-12-02 Devang Patel Radar 3855723 and 3886718 Backport from Mainline 2004-12-02 Devang Patel * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add -gfull and -gused. * config/rs6000/darwin.h (CC1_SPEC): Do not handle -gfull and -gused. * config/i386/darwin.h (CC1_SPEC): Same. 2004-12-02 Fariborz Jahanian Radar 3893215 - part 1 * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi): Added missing check for unknown evolution_of_loop. (from FSF mainline). 2004-11-30 Fariborz Jahanian Radar 3893125 * loop.c (loop_giv_reduce_benefit): Remove APPLE LOCAL patch which caused regression in galaxy(VMX) of skidmarks. 2004-11-24 Devang Patel * gcc.h: APPLE LOCAL marker cleanup. 2004-11-24 Devang Patel Radar 3876218 * gcc.c (process_command): Supply -v to linker. 2004-11-23 Stan Shebs * config.gcc (powerpc-*-darwin*): Remove bringup conditional. * mklibgcc.in: Don't try to make dylibs from static/kext libgcc. * config/t-slibgcc-darwin: Don't use SHLIB_MULTILIB. 2004-11-23 Devang Patel Radar 3886137 * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add isysroot. * config/darwin-c.c (darwin_register_frameworks): Use sysroot. 2004-11-22 Devang Patel Radar 3846092 * doc/invoke.text: Remove outdated docs for -fscalar-evolutions and -fall-data-deps. Document not disabling of -fstrict-aliasing, when auto vectorization is used, in Apple GCC compiler. * opts.c (decode_options): Disable -fstrict-aliasing only if -ftree-vectorize is not used. 2004-11-22 Dale Johannesen * config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Conditionalize properly and comment. 2004-11-21 Dale Johannesen * config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Define. (TARGET_TERMINATE_DW2_EH_FRAME_INFO): Remove dup definition. 2004-11-18 Dale Johannese * lambda-code.c: cosmetic changes to match mainline. 2004-11-17 Stuart Hastings Radar 3837835 * cgraph.c: add "#include ". (dump_cgraph_node) Add uses_vector bit to dump. * cgraphunit.c:(altivec_infection, fndecl_uses_vector_p) New. (record_call_1) Set uses_vector. (cgraph_create_edges) Set uses_vector. (cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining, cgraph_decide_inlining_incrementally) Check for altivec_infection. * testsuite/lib/scantree.exp (diff-tree-dumps): Expand globbing of 't??' dumpfile names to include 'ipa'. 2004-11-16 Devang Patel Merge stuff from autovect-branch. 2004-11-12 Devang Patel * optabs.c (vector_compare_rtx): Use COMPARISON_CLASS_P. 2004-11-12 Devang Patel Backport from Mainline. 2004-11-12 Sebastian Pop * tree-data-ref.c (analyze_subscript_affine_affine): Correctly compute the first overlapping iterations. 2004-11-12 Devang Patel * tree-data-ref.c (compute_subscript_distance): Make externally visible. (build_class_dist_vector): Same. * tree-data-ref.h (compute_subscript_distance): New external decl. (build_class_dist_vector): Same. * tree-vectorizer.c (loops_num): New variable. (vect_build_dist_vector): New function. (vect_analyze_data_ref_dependence): Use distance vector to determine dependence. (vect_analyze_data_ref_dependences): Remove local variable loop. (vect_analyze_loop): Analyze operations before data dependences (vectorize_loops): Remove local variable loops_num. 2004-11-12 Devang Patel * tree-vectorizer.c (vectorizable_select): New function. (vect_is_simple_cond): New function. (vect_analyze_operations): Handle conditional expr. * tree-vectorizer.h (stmt_vec_info_type): New member, select_vec_info_type. 2004-11-16 Dale Johannesen * tree-ssa.c (flush_pending_stmts): New. 2004-11-16 Dale Johannesen * config/rs6000/rs6000.c (rs6000_override_options): Put -ftree-loop-linear into -fast. 2004-11-16 Dale Johannesen * lambda-code.c: Make identical to mainline as of Nov 11, plus Dan Berlin's patch for swim. * tree-loop-linear.c: Make identical to mainline. * tree-data-ref.c: Make identical to mainline as of Nov 11. * tree-optimize.c (init_tree_optimization_passes): Make order of passes same as mainline. * tree-ssa-loop-ivopts.c (try_add_cand_for): Roll in Zdenek's patch for important candidates. 2004-11-16 Dale Johannesen * fold-const.c (try_move_mult_to_index): New. (fold): Use it (2 places). 2004-11-16 Dale Johannesen * tree.c (build_low_bits_mask): New. * tree.h: Declare it. * tree-ssa-loop-niter.c (number_of_iterations_cond): Use it. 2004-11-16 Devang Patel Related to Radar 3837835. * tree-cfg.c (ivu_gate, fndecl_uses_vector_p, identify_vector_use, pass_identify_vector_use): Remove. * tree-optimzie.c (init_tree_optimization_passes): Remove pass_identify_vector_use. * tree-pass.h (pass_identify_vector_use): Remove extern decl. 2004-11-16 Caroline Tice * varasm.c (assemble_start_function): Don't print out section label when aligning cold section. 2004-11-16 Dale Johannesen * dbxout.c (dbxout_source_file): Restore local patch for hot/cold partitioning. 2004-11-16 Dale Johannesen * calls.c (expand_call): Fix ICE building crafty. 2004-11-15 Dale Johannesen * profile.c (compute_branch_probabilities): Roll in fix from mainline. 2004-11-15 Dale Johannesen * tree-flow.h (stmt_bsi): Remove. (basic_block bsi_insert_on_edge_immediate): Remove duplicate decl. (tree_block_label): Remove name in prototype. (add_referenced_tmp_var): Ditto. (TDFA_USE_OPS): Parenthesize. (TDFA_USE_VOPS): Parenthesize. (flush_pending_stmts): New. (tree_duplicate_loop_to_exit): Remove. (update_lv_condition): Ditto. (estimate_loop_size): Ditto. (insert_edge_copies): Remove name in prototype. (expr_invariant_in_loop_p): Ditto. 2004-11-15 Dale Johannesen * c-decl.c (find_tree_with_code_1): Remove. (find_tree_with_code): Ditto. (find_pointer): Ditto. (struct should_transpose_for_loops_t): Ditto. (should_transpose_for_loops_1): Ditto. (should_transpose_for_loops): Ditto. (tree_contains_1): Ditto. (tree_contains): Ditto. (perform_loop_transpose): Ditto. (loop_transpose): Ditto. (finish_function): Don't call it. * common.opt (-floop-transpose): Remove. * flags.h (flag_loop_transpose): Remove. * opts.c (OPT_floop_transpose): Remove. * toplev.c (flag_loop_transpose): Remove. * config/rs6000/rs6000.c (rs6000_override_options): Don't set it. * doc/invoke.texi (-fast): Remove reference. * testsuite/gcc.apple/loop-transpose-1.c: Remove. 2004-11-15 Matt Austern Radar 3878983 * ginclude/tgmath.h (fdim) Use __TGMATH_REAL_2 macro. (hypot) Likewise. (remainder) Likewise. (nexttoward) Use proper number of arguments for TGMATH_REAL_1_2. 2004-11-11 Dale Johannesen Radar 3875337 * tree-cfg.c (cleanup_control_expr_graph): Remove redundant local patch from LNO. (thread_jumps_from_bb): Remove wrong local patch from LNO; make identical to mainline. (thread_jumps): Make identical to mainline. 2004-11-11 Stuart Hastings * i386.md (*movqi_1): Short-term fix for 3838108. 2004-11-11 Stuart Hastings * tree.c (build_vector): Proper initialization for 'list' 2004-11-10 Fariborz Jahanian * c-common.c (vector_constructor_from_expr): Remove replication of missing initializer. * tree.c (build_vector): Replicate missing initializer. * cp/typeck.c (build_c_cast): Move building of vector constant past checking for processing of template declaration. 2004-11-08 Geoffrey Keating * gcc.c: Improve local markers. (process_command): Set __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ rather than MAC_OS_X_VERSION_MIN_REQUIRED. 2004-11-08 Devang Patel Radar 3846514 * tree-if-conv.c (clean_predicate_lists): Use loop header and latch directly. 2004-11-08 Ziemowit Laski Radar 3853429 * varasm.c (output_addressed_constants): For CONST_DECLs, output the initializer if present. * config/darwin.c (machopic_select_section): Ensure that constant Objective-C strings and constant CFStrings get emitted into correct sections. 2004-11-05 Devang Patel Radar 3853509. * cp/parser.c (cp_parser_objc_method_prototype_list): Handle #pragma. (cp_parser_objc_class_interface): Get protocol qualified type. 2004-11-05 Stuart Hastings Radar 3848818 * cfgcleanup.c(merge_memattrs): copied from FSF mainline. 2004-11-04 Dale Johannesen * config/darwin.h (EXTRA_SECTION_FUNCTIONS): Fix text_unlikely_section. 2004-11-04 Dale Johannesen Radar 3759876 * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Enable indirect sibcalls. * config/rs6000/rs6000.md (*sibcall_symbolic): Make them work. (*sibcall_value_symbolic): Ditto. 2004-11-04 Dale Johannesen * opts.c (decode_options): Use mainline-style loop opts. 2004-11-04 Dale Johannesen * config/rs6000/rs6000.md (*save_fpregs_with_label_si): Use any_parallel_operand to remove a warning. * config/rs6000/darwin.md (*save_fpregs_with_label_di): Ditto. (*save_vregs_di): Ditto. (*restore_vregs_di): Ditto. (*save_vregs_with_label_di): Ditto. 2004-11-04 Devang Patel Partial 3837835 fix. * function.h (struct function): New member, uses_vector. * tree-cfg.c (ivu_gate, fndecl_uses_vector_p, identify_vector_use, pass_identify_vector_use): New. * tree-optimzie.c (init_tree_optimization_passes): Add pass_identify_vector_use. * tree-pass.h (pass_identify_vector_use): New extern decl. 2004-11-04 Devang Patel Back out 3837840 fix. * c-opts.c (c_common_handle_option): Update APPLE LOCAL marker. * flags.h (flag_inline_trees): Remove extern decl. * toplev.c (process_optiosn): Do not disable inlining with -faltivec. 2004-11-03 Ziemowit Laski Radar 3863563 (fix from mainline) * c-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove. (c_types_compatible_p): Move function definition... * c-objc-common.c (c_types_compatible_p): ...here. * c-objc-common.h (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from c-lang.c. 2004-11-02 Fariborz Jahanian Radar 3857727 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Remove setting of targetm.cast_expr_as_vector_init. * config/rs6000/rs6000.c (rs6000_override_options): Set targetm.cast_expr_as_vector_init. 2004-11-02 Fariborz Jahanian Radar 3846637 * config/rs6000/rs6000.md: Remove condition for HONOR_SIGNED_ZEROS from fnmsub generation. 2004-11-01 Ziemowit Laski Radar 2810013 (fix from mainline) * c-common.h (objc_lookup_ivar): Add second parameter to prototype. * c-typeck.c (build_external_ref): After looking up symbol, pass it to objc_lookup_ivar() to decide whether it or the ivar should be used, rather than deciding the issue locally. * stub-objc.c (objc_lookup_ivar): Add an OTHER parameter, which is simply returned in the non-ObjC case. 2004-10-29 Fariborz Jahanian Radar 3848842 * cp/call.c (build_over_call): Don't change type of the function pointer built by call to build_vfn_ref_using_vtable. * testsuite/g++.dg/kext6.C: New test 2004-10-27 Geoffrey Keating * c-common.c (handle_weak_import_attribute): Delete. (c_common_attribute_table): Remove 'weak_import'. * c-decl.c (start_function): Remove local change for weak_import. * dbxout.c (dbxout_source_file): Remove local change for hot/cold partitioning, sync with FSF GCC. * dmp-tree.c (print_decl): Remove local change for weak_import. * idebug.c: Remove local change for weak_import. * rtl.h (struct rtx_def): Remove local change for weak_import. (SYMBOL_REF_WEAK_IMPORT): Delete. * tree.h (DECL_WEAK_IMPORT): Delete. (IDENTIFIER_WEAK_IMPORT): Delete. (struct tree_decl): Delete weak_import_flag. (enum attribute_flags): Delete ATTR_FLAG_FUNCTION_DEF. * varasm.c (merge_weak): Remove local change for weak_import. * config/darwin.c (machopic_output_indirection): Remove local change for weak_import. (darwin_set_section_for_var_p): Do nothing if symbol is weak. * config/rs6000/rs6000.c (find_weak_imports): Delete. (rs6000_assemble_integer): Remove local change for weak_import. (local_label_unique_number): Delete. (macho_branch_islands): Remove local change for weak_import. 2004-10-26 Geoffrey Keating Radar 3840704 * c-opts.c (c_common_handle_option): Rename flag_altivec to flag_disable_opts_for_faltivec. * c.opt (faltivec): Likewise. * toplev.c (process_options): Likewise, and update comment. * config/rs6000/rs6000.c (expand_block_clear): Handle flag_disable_opts_for_faltivec. (expand_block_move): Likewise. 2004-10-26 Devang Patel Radar 3233789 * dbxout.c (dbxout_init): Remove APPLE LOCAL patch that suppresses SO stab address. 2004-10-26 Devang Patel Radar 3760592 Backport from mainline. 2004-10-21 Dndrew Pinksi * c-opts.c (push_command_line_include): Use the current file name instead of the main one. 2004-10-26 Matt Austern * ginclude/tgmath.h (fabs): Fix typo (complex abs is cabs, not cfabs) 2004-10-22 Fariborz Jahanian * config/rs6000/darwin.md: Remove vecstore/vecload patterns specific to 64-bit Darwin. 2004-10-21 Andrew Pinski Ziemowit Laski Radar 3845826 (includes PR objc/17923) * tree.c (staticp): A CONST_DECL has static storage if either TREE_STATIC or DECL_EXTERNAL is set. * config/darwin.c (darwin_build_constant_cfstring): Build a global CONST_DECL to hold each constructed CFString. * c-decl.c (pushdecl_top_level): Accept CONST_DECLs which can have null names. 2004-10-21 Fariborz Jahanian * c-common.c (vector_constructor_from_expr): In building vector expressions, fold no_expr of nanf into a cst_real expression tree. 2004-10-21 Fariborz Jahanian * function.c (assign_parms): Iterate over all non-vector args first, then over vector args. 2004-10-21 Ziemowit Laski Radar 3540965 * c-common.c (flag_objc_call_cxx_cdtors): New variable. * c-common.h (flag_objc_call_cxx_cdtors): New forward declaration. * c-opts.c (c_common_handle_option): Process '-fobjc-call-cxx-cdtors' option. * c.opt (fobjc-call-cxx-cdtors): New option. * doc/invoke.texi (fobjc-call-cxx-cdtors): Document. 2004-10-19 Devang Patel Radar 3837840 * c-opts.c (c_common_handle_option): Update APPLE LOCAL marker. * c.opt (faltivec): Same. * toplev.c (process_options): Same. * config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): Same. 2004-10-19 Devang Patel Radar 3837840 * c-opts.c (c_common_handle_option): Handle OPT_faltivec. * c.opt (faltivec): New option. * toplev.c (process_options): Disable inlining when -faltivec is used. * config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): Supply -faltivec to cc1* also. 2004-10-19 Fariborz Jahanian * c-common.c (cw_asm_stmt): Set correct constraint for vector arguments. 2004-10-18 Ziemowit Laski Radar 3832999 (fix from mainline) * c-parse.in (reservedwords): Add OBJC_TYPE_QUAL as alternative. 2004-10-18 Devang Patel Radar 3753408 * Makefile.in (GTFILES): Remove APPLE LOCAL comments. * target-def.h (TARGET_VECTOR_COMPARE_P, TARGET_VECTOR_COMPARE_FOR_P, TARGET_VECTOR_COMPARE_STMT, TARGET_VECTOR_SELECT_P, TARGET_VECTOR_SELECT_FOR_P, TARGET_VECTOR_SELECT_STMT): Remove #defines. (TARGET_VECT): Remove vector select and compare members. * target.h (struct gcc_target): Remove vector select and compare members. * tree-dfa.c (dump_immediate_uses_for): Do not print block number. * tree-gimple.c (is_gimple_stmt): Handle COND_EXPR properly. * tree-ssa-operands.c (add_vdef): Remove. (build_ssa_operands): Remove local patch to handle COND_EXPR inside MODIFY_EXPR case. (get_expr_operands): Same. * tree.c (get_array_base): Remove. * config/rs6000/rs6000.c (rs6000_vector_compare_p, rs6000_vector_compare_for_p, rs6000_vector_compare_stmt, rs6000_vector_select_p, rs6000_vector_select_for_p, rs6000_vector_select_stmt, get_vector_compare_for, get_vector_select_for): Remove. (TARGET_VECTOR_COMPARE_P, TARGET_VECTOR_COMPARE_FOR_P, TARGET_VECTOR_COMPARE_STMT, TARGET_VECTOR_SELECT_FOR_P, TARGET_VECTOR_SELECT_STMT): Remove #defines. 2004-10-16 Dale Johannesen * c-common.c (c_common_get_alias_set): Use GGC for type_hash_table. 2004-10-15 Dale Johannesen * objcp/objcp-lang.c (tree_code_type): Fix merge omission. 2004-10-15 Mike Stump FIXME merge 2004-10-15 Stuart Hastings * simplify-rtx.c(simplify_relational_operation): copied from FSF mainline. 2004-10-15 Stuart Hastings * c-common.c(print_cw_asm_operand): proper casting. * expr.c(expand_expr_addr_expr): delete problematic assertions. 2004-10-14 Robert Bowdidge * config/darwin-driver.c: Remove off-by-one error in QA_OVERIDE... machinery. 2004-10-15 Fariborz Jahanian Radar 3719208 * stor-layout.c (update_alignment_for_field): Don't use first-field alignment adjustment for union. 2004-10-13 Ziemowit Laski Radar 3677258 * c-decl.c (struct lang_identifier): Move definition to c-tree.h. * c-tree.h (struct lang_identifier): Moved here from c-decl.c; add 'interface_value' field. (C_SIZEOF_STRUCT_LANG_IDENTIFIER): Update to reflect increased size. 2004-10-11 Caroline Tice * passes.c (rest_of_compilation): Move hot/cold partitioning to occur after scheduling (and SMS), but still before register allocation. 2004-10-10 Dale Johannesen * alias.c (write_dependence_p): Refs to same FE object interfere. 2004-09-29 Stan Shebs * config/darwin.h (REAL_LIBGCC_SPEC): Add non-shared libgcc case for use during 64-bit bringup. 2004-09-27 Robert Bowdidge * opts.c: Remove QA_OVERRIDE_GCC3_OPTIONS machinery. * config/darwin-driver.c: Reimplement QA_OVERRIDE_GCC3_OPTIONS in driver-driver. 2004-09-27 Dale Johannesen * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Roll in fix from mainline. 2004-09-26 Caroline Tice Dale Johannesen * value-prof.c (insn_prefetch_values_to_profile): Don't instrument clobbers. 2004-09-26 Dale Johannesen * gcc.c (default_compilers): Handle -fast, -fastcp same as -fast. (process_command): Make -fastf, -fastcp imply -combine. * tree-ssa-loop-ivopts.c (find_interesting_uses_stmt): Roll in fix from mainline. * print-rtl.c (print_rtx): Print REG_NOTES right (from mainline). 2004-09-24 Dale Johannesen Radar 3811274 PR 17625 * loop-doloop.c (doloop-modify): roll in fix from FSF. 2004-09-23 Stan Shebs * Makefile.in: Use --print-multi-lib to collect compiled-in multilibs. * config.gcc: Add in a Darwin 8.x makefile fragment. * fixinc.in: Bandaid for a missing __ppc64__ in limits.h * config/rs6000/t-darwin8: New file, adds -m64 multilib. 2004-09-23 Devang Patel Radar 3765210. * gcc.c (main): Handle -E when combine_flag is set. 2004-09-22 Stan Shebs * config/darwin.h (STARTFILE_SPEC): Don't link in crt2.o if -m64. 2003-09-21 Matt Austern Radar 3807942, backported from FSF mainline * config/darwin.c (darwin_make_decl_one_only) Allow coalesced symbol to appear in static archive's table of contents 2004-09-17 Devang Patel * gcc.c: Use .gch extension instead of .pch. 2004-09-13 Dale Johannesen Radar 3793575 * c-decl.c (start_decl): Fix from mainline (PR 17408). 2004-09-13 Andrew Pinski Part of radar 3753405 and all of 3767339 * Makefile.in (c-parse.y): Remove ifcwasm as it is no longer used. * objc/Makefile.in (objc/objc-parse.y): Likewise. * c-parse.in: Remove all of @@ifcwasm. Remove all of the MERGE FIXME comments as they are fixed. (cw_asm_expr_no_commas, cw_asm_unary_expr, cw_asm_primary, cw_asm_operand): Change type to be exprtype. (cw_asm_compstmt_nostart): Remove type. (single_cw_asm_stmt): For cw_asm_operand use .value for the third argument of cw_asm_entry. (cw_asm_compstmt_start): Remove increment of compstmt_count. Call c_begin_compound_stmt always and pass true. (cw_asm_compstmt_nostart): Just set cw_asm_block to zero. (cw_asm_compstmt): Call c_end_compound_stmt. (cw_nonnull_asm_operands): use .value for the exprtype. (cw_asm_operand): Set .value to cw_asm_build_register_offset and .original_code to ERROR_MARK. (stmt_nocomp): For cw_asm_compstmt and cw_asm_stmt, call c_finish_expr_stmt. (cw_asm_expr_no_commas): Remove extraneous curly braces. Update return exprtype instead of just a tree. (cw_asm_unary_expr): Likewise. (cw_asm_primary): Likewise. * c-typeck.c (cw_asm_c_build_component_ref): Change build2 to build3 and add NULL as the last argument for COMPONENT_REF. 2004-09-10 Dale Johannesen * config/rs6000/power4.md: Increase store latency (mainline). 2004-09-08 Stan Shebs * config/rs6000/darwin-worldsave.asm: Remove, no longer used. 2004-09-07 Caroline Tice * cfgrtl.c (rtl_verify_flow_info_1): Add new edge flag, EDGE_CROSSING, to flags test case. 2004-08-31 Devang Patel * config/darwin-driver.c (get_arch_name): Replace abort() with fatal("message"). (get_driver_name): Same. 2004-08-30 Fariborz Jahanian * c-common.c (vector_constructor_from_expr): Adapt to new representation of comma-expression in c. 2004-08-29 Andrew Pinski * loop-doloop.c (add_test): Take the mainline change. * loop-invariant.c (find_exits, find_invariants_bb): Take the mainline change, use CALL_P. * tree-alias-common.c (HAVE_BANSHEE): Take the mainline change. * tree-into-ssa.c (compute_global_livein): Take the mainline reformatting. * tree-pretty-print.c: Remove include for tree-chrec.h as it is there later on. * tree-ssa-loop-ivopts.c (zero_p): Make static. * tree-ssa-loop-niter.c (zero_p): Add back, take the mainline change. (number_of_iterations_exit): Take the mainline change for getting a boolean false. (MAX_ITERATIONS_TO_TRACK): Take the mainline change as it is now configurable. (struct nb_iter_bound): Take the mainline comment changes. * tree-ssa-loop-prefetch.c (zero_p): Add to minimize changes from the mainline. * tree-ssa-loop.c (gate_loop): Take the mainline changes as we want the gate so we can turn them on and off easier. * tree.h (struct tree_phi_node, rewritten): Take the mainline change as there are no other integer fields in this struct. (build_vector_type): Remove duplicated prototype. (zero_p): Remove prototype. * timevar.c (ppc_intrinsic_time): Correct definition and make static. Cast __mftbu to unsigned. 2004-08-28 Andrew Pinski * config.in: Regenerate. 2004-08-23 Richard Henderson Andrew Pinski * gimplify.c (gimplify_array_ref_to_plus): Delete. (gimplify_addr_expr): Do not call gimplify_array_ref_to_plus for ARRAY_REF. * config/rs6000/rs6000.c (altivec_expand_builtin): Go passed ARRAY_REF also to get to the STRING_CST. 2004-08-24 Stan Shebs * Makefile.in (libgcc.mk): Add ppc64 and ppc64_static libraries. (libgcc.a): Move libraries so they will be found in testing. * config/darwin.h (REAL_LIBGCC_SPEC): Add -m64 cases. * config/darwin7.h (LIB_SPEC): Add -m64 -static case. * calls.c (emit_call_1): Use Pmode instead of SImode in Apple local indirect call code. (expand_call): Likewise. 2004-08-23 Stan Shebs * config/rs6000/rs6000.c (rs6000_emit_prologue): Add 64-bit cases to optimizations for FP save and picbase setup. (rs6000_emit_epilogue): Adjust the LR save offset to be correct for 64-bit frames. 2004-08-22 Stan Shebs * config/darwin-driver.c (arch_config): Add ppc64. (add_arch_options): Similarly. 2004-08-22 Andrew Pinski PR c/15262 * c-typeck.c (build_unary_op): Use &a.b if the foldded lowered expression is not constant. (c_finish_return): Do not go through INDIRECT_REF when looking for the inner expression of an ADDR_EXPR for warning about. PR tree-opt/17138 * tree-ssa-loop-ivopts.c (peel_address): Handle REALPART_EXPR and IMAGPART_EXPR. 2004-08-20 Stan Shebs * config/rs6000/darwin.h (DARWIN_ARCH_LD_SPEC): Pass -arch ppc64 to linker if -m64. (DARWIN_ARCH_ASM_SPEC): Similarly. 2004-08-20 Dale Johannesen * config/rs6000/rs6000.c (rs6000_rtx_costs): Fix from mainline. 2004-08-19 Dale Johannesen * c-decl.c (implicitly_declare): Reduce error to warning when disable_typechecking_for_spec_flag is on. 2004-08-18 Ziemowit Laski Radar 3753413 * config/darwin.c (darwin_build_constant_cfstring): Strip NOP_EXPRs and dereference string literal argument; mark the ADDR_EXPR of each constant CFString TREE_CONSTANT to squash initializer warnings. 2004-08-18 Devang Patel * config/darwin-driver.c (verbose_flag): New. (do_lipo): Interpret -v. (main): Set verbose_flag. 2004-08-18 Dale Johannesen * tree-cfg.c (tree_block_ends_with_call_p): Fix comments. (tree_block_ends_with_condjump_p): Ditto. 2004-08-18 Matthew Sachs * Merge from mainline. 2004-08-17 Devang Patel * config/darwin-driver.c (main): Do not handle -x separately. 2004-08-16 Robert Bowdidge * Add -mdynamic-no-pic to Darwin-specific options 2004-08-16 Caroline Tice Add hot/cold partitioning update that was accepted in FSF Mainline. * varasm.c (text_section): Remove alignment statement. (assemble_start_function): Remove APPLE LOCAL markers from code added to FSF mainline; Add code to properly align cold section at start of function. 2004-08-16 Devang Patel Merge from mainlne. 2004-08-16 Devang Patel * c-common.c (handle_used_attribute): Set DECL_PRESERVE_P. * print-tree.c (print_node): Print DECL_PRESERVE_P. * target-def.h (TARGET_ASM_MARK_DECL_PRESERVED): New #define. (TARGET_ASM_OUT): New member, TARGET_ASM_MARK_DECL_PRESERVED * target.h (struct gcc_target): New member, mark_decl_preserved. * hooks.c (hook_void_charptr): Rename to ... (hook_void_constcharptr): ... new name. * hooks.h (hook_void_charptr): Rename to .. (hook_void_constcharptr): ... new name. * tree.h (DECL_PRESERVE_P): New #define. (struct tree_decl): New member, preserve_flag. * varasm.c (assemble_start_function): Mark decl preserved. (assemble_variable): Same. * darwin.c (darwin_mark_decl_preserved): New function. * darwin.h (TARGET_ASM_MARK_DECL_preserved): New #define. * darwin-protos.h (darwin_mark_decl_preserved): New decl. * doc/tm.texi (TARGET_ASM_MARK_DECL_PRESERVED): Document. 2004-08-13 Matt Austern Radar 2872232 * ginclude/tgmath.h: New file. * Makefile.in: Add tgmath.h to list of installed headers. 2004-08-13 Devang Patel Radar 3729261. Reviewed by Dale. * dbxout.c (get_lang_number): New. (dbxout_init): Include lang number in N_SO stab. * dbxout.h (N_SO_AS, N_SO_C, N_SO_ANSI_C, N_SO_CC, N_SO_FORTRAN, N_SO_PASCAL, N_SO_FORTRAN90, N_SO_OBJC, N_SO_OBJCPLUS): New #define. 2004-08-13 Devang Patel Merge from mainline. Radar 3739309. 2004-08-11 Devang Patel * dbxout.c (dbxout_begin_prologue): New function. (dbx_debug_hooks): Use new begin prologue hook. (dbxout_function_end): Emit N_ENSYM. * stab.def (N_BNSYM, N_ENSYM): Define and document these two new stabs. 2004-08-13 Devang Patel Merge from mainline. Radar 3739302. 2004-08-10 Devang Patel * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add -dead_strip and -no_dead_strip_inits_and_terms. (LINK_SPEC): Same. * doc/invoke.text (Darwin Options): Document -dead_strip and -no_dead_strip_inits_and_terms. 2004-08-12 Stan Shebs Basic support for 64-bit Darwin. * config/darwin.c (macho_indirect_data_reference): Add DImode case. (machopic_legitimize_pic_address): Similarly, plus use Pmode instead of SImode. * config/rs6000/darwin.h (PTRDIFF_TYPE): Be "long int" if 64-bit. (TARGET_OS_CPP_BUILTINS): Add 64-bit preprocessor macro. (SUBTARGET_SWITCHES): Add -m32 and -m64 flags. (SUBTARGET_OVERRIDE_OPTIONS): Require 64-bit processor if -m64. (PROCESSOR_DEFAULT64): Define. * config/rs6000/darwin.md: New file, patterns specific to 64-bit Darwin. * config/rs6000/rs6000.md: Include darwin.md. (builtin_setjmp_receiver): Add DImode case. * config/rs6000/rs6000.c (TARGET_ASM_UNALIGNED_DI_OP): Define for Darwin. (TARGET_ASM_ALIGNED_DI_OP): Ditto. (rs6000_emit_move): Add DImode case to Darwin bits. (machopic_output_stub): Use .quad if 64-bit. * invoke.texi: Document -m32 and -m64. 2004-08-12 Dale Johannesen * c-decl.c (diagnose_mismatched_decls): Improve -fdisable-typechecking-for-spec. 2004-08-12 Dale Johannesen * gcc.c (default_compilers): Handle -fast same as -combine. (process_command): Make -fast imply -combine. * tree-scalar-evolution.c (number_of_iterations_in_loop): Don't compute iteration count for multiple-exit loops. * config/rs6000/rs6000.c (rs6000_rtx_costs): Replace from mainline. 2004-08-10 Devang Patel Remove Symbol Separation. Radar 3555440. Reviewed by Mike Stump. * c-common.c (cb_restore_write_symbols, cb_clear_write_symbols, cb_start_symbol_repository, cb_end_symbol_repository, cb_is_builtin_identifier). Remove. (debug.h): Do not include. * c-common.h (dbg_dir): Remove. (dbg_ss_init, c_common_write_context, cb_clear_write_sybols, cb_restor_write_symbols, cb_start_symbol_repository, c_valid_cinfo, cb_end_symbol_repository, cb_is_builtin_identifier): Remove extern decls. * c-lex.c (init_c_lex): Do not set up symbol separation call backs. (c_common_write_context): Remove. * c-objc-common.c (c_objc_common_finish_file): Do not write context. * c-opts.c (dbg_dir): Remove. (c_common_handle_option): Remove symbol separation option handling. (c_common_parse_file): Do not initialize symbol repository. * c.opt (Winvalid-sr, fsave-repository=): Remove. * dbxout.c (dbxout_restore_write_symbols, dbxout_clear_write_symbols, dbxout_start_symbol_repository, dbxout_end_symbol_repository) Remove. (dbx_debug_h): Remove symbol separation hoooks. (xcoff_debug): Same. * debug.c (do_nothing_): Remove symbol separation hooks. * debug.h (gcc_debug_hooks): Same. * dwarf2out.c (dwarf2_debug): Same. * flags.h (orig_write_symbols, flag_grepository): Same. * gcc.c (pch): Remove fsave-repository support. (cc1_options): Same. (asm_options): Same. (default_compilers): Same. (option_map): Same. (dbg_ss): Remove. (static_specs): Remove dbg_ss. * opts.c (orig_write_symbols, flag_grepository): Remove. (set_debug_level): Remove symbol separation support. * doc/invoke.texi: Remove symbol separation documentation. 2004-08-09 Geoffrey Keating * ginclude/stdarg.h: Remove APPLE LOCAL change. * ginclude/varargs.h: Likewise. 2004-08-08 Dale Johannesen * c-common.c (c_common_get_alias_set): Fixes from mainline. * toplev.c: Ditto. * tree.h: Ditto. * coverage.c (tree_coverage_counter_ref): Ditto. * tree-cfg.c (tree_block_ends_will_call_p): Ditto. (tree_block_ends_with_condjump_p): Ditto. 2004-08-08 Andrew Pinski * c-objc-common.c (c_objc_common_init): Remove APPLE LOCAL for setting -gused by default as it is handled in CC1_SPECs now. * opts.c (set_debug_level): Remove the handling of -gused and -gfull as they are already handled in CC1_SPECs. * config/rs6000/darwin.h (CC1_SPEC): Change the APPLE LOCAL tag to be what is really local now. 2004-08-06 Dale Johannesen * c-typeck.c (tagged_types_tu_compatible_p): Fix from mainline. 2004-08-06 Andrew Pinski * config/darwin.h: Fix misplaced #endif which came in via the merge. 2004-08-04 Fariborz Jahanian * c-common.c (vector_constructor_from_expr): Treat all constant vector expression tree as a constant tree. 2004-08-03 Stan Shebs Support for CodeWarrior-style assembly language blocks and functions. Radar 3368707. * c.opt (-fasm-blocks): New option. * c-common.h (enum cw_asm_states): New enum, state values. * c-tree.h: Declare some functions. * c-common.c (flag_cw_asm_blocks): New flag. (cw_asm_states, cw_asm_in_decl, cw_asm_block, cw_asm_at_bol, cw_asm_in_operands, cw_asm_labelno, cw_asm_buffer, cw_asm_operands, cw_asm_labels, cw_asm_labels_uniq): New globals. (cw_asm_default_function_conversion, cw_asm_stmt, cw_asm_field_offset, cw_asm_field_offset, print_cw_asm_operand, cw_asm_get_register_var, cw_asm_reg_name, cw_asm_label, get_atsign_identifier, clear_cw_asm_labels, get_cw_asm_label, cw_asm_build_register_offset, cw_asm_entry): New functions. * c-decl.c (grokdeclarator): Recognize asm keyword, set flag on function decl if seen. (start_function): Change asm state to expect local decls. (lookup_struct_or_union_tag): New function. * c-lex.c (cw_asm_saved_token, c_lex_depth): New globals. (c_lex_with_flags): Add state machine to return BOL and EOL tokens at appropriate moments, return CPP_ATSIGN as its own token if in asm block. * c-opts.c (c_common_handle_option): Recognize -fasm-blocks. * c-parse.in: Add rules for parsing CW asm blocks. (CW_ASM_KEYWORD, CW_ASM_BOL, CW_ASM_EOL): New tokens. (cw_asm_expr_no_commas, cw_asm_unary_expr, cw_asm_primary, cw_asm_operands, cw_nonnull_asm_operands, cw_asm_operand, cw_asm_stmt, single_cw_asm_stmt, cw_asm_compstmt, cw_asm_compstmt_start, cw_asm_compstmt_nostart): New nonterminals. (lineno_decl): Flag no longer in decls part. (scspec): Add CW_ASM_KEYWORD. (stmt): Add cw_asm_compstmt and cw_asm_stmt alternatives. (yylexname): Detect asm functions and return CW_ASM_KEYWORD. (_yylex): Return '@' as token if CW asm, return BOL/EOL. * c-typeck.c (build_external_ref): Handle asm register names and labels specially. (cw_asm_typename_or_reserved, cw_asm_c_build_component_ref): New functions. * function.h (struct function): New fields cw_asm_function, cw_asm_noreturn, cw_asm_frame_size. * tree.h (DECL_CW_ASM_FUNCTION, DECL_CW_ASM_NORETURN, DECL_CW_ASM_FRAME_SIZE): New macros. (struct tree_decl): New fields cw_asm_function_flag, cw_asm_noreturn_flag, cw_asm_frame_size. * config/darwin.h (CW_ASM_SPECIAL_LABEL): Define. * config/darwin-protos.h (darwin_cw_asm_special_label): Declare. * config/darwin.c (darwin_cw_asm_special_label): New function. * rs6000/rs6000-protos.h (rs6000_cw_asm_register_name): Declare. * rs6000/rs6000.c (rs6000_cw_asm_register_name): New function. * rs6000/rs6000.h (CW_ASM_REGISTER_NAME): Define. * scan-decls.c (flag_cw_asm_blocks, etc): Dummy definitions. * doc/extend.texi, doc/invoke.texi: Document. 2004-08-01 Geoffrey Keating * config/rs6000/rs6000.c (rs6000_split_multireg_move): Just abort if trying to *store* to a non-offsettable address. * config/rs6000/rs6000.md (movtf_internal): Don't move GPRs to a nonoffsettable address. (movdi_internal32): Don't move GPRs to a nonoffsettable address. Clean up. (movti_string): Don't move GPRs to a nonoffsettable address. (movti_ppc64): Don't move GPRs to a nonoffsettable address. Clean up. 2004-08-01 Devang Patel Re-implement -fwritable-strings support. Radar : 3699482 * c-common.c (fix_string_type): Check flag_writable_strings. (fix_string_type): Likewise. * c-opts.c (set_std_c89): Initialize flag_writable_strings. (set_std_c99): Likewise. * common.opt (fwritable-strings): Add. * flags.h: Add the external declaration of flag_writable_strings. * opts.c (common_handle_option) : Add. * toplev.c (flag_writable_strings): Add. (f_options): Add an entry for writable-strings. * varasm.c (const_hash_1) : Check flag_writable_strings. (compare_constant) : Likewise. (build_constant_desc): Likewise. * config/darwin.c (machopic_select_section): Likewise. * doc/invoke.texi (-fwritable-strings): Add. (-fno-const-strings): Document -fwritable-strings. * doc/trouble.texi: Document -fwritable-strings. 2004-08-01 Geoffrey Keating * c-common.c (warn_long_double): Remove. (warn_about_long_double): Remove. * c-common.h (warn_long_double): Remove. (warn_about_long_double): Remove. * c-decl.c (grokdeclarator): Don't call warn_long_double. * c-opts.c (c_common_handle_option): Remove case for OPT_Wlong_double. * doc/invoke.texi: Don't document -Wlong-double. 2004-07-30 Geoffrey Keating Fariborz Jahanian * config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Permit non-offsettable addresses even for DImode. (rs6000_split_multireg_move): Cope with non-offsettable addresses being moved into multiple GPRs. * config/rs6000/rs6000.c (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Default to 64. (rs6000_override_options): Use RS6000_DEFAULT_LONG_DOUBLE_SIZE. * config/rs6000/darwin.h (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128. * config/rs6000/darwin-ldouble.c (isless): New macro. (inf): New macro. (nonfinite): New macro. (FPKINF): Delete. (_xlqadd): Completely rewrite. (_xlqmul): Correct overflow handling. (_xlqdiv): Correct overflow handling. * config/rs6000/darwin-ldouble-format: New file. 2004-07-30 Matt Austern * config/darwin-c.c (darwin_pragma_call_on_load): Deprecate. (darwin_pragma_call_on_unload): Likewise. 2004-07-15 Devang Patel * tree-if-conv.c: Add brief description at the beginning. (is_appropriate_for_if_conv): Rename to .. (if_convertable_loop_p): ... new name. (bb_with_exit_edge): Rename to .. (bb_with_exit_edge_p): ... new name. (make_cond_modify_expr): Update comment before function body. (replace_phi_with_cond_modify_expr): Same. (tree_if_convert_stmt): Same. Use new fn name, bb_with_exit_edge_p. (if_convertable_loop_p): New function name. Remove some dead code. (collapse_blocks): Update comment before function body. Format code. Use bb_with_exit_edge_p. (tree_if_conversion): Move this function body at the end of file. (handle_siblint_pattern): Update comment before function body. (fold_sibling_stmts): Same. Update dump info. 2004-07-14 Devang Patel * target.h (gcc_target): Additional parameter for support_vector_compare_for_p. * tree-if-conv.c (handle_sibling_pattern): New. (fold_sibling_stmts): New. (make_cond_modify_expr): Dump debugging info. (tree_if_convert_stmt): Same. (is_appropriate_for_if_conv): Remove filters that eliminated loops becase of memory tags and difficult dominance relation. (collapse_blocks): Handle memory tags. (tree_if_conversion): Optimize sibling statements. * tree-vectorizer.c (vect_init_vector): Additional parameter. (vect_get_vec_def_for_operand): Supply vectype to vect_init_vector(). (vect_init_vecotr): Use input parameter vectype. (vect_transform_compare): Fix type in dump info. (vect_transform_select): Handle ARRAY_REF as scalar dest. Handle NOP_EXPR as an operand. (vect_is_supportable_compare): Use operand's type to decide second vector type for support_vector_compare_for_p(). (vect_is_supportable_select): Fix typo. Allow SSA_NAME as 2nd operand. (exist_non_indexing_operands_for_use_p): Handle conditional modify expr. * config/rs6000/rs6000.c (rs6000_vector_compare_for_p): New parameter. (get_vector_compare_for): New parameter. Use it to find appropriate builtin. 2004-06-26 Fariborz Jahanian * gcc.c: Don't use -fpredictive-compilation when -fpreprocessed appears on command line. 2004-07-01 Devang Patel * tree-if-conv.c (mark_vdefs_vuses_for_rename): New function. (make_ifcvt_temp_variable): Mark vdefs and vuses for renaming. 2004-07-01 Devang Patel Radar 3236762 * config/darwin-driver.c (do_lipo): Do not supply -arch to lipo. 2004-06-29 Andrew Pinski * c-decl.c (perform_loop_transpose): Save chain of right_before_inner_loop and set to NULL. Restore the chain before rejecting the loop. 2004-06-29 Dorit Naishlos * tree-vectorizer.c (vect_create_data_ref) INDIRECT_REF check moved to analysis. Redundant checks removed. (vect_analyze_data_refs): Make sure we have a mem_tag. (vect_transform_loop): Make sure that we have a preheader bb. (vect_init_vector): Insert on preheader edge instead of using bsi. (vect_finish_stmt_generation_in_preheader): Now that a preheader bb is created before vectorizing stmts, we do not expect a new bb to be created (thereofore, abort instead of add_bb_to_loop). * config/rs6000/rs6000.c (rs6000_build_vmul_uch): Likewise. (rs6000_build_vector_init): Likewise. Also replace mark_call_clobbered with direct setting of DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL. 2004-06-28 Devang Patel * Makefile.in (tree-ssa-loop-manip.o): Depend on tree-scalar-evolution.h * tree-if-conv.c (collapse_blocks): Use release_phi_node instead of remove_phie_node. * tree-ssaname.c (make_ssa_name): Re-enable free_ssanames. (release_ssa_name): Same. * tree-scalar-evolution.c (scev_reset): Check current_loops and scalar_evolution_info. * tree-ssa-loop-manip.c (tree-scalar-evolution.h): Include. (tree_duplicate_loop_to_header_edge): Call scev_reset(). 2004-06-28 Devang Patel * tree-if-conv.c (make_ifcvt_temp_variable): Fix formatting. 2004-06-28 Devang Patel * tree-if-conv.c (make_ifcvt_temp_variable): Add new parameter for original stmt. Update new statement's vuse approritatly based on original stmt. (make_cond_modify_expr): Supply current statement as additional parameter to make_ifcvt_temp_variable call. (tree_if_convert_stmt): Same. (replace_phi_with_cond_modify_expr): Update vuse and vdefs. (is_appropriate_for_if_conv): Lift, first phi node needs to be constant node, restriction. * tree-ssa-operands.c (add_vdef): New function. * tree-ssa-operands.h (add_vdef): Same. 2004-06-25 Mike Stump * objcp/Make-lang.in (objcp/objcp-parse.y): Update to use move-if-change from top directory. 2004-06-25 Stuart Hastings Radar 3680191 * tree-nested.c: Cast STACK_BOUNDARY for portability. * config/i386/i386.c (output_pic_addr_const): Stubify optimized symbols. * target-def.h (TARGET_BECT_BUILD_VECTOR_INIT) Initialize correctly. 2004-06-25 Dale Johannesen * objc/Make-lang.in: use $(srcdir)/../move-if-change. 2004-06-25 Dale Johannesen * Makefile.in: replace $(SHELL) ${srcdir}/mkinstalldirs with $(mkinstalldirs) throughout. 2004-06-25 Stuart Hastings Radar #: 3696823, 3673318, 3672998 Roll in changes from mainline: * config/rs6000/rs6000.c (legitimate_offset_address_p): Make global, rename rs6000_legitimate_offset_address_p. (rs6000_legitimate_address_p): Adjust calls to it. (lmw_operation): Ditto. (stmw_operation): Ditto. * config/rs6000/rs6000-protos.h: Declare it. * config/rs6000/rs6000.md (*movdf_hardfloat32): Use it instead of offsettable_memref_p. * config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow [reg+reg] mode for TFmode memory accesses. (rs6000_eliminate_indexed_memrefs): New. (rs6000_emit_move): Call preceding for TImode and TFmode. 2004-06-24 Andrew Pinski Radar #: 3699721 * config/darwin.c (machopic_indirect_data_reference): Copy the SYMBOL_REF_DECL from the original RTX for the new non-lazy pointer RTX. 2004-06-24 Ayal Zaks * target-def.h (TARGET_VECT_BUILD_BUILTIN_LVSR): New macro. * target.h (build_builtin_lvsr): New function. * tree-vectorizer.c (vect_create_index_for_array_ref): Add option to only calculate init_val without creating the iv. (vect_create_data_ref): Deal with unknown alignment; allow creating data refs for initial access only. (vect_transform_store): Call vect_create_data_ref accordingly. (vect_finish_stmt_generation_in_preheader): New function. (vect_finish_stmt_generation): Need to optionally bump bsi again. (vect_transform_load): Replace call to lvsl by a call to lvsr(16-a) in preheader. Move load of msq out to preheader. Removed TREE_INVARIANT. (vect_analyze_data_refs_alignment): Allow unknown aligned loads. * rs6000.c (rs6000_build_builtin_lvsr): New function. (rs6000_support_misaligned_vloads, rs6000_permute_misaligned_vloads): Check if TARGET_ALTIVEC. (get_vector_init_fns_for_type): Initialize lve_fn, splt_fn vars. 2004-06-22 Andrew Pinski Radar #: 3661615, 3623788 * c-decl.c (perform_loop_transpose): Do not change TREE_CHAIN (right_before_inner_loop) until after we know we are going to do the transformation. * c-decl.c (perform_loop_transpose): Fix formatting and cleanup. 2004-06-22 Andrew Pinski Radar #: 3701874 * c-decl.c (push_file_scope): Return early if we already have a file scope. 2004-06-22 Devang Patel PR 16105 * tree-vectorizer.c (vect_analyze_operations): Type of MODIFY_EXPR is not reliable. Use LHS's type. 2004-06-21 Dorit Naishlos * tree.def (MULT_UCH_EXPR): New tree code. * tree-vectorizer.h (stmt_vec_info): New fields part_of_pattern, related_stmt, v.vect_target_hook_for_pattern, and v.vectorized_stmt. (STMT_VINFO_IN_PATTERN_P): New macro. (STMT_VINFO_VEC_HOOK): New macro. (STMT_VINFO_RELATED_STMT): New macro. * tree-vectorizer.c (vect_pattern_recog): New function. (vect_recog_mul_uch_to_uch): New function. (vect_recog_mul_uch_to_uch1): New function. (new_stmt_vec_info): Initialize new fields in stmt_vec_info. (vect_transform_op): Call target hook recorded in STMT_VINFO_VEC_HOOK. (vect_is_supportable_op): Use new field STMT_VINFO_VEC_HOOK to record target support for the "mul_uch" pattern. (vect_mark_relevant): Don't mark stmts involved in a pattern as relevant. (vect_mark_stmts_to_be_vectorized): Likewise. (vect_create_data_ref): Fix alias-sets bug. (vect_get_vec_def_for_operand): Call new hook support_vector_init_p. * target.h (support_vmul_uch_p): New entry for target hook. (build_vmul_uch): New entry for target hook. (support_vector_init_p): New entry for target hook. (build_vector_init): New entry for target hook. * target-def.h (TARGET_VECT_SUPPORT_VMUL_UCH_P): New target hook. (TARGET_VECT_BUILD_VMUL_UCH): New target hook. (TARGET_VECT_SUPPORT_VECTOR_INIT_P): New target hook. (TARGET_VECT_BUILD_VECTOR_INIT): New target hook. * config/rs6000/rs6000.c (rs6000_support_vmul_uch_p): New function. (rs6000_build_vmul_uch) New function. (rs6000_support_vector_init_p) New function. (get_vector_init_fns_for_type) New function. (rs6000_build_vector_init) New function. 2004-06-17 Jon Ziegler Radar 3691917 * Revert version string in version.c to as of apple-gcc-1762. 2004-06-16 Jon Ziegler Radar 3619941 * Revert to apple-gcc-1762 plus Dorit/Devang's 2004-06-15 patch. Radar 3691917 * Update version string in version.c 2004-06-16 Dale Johannesen Radar 3661015/PR 15993 * tree-ssa-dom.c (thread_across_edge): fix from FSF. 2004-06-15 Dorit Naishlos Radar 3619941 * tree-data-ref.c (init_data_ref): New function. * tree-data-ref.h (init_data_ref): New function. * tree-vectorizer.c (vect_get_array_first_index): Return index instead of success status, and support pointers. (vect_create_index_for_array_ref): Remove ARRAY_REF restriction, and change call to vect_get_array_first_index. (vect_create_data_ref): Handle INDIRECT_REFs. (vect_is_supportable_store): Handle INDIRECT_REFs. (vect_is_supportable_load): Handle INDIRECT_REFs. (vect_analyze_data_ref_dependence): Handle INDIRECT_REFs. (vect_analyze_data_ref_dependences): Remove usage of variable 'ok'. (get_array_base): Removed (not used anymore). (vect_force_dr_alignment_p): Use DR_BASE_NAME instead of get_array_base. (vect_align_data_ref): Likewise. (vect_transform_store): Remove ARRAY_REF restriction. (vect_transform_load): Remove ARRAY_REF restriction. (vect_compute_data_ref_alignment): Support pointers. (vect_analyze_data_refs): Support pointers. (vect_debug_stats): New Function. (vect_debug_details): New Function. (vect_transform_loop): Use vect_debug_stats and vec_debug_details. (vect_analyze_loop): Use vect_debug_details. (vect_analyze_scalar_cycles): Use vect_debug_stats. (vect_analyze_data_ref_dependence): Likewse. (vect_analyze_data_refs_alignment): Likewise. (vect_analyze_data_ref_accesses): Likewise. (vect_analyze_data_refs): Likewise. (vect_analyze_loop_form): Likewise. (vect_gen_if_guard): Formatting fixes (avoid 80 column overflow). (vect_update_initial_conditions_of_duplicatd_loop): Likewise. (vect_transform_loop): Likewise. (vect_analyze_loop_form): Likewise. 2004-06-14 Caroline Tice Radar 3690727 (partial) * defaults.h (NORMAL_TEXT_SECTION_NAME): Remove. * passes.c (rest_of_compilation): Add missing APPLE LOCAL. * config/rs6000/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove definition. (SECTION_FORMAT_STRING): Likewise. * config/rs6000/sysv4.h (NORMAL_TEXT_SECTION_NAME): Likewise. (SECTION_FORMAT_STRING): Likewise. * doc/tm.texi (NORMAL_TEXT_SECTION_STRING): Remove documentation. (SECTION_FORMAT_STRING): Likewise. 2004-06-14 Dale Johannesen Radar 3661661 * tree-ssa.c (tree_ssa_useless_type_conversion_1): fix from FSF. 2004-06-14 Dale Johannesen Radar 3690727 (partial) * gimplify.c (copy_if_shared_r): Add missing APPLE LOCAL. * config/rs6000/t-darwin: Ditto. 2004-06-14 Fariborz Jahanian * version.c: Remove word tree-ssa from version string. 2004-06-12 Devang Patel * Makefile.in (OBJS-common): Add tree-if-conv.o. (tree-if-conv.o): New rule. * target-def.h (TARGET_VECTOR_COMPARE_P, TARGET_VECTOR_COMPARE_FOR_P, TARGET_VECTOR_COMPARE_STMT, TARGET_VECTOR_SELECT_P, TARGET_VECTOR_SELECT_FOR_P, TARGET_VECTOR_SELECT_STMT): New. (TARGET_INITIALIZER): New members. * target.h (tree.h): Include. (struct gcc_target.vect): New members - support_vector_compare_p, support_vector_compare_for_p, vector_compare_stmt, support_vector_select_p, support_vector_select_for_p, vector_select_stmt. * tree-dfa.c (dump_immediate_uses_for): Print block index. * tree-flow.h (enum move_pos): Move from ... * tree-ssa-loop-im.c (enum move_pos): here. * tree-if-conv.c: New file. * tree-simple.c (is_gimple_stmt): Make COND_EXPR valid gimple. * tree-ssa-dce.c (mark_control_dependent_edges_necessary): Check t. * tree-ssa-live.c (debug_var_map): New function. * tree-ssa-live.h (debug_var_map): New function declaration. * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variable): Add flow_loop_scan() call. * tree-ssa-operands (get_stmt_operands): Handle MODIFY_EXPR when COND_EXPR is RHS. (get_expr_operands): Same. * tree-ssanames.c (make_ssa_name): Do not use free_ssanames. (release_ssa_name): Same. * tree-vectorizer.c (vect_transform_select): New function. (vect_transform_compare): New function (vect_is_supportable_operation): New function. (vect_is_supportable_compare): New function. (vect_is_supportable_select): New function. (get_array_base): Move into tree.c. (vect_loop_version): New function. (second_loop_vers_available): New variable. (default_vector_compare_p): New function. (default_vector_compare_for_p): New function. (default_vector_comapre_stmt): New function. (default_vector_select_p): New function. (default_vector_select_for_p): New function. (default_vector_select_stmt): New function. (vect_transform_stmt): Handle select_vec_info_type and compare_vec_info_type. (vect_is_supportable_op): Use vect_is_supportable_operation. (vect_analyze_operations): Check select and compare support. (vect_analyze_data_refs_alignment): Print data reference in dump file. (vect_analyze_loop_form): Use if-conversion and update loop->num_nodes check. (vectorize_loops): Use vect_loop_version. Handle second loop version. * tree-vectorizer.h (struct _stmt_vec_info): New members - select_vec_info_type and compare_vec_info_type. (default_vector_compare_p): New function decl. (default_vector_compare_for_p): New function decl. (default_vector_comapre_stmt): New function decl. (default_vector_select_p): New function decl. (default_vector_select_for_p): New function decl. (default_vector_select_stmt): New function decl. * tree.c (get_array_base): Move from tree-vectorizer to here. * tree.h (get_array_base): New function decl. * config/rs6000 (vector_builtin_fns): New. (rs6000_vector_compare_p): New function. (rs6000_vector_compare_for_p): New function. (rs6000_vector_compare_stmt): New function. (rs6000_vector_select_p): New function. (rs6000_vector_select_for_p): New function. (rs6000_vector_select_stmt): New function. (TARGET_VECTOR_COMPARE_P, TARGET_VECTOR_COMPARE_FOR_P, TARGET_VECTOR_COMPARE_STMT, TARGET_VECTOR_SELECT_P, TARGET_VECTOR_SELECT_FOR_P, TARGET_VECTOR_SELECT_STMT): Define. (def_builtin): Record builtin fn node in vector_builtin_fns. * rs6000.h (enum rs6000_builtins): New entry - RS6000_BUILTIN_MAX. 2004-06-12 Devang Patel Radar 3681611 * gcc.c (do_spec_1): Disable local IMA patch that creats new temp. file for each source file. 2004-06-12 Dorit Naishlos Olga Golovanevsky Ayal Zaks * tree-vectorize.c (vect_build_symbl_bound, vect_gen_if_guard): New. (vect_create_index_for_array_ref): Use integer_zer_node as init. (vect_update_initial_conditions_of_duplicated_loop): Update phis of epilog loop header and new loop exit destination. (vect_transform_loop): Remove code that now belongs to vect_generate_tmps_on_preheader () function. Use vect_gen_if_guard function twice. 2004-06-11 Dale Johannesen * tree-ssa-loop-niter.c (number-of_iterations_cond): Apply Zdenek's patch from 5/28 lno-branch. 2004-06-10 Dale Johannesen * tree-scalar-evolution.c (scev_finalize): Remove wild load. 2004-06-10 Fariborz Jahanian * version.c: Change version date to 20040529 (date of last merge). 2004-06-09 Dale Johannesen * df.c (df_def_record_1): Handle DImode parallel. 2004-06-09 Fariborz Jahanian * gengtype.c (get_output_file_with_visibility): Removed dead code. * gimplify.c (copy_if_shared_r): brought in patch to PR15884 done by RTH to fix perlbmk crash. 2004-06-08 Dale Johannesen * config/rs6000/t-darwin: Remove duplicate fpsave. 2004-06-08 Andrew Pinski approved Dale Johannesen Radar 3683113, PR 15881. * fold.const.c (fold_convert): Handle ptr-to-member. * tree-scalar-evolution.c (count_ev_in_wider_type): Use fold_convert not convert. (compute_overall_effect_of_inner_loop): Ditto. (chrec_is_positive): Ditto. (add_to_evolution_1): Ditto. (add_to_evolution): Ditto. (first_iteration_non_satisfying_1): Ditto. (follow_ssa_edge_in_rhs): Ditto. (interpret_rhs_modify_expr): Ditto. (number_of_iterations_in_loop): Ditto. 2004-06-08 Robert Bowdidge * config/darwin.c (machopic_indirect_call_target): Added patch from PR/15720 (function marked inline which is called directly isn't emitted). 2004-06-08 Fariborz Jahanian * varasm.c (assemble_variable): Resotored zerofill size optimization. * config/rs6000/rs6000.c (rs6000_override_options): Place rs6000_init_hard_regno_mode_ok after setting of -fast flags. 2004-06-08 Caroline Tice * common.opt (fcreate-profile): Add new command line option. (fuse-profile): Likewise. * gcc.c (LINK_COMMAND_SPEC): Add fcreate-profile to list of flags that causes "-lgcov" to be included in link command. * opts.c (commmon_handle_option): Add cases for fcreate-profile and fuse-profile; make them fall into the cases for fprofile-generate and fprofile-use, respectively. * config/darwin.h (LINK_COMMABND_SPEC): Add fcreate-profile to list of flags that causes "-lgcov" to be included in link command. * doc/invoke.texi (fcreate-profile, fuse-profile): Add documentation for the new command line options. Indicates they are obsolete and should not be used. 2004-06-07 Fariborz Jahanian * gcc.c: Removed setting of -combine option with -fast. 2004-06-07 Fariborz Jahanian * decl.c (maybe_commonize_var): Removed APPLE LOCAL coalescing stuff. * method.c (use_thunk): ditto. * rtti.c (tinfo_base_init): ditto. * common.opt: ditto. 2004-06-07 Dale Johannesen * cse.c (cse_insn): Make sure there's a ZERO_EXTEND before looking under it. (176.gcc spec regression) 2004-06-07 Ayal Zaks Radar 3619935 - Part 1 * target-def.h (TARGET_VECT, TARGET_VECT_BUILD_BUILTIN_LVSL, TARGET_VECT_SUPPORT_MISALIGNED_LOADS, TARGET_VECT_PERMUTE_MISALIGNED_LOADS, TARGET_VECT_BUILD_BUILTIN_VPERM): New macros for TARGET_INITIALIZER. * target.h (struct vect): New substruct of gcc_target. * tree-vectorizer.c (vect_create_index_for_array_ref): Return also the initial value of the iv. (vect_create_data_ref): Return also the created pointer; don't call vect_align_data_ref. (vect_finish_stmt_generation): New. (vect_transform_load): Handle misaligned loads too. (vect_analyze_data_refs_alignment): Allow loads to be misaligned. * config/rs6000/rs6000.c (TARGET_VECT_BUILD_BUILTIN_LVSL, TARGET_VECT_SUPPORT_MISALIGNED_LOADS, TARGET_VECT_PERMUTE_MISALIGNED_LOADS, TARGET_VECT_BUILD_BUILTIN_VPERM): Redefine. (rs6000_support_misaligned_vloads, rs6000_permute_misaligned_vloads, rs6000_build_builtin_lvsl, rs6000_build_builtin_vperm): New. 2004-06-07 Olga Golovanevsky * tree-vectorizer.c (vect_update_initial_conditions_of_duplicated_loop): Handle general form of "init" and "step" of access function. * tree-ssa-loop-manip.c (tree_duplicate_loop_to_exit_cfg): The exit from loop is taken from bb previous to latch instead of latch itself. 2004-06-07 Devang Patel Radar 3673334 * config/darwin-driver.c (add_arch): New. (strip_path_and_suffix): Use strcpy. (main): Use add_arch(). 2004-06-07 Devang Patel Radar 3668208 and 3668213 * config/rs6000/darwin.h (CC1_SPEC): Handle -gused and -gfull. * config/i386/darwin.h (CC1_SPEC): Same. 2004-06-07 Caroline Tice * doc/invoke.texi (-fast): Add documentation for "-fast" option. 2004-05-29 Dale Johannesen * config/rs6000/rs6000.c (rs6000_override_options): Enable hot/cold partitioning with -fast -profile-use. 2004-05-28 Ziemowit Laski Radar 3665286 * cpplex.c (_cpp_peek_token): Fix bug in computing context size; increment/decrement 'keep_tokens' state instead of saving/restoring it. * cpplib.h (cpp_callbacks): Change 'expand_macro_p' hook to 'macro_to_expand', returning a cpp_hashnode pointer. * cppmacro.c (cpp_get_token): Call 'macro_to_expand' hook instead of 'expand_macro_p'. (warn_of_redefinition): Do not warn if redefining a conditional macro. * config/rs6000/rs6000-c.c (altivec_categorize_keyword): New function. (rs6000_expand_macro_p): Renamed to 'rs6000_macro_to_expand'; rewritten to call altivec_categorize_keyword() and return one of the three canonical macros ('__vector', '__pixel' and '__bool') as needed. (rs6000_cpu_cpp_builtins): Mark all AltiVec keyword variants as conditional macros, some expanding to themselves (e.g., '#define bool bool') by default. * config/rs6000/rs6000-protos.h (rs6000_expand_macro_p): Renamed to 'rs6000_macro_to_expand'. 2004-05-28 Fariborz Jahanian * explow.c (copy_to_mode_reg): For PARALLEL patterns, copy to reg via a temprary. 2004-05-27 Dale Johannesen * loop-invariant.c (check_maybe_invariant): Disallow CALL hoists. * varasm.c (assemble_start_function): Construct unlikely_section_label unconditionally. 2004-05-26 Caroline Tice * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): Initialize variable 'has_hot_blocks'. (fix_up_fall_thru_edges): Initialize variable'cond_jump'. * cfgcleanup.c (try_forward_edges): Add code/tests to make sure the optimization is not attempted across section boundaries. * cfglayout.c (fixup_reorder_chain): Correct comments. * cfgrtl.c (try_redirect_by_replacing_jump): Fix test to make sure optimization is not attempted across section boundaries. * final.c (final_scan_instruction): Replace calls to text_section with calls to function_section. * predict.c (probably_never_executed_bb_p): Change criterion to be basic block count equals zero. * varasm.c (unlikely_text_section_name): New global variable. (text_section): Remove call to assemble_align. (unlikely_text_section): Modify to build & use unlikely_text_section_name rather than directly using UNLIKELY_EXECUTED_TEXT_SECTION NAME; remove call to assemble_align; move code to free/initialize unlikely_section_label to assemble_start_function. (in_unlikely_text_section): Modify to use unlikely_text_section_name. (named_section): Add code to initialize unlikely_text_section_name if appropriate. (function_section): Reorder clauses in if statement to make sure functions containing only cold blocks end up in the correct section. (assemble_start_function): Add code to correctly initialize/free unlikely_text_section_name. Also make sure the cold label is printed out at the start of cold functions. (default_section_type_flags_1): Modify to use unlikely_text_section_name. * config/rs6000/darwin.h (HAS_LONG_UNCOND_BRANCH): Add darwin-specific definition, based on the TARGET_LONG_BRANCH (-mlongcall) flag. 2004-05-25 Dale Johannesen * tree-ssa-loop-niter.c: Add. New in lno branch. Oops. 2004-05-25 Mike Stump Radar 3665096 * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Change default for long double type size to be 128. 2004-05-25 Dale Johannesen Merge from LNO branch as of 05-18. --The following files are identical to lno branch: * df.c: Merge. * lambda-code.c: Merge. * loop-iv.c: Merge. * tree-chrec.c: Merge. * tree-chrec.h: Merge. * tree-data-ref.c: Merge. * tree-data-ref.h: Merge. * tree-elim-check.c: Merge. * tree-fold-const.h: Merge. * tree-scalar-evolution.c: Merge. * tree-scalar-evolution.h: Merge. * tree-ssa-loop-ivcanon.c: Merge. * tree-ssa-loop-ivopts.c: Merge. * tree-vectorizer.c: Merge. --These files were merged selectively, see lno branch ChangeLog.lno. * Makefile.in: Add tree-ssa-loop-niter. * cfgloop.c: Merge changes from Devang's 05-13 patch. * cfgloop.h: Ditto, also Zdenek's 04-30 patch. * expr.c: Merge changes from Zdenek's 05-13 patch. * tree-cfg.c: Ditto. * tree-flow.h: Ditto. Also from Zdenek's 04-30 patch. * loop-invariant.c: Merge. Add DF_EQUIV_NOTES. * rtl.h: Merge change from Zdenek's 05-09 patch. * stor-layout.c: Ditto. * tree.c: Merge change from Sebastian's 04-27 patch. * tree.h: Ditto. Also Zdenek's 05-13 patch. Add TYPE_UNSIGNED. * varasm.c: Merge change from Zdenek's 04-30 patch. * config/rs6000/rs6000.c: Ditto. -- Other stuff: * fold-const.c: Remove unused variable. * config/rs6000/rs6000-c.c: Make #define of bool work. * config/rs6000/t-rs6000: Make #define of bool work. Remove -Wno-error requirements. 2004-05-25 Mike Stump Radar 3667005 * config/darwin.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Move long double size default from here... * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): to here. 2004-05-24 Devang Patel Radar 3665390 * config/darwin-driver.h (main): While reinserting output filename do not forget -o. 2004-05-24 Mike Stump Radar 3589079 * config/darwin.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Change default for long double type size to be 128. * c-common.c: Change default for -Wwarn-long-double to off. (warn_about_long_double): Change wording to account for new long double size. * doc/invoke.texi (-Wlong-double): Likewise. 2004-05-22 Devang Patel Radar 3644687 * config/darwin-driver.c (main): Reinsert output filename only if user supplied one. 2004-05-22 Dale Johannesen * simplify-rtx.c (simplify_unary_operation): Don't create NOT(SYM) or (MINUS(CON SYM)). * config/rs6000/rs6000.h (machine_function): Make substitute_pic_base_reg unsigned. * config/rs6000/rs6000.md: Compare it to INVALID_REGNUM not -1. * config/rs6000/rs6000.c (throughout): Ditto. 2004-05-21 Ziemowit Laski * opts.c (common_handle_option): Do not const-qualify a char buffer that has sprintf() and free() called on it. 2004-05-21 Ziemowit Laski Radar 3621323 * c-lex.c: Do not include target.h. (C_LEX_BUFCAPACITY, C_LEX_OFFS_BOUND, c_lex_buf_beg, c_lex_buf_end, c_lex_buf, c_lex_peek, c_lex_prepend): Remove. (get_nonpadding_token): Get rid of int argument; adjust call sites accordingly. * cpplex.c (_cpp_peek_token): New function. (_cpp_temp_token): Account for existence of lookaheads when allocating token. * cpplib.h (cpp_callbacks): Add new 'expand_macro_p' hook. (NODE_CONDITIONAL): New flag for macro nodes. (_cpp_peek_token, _cpp_backup_tokens_direct): New prototypes. * cppmacro.c (cpp_get_token): For macros marked NODE_CONDITIONAL, call the 'expand_macro_p' predicate to see if they should be expanded. (_cpp_backup_tokens_direct): New function, broken off from _cpp_backup_tokens(). (_cpp_backup_tokens): Call _cpp_backup_tokens_direct(). * config/rs6000/rs6000-c.c (rs6000_expand_macro_p): Add cpp_reader parameter; call _cpp_peek_token() instead of c_lex_peek(). (rs6000_cpu_cpp_builtins): Attach rs6000_expand_macro_p() to a cpplib callback instead of a target hook. * config/rs6000/rs6000-protos.h (rs6000_expand_macro_p): Add cpp_reader parameter to prototype. * hooks.c (hook_bool_constcpp_tokenp_false): Remove. * hooks.h (hook_bool_constcpp_tokenp_false): Remove prototype. * target-def.h (TARGET_EXPAND_MACRO_P): Remove. * target.h (gcc_target): Remove 'expand_macro_p' target hook. 2004-05-20 Devang Patel * config/darwin-driver.c (main): Prepand "-Wl," before -final_output to make it linker option. 2004-05-20 Fariborz Jahanian * c-opts.c (c_common_post_options): Remove old declaration and use of stdin_filename. Add new call to set_stdin_option. * common.opt: Add fpredictive-compilation=n option. * cppfiles.c (STAT_SIZE_RELIABLE macro): Change definition. (pch_open_file): No pch stuff with stdin file. (find_file_in_dir): When opening the main file, revert to opening stdin instead, in predictive compilation mode. (read_file_guts): Support for reading from stdin for predictive compilation sizes are added. (read_file): Don't close stdin. (read_from_stdin): New routine. * cpphash.h: New field declaration 'is_main_file' added. * cppinit.c (cpp_read_main_file): Set is_main_file to true, and then to false in predictive compilation mode. * cpplex.c (_cpp_get_fresh_line): Read more from stdin when in predictive compilation mode. * cpplib.c (set_stdin_option): New definition. * cpplib.h: Declaration updates. * flags.h: Declaration of predictive_compilation. * opts.c (common_handle_option): Processing -fprdictive-compilation=n options. * toplev.c: Definition of predictive_compilation added. 2004-05-14 Dale Johannesen * Makefile.in: Remove local -Wno-error dependencies. 2004-05-13 Caroline Tice * c-common.c (builtin_function_disabled_p): Remove "static" from function declaration and definition. * c-common.h (builtin_function_disabled_p): Add extern function definition. * c-decl.c (merge_translation_unit_decls): Add code to test function decls to see if they are builtin and the builtin is supposed to be disabled before attempting to merge the decls. 2004-05-12 Devang Patel * opts.c (common_handle_option): Handle OPT_arch. 2004-05-12 Devang Patel * config/darwin.h (darwin_builtins): Move to ... * config/darwin.c (darwin_builtins); here. 2004-05-12 Dale Johannesen Radar 3509006 * config/rs6000/rs6000.c (rs6000_override_options): Don't enable string insns with -Os. * doc/invoke.texi: Document this behavior. * testsuite/gcc.apple/string-insns.c: New. 2004-05-12 Dale Johannesen * config/rs6000/rs6000.c (rs6000_stack_info): Restore an optimization lost in merge. 2004-05-11 Ziemowit Laski * gcc.c (process_command): Do not define __CONSTANT_CFSTRINGS__, since config/darwin.h already does this. (do_spec_1): Emit "-mconstant-cfstrings" instead of "-fconstant-cfstrings". 2004-05-11 Devang Patel * gcc.c (optiom_map): Remove -precomp-trustfile support. * c-opts.c (c_common_handle_option): Remove -precomp-trustfile and -header-mapfile support. * common.opt: Same. * c.opt: Remove -header-mapfile support. 2004-05-11 Caroline Tice * rtl.c (NOTE_INSN_UNLIKELY_EXECUTED_CODE): Add this note back in; it seems to have vanished during a merge. 2004-05-10 Ziemowit Laski * config/rs6000/altivec.h: Bring over from mainline. * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define __APPLE_ALTIVEC__ to indicate Apple syntax support. 2004-05-10 Dale Johannesen * config/darwin.c: ANSIfy syntax (eliminate warnings). * config/darwin-c.c: Ditto. * rs6000.c: Small cosmetic change in local code. 2004-05-06 Caroline Tice * config/rs6000/rs6000.c (rs6000_override_options): Modify to not turn on hot/cold partitioning in the presence of exception handling. 2004-05-06 Dale Johannesen * Merge from lno branch as of 04-24. Files changed: lambda-code.c lambda.h tree-chrec.c tree-chrec.h tree-data-ref.c tree-elim-check.c tree-flow.h tree-loop-linear.c tree-scalar-evolution.c tree-ssa-loop-im.c tree-ssa-loop-ivopts.c tree-ssa-loop-manip.c tree-ssa-loop.c tree-vectorizer.c tree-vectorizer.h 2004-05-04 Caroline Tice * config/rs6000/darwin.h (FP_SAVE_INLINE): Modify this to always be 1 ("on") if the optimization level is -O3 or higher. 2004-04-30 Dale Johannesen * cse.c (cse_insn): Don't add REG_EQUAL note for (CONST (MINUS (LABEL_REF) (0))). 2004-04-30 Caroline Tice * varasm.c (unlikely_section_label): New global variable. (unlikely_text_section): Change variable name from 'unlikely_section_name' to 'unlikely_section_label', make it a global variable, and move the code to generate its value to assemble_start_function. (assemble_start_function): Add code to generate *correct* value for 'unlikely_section_label'. Now makes use of value from 'fnname' parameter. 2004-04-29 Devang Patel * loop-iv.c : Merge from lno-branch as of 2004:04:19 00:00. * tree-pass.h : Merge from lno-branch as of 2004:04:19 00:00. * tree-ssa-alias.c : Merge from lno-branch as of 2004:04:19 00:00. * tree-ssa-phiopt.c : Merge from lno-branch as of 2004:04:19 00:00. 2004-04-29 Devang Patel Merge lno-branch as of 2004:04:18 00:00 into apple-ppc-branch. 2004-04-28 Fariborz Jahanian * function.c (assign_parms): Add 2nd iteration over vector args if needed. * calls.c (initialize_argument_information): Add new argument, add 2nd iteration over vector arguments if needed. * target-def.h (default_skip_vec_args, TARGET_SKIP_VEC_ARGS): New. * target.h (skip_vec_args): Added to calls structure. * targhooks.c (default_skip_vec_args): Default definition. * targhooks.h (default_skip_vec_args): Declaration. * config/rs6000/rs6000.c (skip_vec_args): New definition. 2004-04-28 Stuart Hastings * config/rs6000/rs6000.c (macho_branch_islands): Fix sprintf arguments. * config/rs6000/rs6000.md (output_call): Fix arguments. 2004-04-27 Devang Patel * config/darwin.h (LINK_COMMAND_SPEC): Use darwin_arch_ld_spec. * config/rs6000/darwin.h (DARWIN_ARCH_ASM_SPEC): New. (DARWIN_ARCH_SPEC): Rename as... (DARWIN_ARCH_LD_SPEC): New name. * config/i386/darwin.h (DARWIN_ARCH_ASM_SPEC): New. (DARWIN_ARCH_SPEC): Rename as... (DARWIN_ARCH_LD_SPEC): New name. 2004-04-26 Andrew Pinski * configure.ac: Add test for -Wno-long-double. * Makefile.in (STRICT2_WARN): Add -Wno-long-double. (alloc-pool.o-warn): Delete. (ggc-page.o-warn): Delete. * configure: Regenerate. 2004-04-23 Dale Johannesen Radars 3480058, 3178986 * c-decl.c (merge_decls): Preserve duplicate_decl bit. (merge_translation_unit_decls): Rewritten so -fno-common works. * opts.c (decode_options): Turn on flag_no_common with -fast or -fastcp. * tree.h (struct tree_decl): Add duplicate_decl bit and DECL_DUPLICATE_DECL. * varasm.c (assemble_variable): Use it. * config/rs6000/rs6000.c (rs6000_override_options): Remove reorder-blocks-and-partition from -fast*. Enable align-natural with -fastcp. * ../libstdc++-v3/include/std/std_fstream.h (basic_ifstream): Make _M_filebuf 8-byte aligned. (basic_ofstream): Ditto. 2004-04-22 Devang Patel Radar 3401402 and 3511029 Remove FAT Build support from gcc.c * gcc.c (struct arch_config_out): Remove. (struct arch_out): Remove. (num_arches, curent_arch, final_output): Remove. (set_new_arch): Remove. (%T support): Remove. (%f support): Remove. (%F support): Remove. ('@' support in specs): Remove. (ofile_merge_spec): Remove. (exec_merge_spec): Remove. (build_search_list): Remove fat builds readibility change. (SWITCH_IGNORE_RESTORE): Remove. (-arch support): Remove. * config/darwin.h (LINK_COMMAND_SPEC): Remove -arch*. Add %(darwin_arch_spec). * confiig/i386/darwin.h (ASM_SPEC): Add %(darwin_arch_spec). (DARWIN_ARCH_SPEC): New. * confiig/rs6000/darwin.h (ASM_SPEC): Add %(darwin_arch_spec). (DARWIN_ARCH_SPEC): New. * config/rs6000/rs6000.h (SUBTARGET_EXTRA_SPECS): Surround it with #ifndef. * config/darwin-driver.c: New file. 2004-04-20 Geoffrey Keating * c-cppbuiltin.c (define__GNUC__): Better precision and more error checking for code defining __APPLE_CC__. * testsuite/gcc.apple/applecc.c: New. 2004-04-15 Devang Patel * config/i386.h: Add static tree nodes for vector types to accomodate tree.h changes due to local Altivec patch. 2004-04-15 Caroline Tice Fix various problems related to hot/cold partitioning (but not all of them yet). * bb-reorder.c (tm_p.h): Add new include statement. (HAVE_return): Define HAVE_return appropriately if not already defined. (find_rarely_executed_basic_blocks_and_crossing_edges): Modify to only mark crossing edges if architecture supports named sections. (fix_crossing_conditional_branches): Add test for HAVE_return before calling gen_return. (fix_crossing_unconditional_branches): Change VOIDmode to Pmode in call to gen_rtl_LABEL_REF. (fix_edges_for_rarely_executed_code): Only "fix" branches and add REG_CROSSING_JUMP notes if the architecture supports named sections. (reorder_basic_blocks): Change (* targetm.cannot_modify_jumps_p ()) into (targetm.cannot_modify_jumps_p ()). Modify to only add NOTE_INSN_UNLIKELY_EXECUTED_CODE notes if the architecture supports named sections. * cfglayout.c (fixup_reorder_chain): Modify code that adds NOTE_INSN_UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes, to only do so if architecture supports named sections. * cfgrtl.c (target.h): Add new include statement. (force_nonfallthru_and_redirect): Modify code that adds NOTE_INSN_UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes, to only do so if architecture supports named sections. (commit_one_edge_insertion): Likewise. * dbxout.c (dbxout_source_file): Fix bug, when writing out source location debug information, to not change to the wrong section. * defaults.h (NORMAL_TEXT_SECTION_NAME): Remove this definition. (SECTION_FORMAT_STRING): Remove this definition. * final.c (final_scan_insn): Remove unnecessary in_unlikely_text_section test from if statement. Modify code that switches sections to not do so if architecture does not support named sections. Cleaned up if statement. * ifcvt.c (if_convert): Modified test that disables optimization when partitioning, to not disable it if the architecture does not support named sections. * passes.c (rest_of_compilation): Removed flag_exceptions test from code that calls partitioning, as this is already taken care of in decode_options. * predict.c (choose_function_section): Modify to NOT choose hot or cold sections for the function decl if we are doing partitioning optimization (want to leave it up to the hot/cold partitioning optimization, which is more fine-grained). * varasm.c (text_section): Restore code that outputs assembly for the text section to its original code. (unlikely_text_section): Modify to always use named_section for writing out section directive, remove unnecessary ifdef, and use ASM_OUTPUT_LABEL for labelling the start of the cold section. (in_unlikely_text_section): Modify to deal correctly with being in a named section. (function_section): Restore code for generating section directives to its original order. * config/darwin.c (darwin_asm_named_section): Restore code that generates section directive to its original state. * config/i386/darwin.h (ASM_OUTPUT_ALIGN): Add in_unlikely_text_section () to an if test that tests for in_text_section (). * config/rs6000/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove definition. (SECTION_FORMAT_STRING): Remove definition. 2004-04-10 Paolo Bonzini Richard Henderson PR target/14899 * c-common.c (vector_types_compatible_p): New function. * c-typeck.c (comptypes): Recurse on vector types, treat a non-opaque type as equivalent to an opaque type. (convert_for_assignment): Use vector_types_compatible_p. (digest_init): Use vector_types_compatible_p to check validness of constant vector initializers; otherwise treat them as scalars * tree.c (make_or_reuse_type): New. (build_common_tree_nodes): Use it. * cp/call.c (standard_conversion): Likewise. * cp/typeck.c (comptypes): Recurse on vector types, do not treat a non-opaque type as equivalent to an opaque type. (convert_for_assignment): Use vector_types_compatible_p. 2004-04-13 Fariborz Jahanian * combine.c (combine_instructions): Try insn with each REG_EQUAL note it links back to. (unmentioned_reg_p_1, unmentioned_reg_p): New functions. Brought from tree-ssa branch. 2004-04-09 Dale Johannesen Roll in gcc-1552 enhancement for separate stack temps. Turn on -fstrict-aliasing with -fast. * function.c (assign_stack_local_with_alias): New function. * rtl.h (assign_stack_local_with_alias): Declare it. * config/rs6000/rs6000.c (rs6000_override_options): Turn on strict aliasing with -fast. * config/rs6000/rs6000.md (floatsidf2): Use assign_stack_local_with_alias. (floatunssidf2): Ditto. (fix_truncdfsi2): Ditto. 2004-04-07 Fariborz Jahanian Roll in Ziem Laski's Altivec front-end fixes to support MOTOROLA's Altivec syntax. * Makefile.in: Add c-lex.o dependencies. * c-common.c (vector_constructor_from_expr): New function. * c-common.h (vector_constructor_from_expr): Add declaration. * c-lex.c: include target.h, cpphash.h. Add lexer support for new syntax. (c_lex_prepend): new function. (c_lex_peek): new function. * c-pragma.h: add (c_lex_peek, c_lex_prepend) declarations. 2004-04-06 Dale Johannesen Roll in Zdenek Dvorak's rewrite of doloop optimization. * Makefile.in: add loop-doloop.*, remove doloop.* * loop-doloop.c: New. * doloop.c: Remove. * cfgloop.h: Add new function declarations. * cfgloopanal.c: Add get_loop_level. * loop-iv.c: Recognize unexecuted loops. * loop.c: Remove call to old doloop optimization. * loop.h: Remove LOOP_BCT. * passes.c: Ditto. Call new doloop optimization. * config/rs6000/rs6000-protos.h: Remove duplicate declarations. * config/rs6000/rs6000.c: Cosmetic cleanups. Add -freorder-blocks to -fast. 2004-04-02 Ziemowit Laski Remove APPLE LOCAL AltiVec code whenever possible; merge in AltiVec/VECTOR_TYPE-handling code from mainline. 2004-04-01 Fariborz Jahanian * Makefile.in: add $(PARAMS_H) $(TM_P_H) dependencies for sched-rgn.o. * params.def: add definitions for max-sched-region-blocks and max-sched-region-insns. * sched-rgn.c (too_large): change return type to bool. Use the parametrized values of max-sched-region-blocks, max-sched-region-insns for computing upper limits for interblock scheduling. * doc/invoke.texi: Document max-sched-region-blocks, max-sched-region-insns. 2004-04-01 Caroline Tice * basic-block.h (struct edge_def): Add new field, crossing_edge. (struct basic_block_def): Add new field, partition. (UNPARTITIONED, HOT_PARTITION, COLD_PARTITION): New constant macro definitions. (partition_hot_cold_basic_blocks): Add extern function declaration. * bb-reorder.c (function.h, obstack.h, expr.h, regs.h): Add four new include statements. (N_ROUNDS): Increase the maximum number of rounds by 1. (branch_threshold): Add array value for new round. (exec_threshold): Add array value for new round. (push_to_next_round_p): New function. (add_unlikely_executed_notes): New function. (find_rarely_executed_basic_blocks_and_crossing_edges): New function. (mark_bb_for_unlikely_executed_section): New function. (add_labels_and_missing_jumps): New function. (add_reg_crossing_jump_notes): New function. (fix_up_fall_thru_edges): New function. (find_jump_block): New function. (fix_crossing_conditional_branches): New function. (fix_crossing_unconditional_branches): New function. (fix_edges_for_rarely_executed_code): New function. (partition_hot_cold_basic_blocks): New function. (find_traces): Add an extra round for partitioning hot/cold basic blocks. (find_traces_1_round): Add a parameter. Modify to push all cold blocks, and only cold blocks, into the last (extra) round of collecting traces. (better_edge_p): Add a parameter. Modify to favor non-crossing edges over crossing edges. (bb_to_key): Add code to correctly identify cold blocks when doing partitioning. (connect_traces): Modify to connect all the non-cold traces first, then go back and connect up all the cold traces. (reorder_basic_blocks): Add call to add_unlikely_executed_notes. * cfg.c (entry_exit_blocks): Add initialization for partition field in entry and exit blocks. * cfgbuild.c (make_edges): Update current_function_has_computed_jump if we are doing hot/cold partitioning. * cfgcleanup.c (cfglayout.h): Add new include statement. (try_simplify_condjump): Modify to not attempt on blocks with jumps that cross section boundaries. (try_forward_edges): Likewise. (merge_blocks_move_predecessor_nojumps): Likewise. (merge_blocks_move_successor_nojumps): Likewise. (merge_blocks_move): Likewise. (try_crossjump_to_edge): Modify to not attempt after we have done the block partitioning. (try_crossjump_bb): Modify to not attempt on blocks with jumps that cross section boundaries. (try_optimize_cfg): Likewise. * cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect jumps that cross section boundaries. * cfglayout.c (flags.h): Add new include statement. (update_unlikely_executed_notes): New function. (fixup_reorder_chain): Add code so when a new jumping basic block is added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are updated appropriately. (duplicate_insn_chain): Add code to duplicate the new NOTE insn introduced by this optimization. * cfglayout.h (scan_ahead_for_unlikely_executed_note): Add new extern function declaration. * cfgrtl.c (can_delete_note_p): Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to list of notes that can be deleted. (create_basic_block_structure): Add initialization for partition field. (rtl_can_merge_blocks): Modify to test blocks for jumps that cross section boundaries. (try_redirect_by_replacing_jump): Modify to not attempt on jumps that cross section boundaries. (commit_one_edge_insertion): Add code so newly created basic block ends up in correct (hot or cold) section. Modify to disallow insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes. (rtl_verify_flow_info_1): Add code to verify that no fall_thru edge crosses section boundaries. (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that cross section boundaries. (force_nonfallthru_and_redirect): Modify to make sure new basic block ends up in correct section, with correct notes attached. * common.opt (freorder-blocks-and-partition): Add new flag for this optimization. * dbxout.c (dbx_function_end): Add code to make sure scope labels at the end of functions are written into the correct (hot or cold) section. (dbx_source_file): Add code so writing debug file information doesn't incorrectly change sections. * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use in partitioning hot/cold basic blocks into separate sections. (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold section partitioning. (HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not conditional branches can span all of memory. (HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not unconditional branches can span all of memory. * final.c (scan_ahead_for_unlikely_executed_note): New function. (final_scan_insn): Add code to check for NOTE instruction indicating whether basic block belongs in hot or cold section, and to make sure the current basic block is being written to the appropriate section. Also added code to ensure that jump table basic blocks end up in the correct section. * flags.h (flag_reorder_blocks_and_partition): New flag. * ifcvt.c (find_if_case_1): Modify to not attempt if conversion if one of the branches has a jump that crosses between sections. (find_if_case_2): Likewise. (ifcvt): Modify to not attempt to mark loop exit edges after hot/cold partitioning has occurred. * opts.c (decode_options): Code to handle new flag, flag_reorder_blocks_and_partition; also to turn it off if flag_exceptions is on. (common_handle_option): Code to handle new flag, flag_reorder_blocks_and_partition. * output.h (unlikely_text_section): New extern function declaration. (in_unlikely_text_section): New extern function declaration. * passes.c (rest_of_handle_stack_regs): Add flag_reorder_blocks_and_partition as an 'or' condition for calling reorder_basic_blocks. (rest_of_handle_reorder_blocks): Add flag_reorder_blocks_and_partition as an 'or' condition for calling reorder_basic_blocks. (rest_of_compilation): Add call to partition_hot_cold_basic_blocks. * print-rtl.c (print_rtx): Add code for handling new note, NOTE_INSN_UNLIKELY_EXECUTED_CODE * rtl.c (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below). (REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that cross between section boundaries. * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note instruction, indicating the basic block containing it belongs in the cold section. (REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross between hot and cold sections. * toplev.c (flag_reorder_blocks_and_partition): Add code to initialize this flag, and to tie it to the command-line option freorder-blocks-and-partition. * varasm.c (cfglayout.h): Add new include statement. (unlikely_section_label_printed): New global variable, used for determining when to output section name labels for cold sections. (in_section): Add in_unlikely_executed_text to enum data structure. (text_section): Modify code to use SECTION_FORMAT_STRING and NORMAL_TEXT_SECTION_NAME macros. (unlikely_text_section): New function. (in_unlikely_text_section): New function. (function_section): Add code to make sure beginning of function is written into correct section (hot or cold). (assemble_start_function): Add code to make sure stuff is written to the correct section. (assemble_zeros): Add in_unlikely_text_section as an 'or' condition to an if statement that was checking 'in_text_section'. (assemble_variable): Add 'in_unlikely_text_section' as an 'or' condition to an if statement that was checking 'in_text_section'. (default_section_type_flags_1): Add check: if in cold section flags = SECTION_CODE. * config/darwin.c (darwin_asm_named_section): Modify to use SECTION_FORMAT_STRING if we are partitioning hot/cold blocks. * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro specifically for the i386. (HAS_LONG_UNCOND_BRANCH): Defined this macro specifically for the i386. * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change text string to something more informative. (NORMAL_TEXT_SECTION_NAME): Add new definition. (SECTION_FORMAT_STRING): Add new definition. * config/rs6000/rs6000.c (rs6000_assemble_integer): Add '!in_unlikely_text_section' as an 'and' condition to an if statement that was already checking '!in_text_section'. (rs6000_override_options): Turn on flag_reorder_blocks_and_partition with "-fast". * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make sure these are properly defined for linux on ppc. * doc/invoke.texi (freorder-blocks-and-partition): Add documentation for this new flag. * doc/rtl.texi (REG_CROSSING_JUMP): Add documentation for new reg_note. * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING, HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for these new macros.