view gcc/ChangeLog-2009 @ 16:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents b7f97abdc517
children 1830386684a0
line wrap: on
line source

2009-12-31  Jakub Jelinek  <>

	* tree-dump.c (dump_options): Don't set TDF_NOUID for all.

2009-12-31  Dave Korn  <>
	    Iain Sandoe <>

	PR target/41605
	* config/darwin.h (LINK_COMMAND_SPEC): Resolve fopenmp specifically
	for target.
	(LINK_SPEC): Replace dynamic libraries by static equivalents where
	* config/darwin9.h (LINK_COMMAND_SPEC): Resolve fopenmp specifically
	for target.

2009-12-30  Dave Korn  <>

	PR lto/42531
	* lto-streamer-out.c (produce_asm): Skip any leading asterisk when
	using DECL_ASSEMBLER_NAME to generate a section name.
	(copy_function): Likewise.

2009-12-30  Andreas Schwab  <>

	PR target/42516
	* config/m68k/ (rotlsi_16): New insn.

2009-12-30  Joseph Myers  <>

	PR c/42439
	* c-decl.c (check_bitfield_type_and_width): Only pedwarn if
	pedantic for bit-field width not an integer constant expression
	but folding to one.

2009-12-30  Ira Rosen  <>

	PR tree-optimization/41956
	* tree-vect-slp.c (vect_supported_load_permutation_p): Add check that
	the load indices differ.

2009-12-30  Uros Bizjak  <>

	PR target/42549
	* config/i386/ (*mmx_subv2sf3): Fix insn operand number for
	alternative 1.

2009-12-30  Robert Millan  <>

	PR other/42537
	* errors.c: Fix typo in comment.
	* graphite-sese-to-poly.c: Likewise.
	* profile.c (is_inconsistent): Fix typo in string.

2009-12-29  Ian Lance Taylor  <>

	PR middle-end/42099
	* expmed.c (expand_divmod): Don't shift HOST_WIDE_INT value more

2009-12-29  H.J. Lu  <>

	* config/i386/i386.c (ix86_expand_int_vcond): Reformat.

2009-12-29  Dave Korn  <>
	    Iain Sandoe <>

	PR objective-c++/41595
	* config/darwin.c (darwin_label_is_anonymous_local_objc_name):
	New function to recognize objective c/c++ internal symbols,
	including mangled ones.
	* config/darwin.h (ASM_OUTPUT_LABELREF): Use
	darwin_label_is_anonymous_local_objc_name to detect both
	mangled and clear ObjC internal symbols.

2009-12-28  H.J. Lu  <>

	PR middle-end/41344
	* omp-low.c (diagnose_sb_2): Handle GIMPLE_COND.

2009-12-24  Andy Hutchinson  <>

	PR target/42457
	* config/avr/avr.c (avr_extra_arch_macro): Remove static.
	(avr_cpu_cpp_builtins): Remove.
	* config/avr/avr.h (avr_extra_arch_macro): Add prototype.
	* config/avr/avr-c.c: New File.
	(avr_cpu_cpp_builtins) : Add.
	* config/avr/t-avr: Add make information for avr-c.
	* config.gcc (avr-*-*): Include avr-c.o as c and cpp object.

2009-12-24  Andy Hutchinson  <>

	PR target/35013, 27192
	* config/avr/avr.c (print_operand_address): Print correct program
	memory address.
	Add warning for large device offset addresses.
	(avr_assemble_integer): Ditto.
	(print_operand): Add warnings for incorrect addressing.
	(out_movqi_r_mr): Tag assembler with new address codes.
	(out_movhi_r_mr): Ditto.
	(out_movsi_r_mr): Ditto.
	(out_movqi_mr_r): Ditto.
	(out_movhi_mr_r): Ditto.
	(out_movsi_mr_r): Ditto.
	* config/avr/ (text_segment_operand): New predicate.
	* config/avr/ (jump): Tag assembler with new address codes.
	(call_insn): Ditto.
	(call_value_insn): Ditto.
	(*tablejump_lib): Ditto.
	(*cbi): Ditto.
	(*sbi): Ditto.
	(indirect_jump): New define_expand.
	(jcindirect_jump): New pattern for constant expression jump.
	(njcindirect_jump): Renamed old indirect_jump.

2009-12-24  Steven Bosscher  <>

	* store-motion.c (build_store_vectors): Clear regs_set_in_block at
	the start of a loop over basic blocks.

2009-12-24  Julian Brown  <>
	    Ramana Radhakrishnan  <>

	PR target/40887
	* config/arm/arm.c (output_call_mem): Remove armv5 support.
	* config/arm/ (*call_mem): Disable for armv5. Add note.
	(*call_value_mem): Likewise.

2009-12-23  Jakub Jelinek  <>

	PR rtl-optimization/42475
	* combine.c (make_compound_operation) <case SUBREG>: Use mode of
	SUBREG_REG (x) instead of tem's mode.

2009-12-23  Jakub Jelinek  <>
	    Cary Coutant  <>

	PR debug/42454
	* dwarf2out.c (add_ranges_by_labels): Conditionally Add DW_AT_ranges
	(dwarf2out_finish): Change calls to add_ranges_by_labels.

2009-12-23  Ramana Radhakrishnan  <>

	PR target/42093
	* config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Fix macro usage
	(CASE_VECTOR_SHORTEN_MODE): Allow signed offsets
	only for TARGET_THUMB1.

2009-12-23  Ramana Radhakrishnan  <>

	PR target/40670
	* config/arm/ Split for Thumb1 as well.

2009-12-22  Cary Coutant  <>

	PR debug/42454
	* dwarf2out.c (dwarf2out_finish): Don't output range for .text
	section unless .text section was used.  Likewise for cold.

2009-12-22  Brian Hackett  <>

	* doc/plugins.texi: Rename pre-genericize event.

2009-12-22  Paolo Carlini  <>

	PR driver/42463
	* params.def ([PARAM_PREDICTABLE_BRANCH_OUTCOME]): Fix typo in
	help string.

	* doc/invoke.texi: Fix typo.

2009-12-22  Paul Brook <>

	* doc/tm.texi (ARG_POINTER_CFA_OFFSET): Document new default.
	* defaults.h (ARG_POINTER_CFA_OFFSET): Add pretend_args_size.
	* config/spu/spu.h (ARG_POINTER_CFA_OFFSET): Add pretend_args_size.

2009-12-21  Brian Hackett  <>

	* plugin.def: Rename pre-genericize event.
	* plugin.c (register_callback, invoke_plugin_callbacks): Same.
	* c-decl.c (finish_function): Invoke callbacks on above event.

2009-12-21  Jakub Jelinek  <>

	PR rtl-optimization/42429
	* reload.c (find_reloads_subreg_address): When adjusting mode of
	MEM, update also MEM_SIZE if it is set.

2009-12-21  H.J. Lu  <>

	PR bootstrap/42345
	* acinclude.m4 (gcc_GAS_FLAGS): New.
	* configure: Regenerated.

2009-12-20  Michael Matz  <>

	PR tree-optimization/42027
	* cfgexpand.c (expand_gimple_cond): Use jumpy sequence for &, &&, |
	and || if jumps are cheap.

2009-12-19  Richard Guenther  <>

	PR lto/42401
	* lto-streamer-out.c (tree_is_indexable): Local statics are indexable.
	(lto_output_tree_ref): Adjust assert.

2009-12-19  Richard Guenther  <>

	PR tree-optimization/42108
	* tree-ssa-sccvn.c (last_vuse_ptr): New variable.
	(vn_reference_lookup_2): Update last seen VUSE.
	(vn_reference_lookup_3): Avoid updating last seen VUSE after
	(visit_reference_op_load): Use last seen VUSE from the first
	lookup when entering into the table.

2009-12-19  Joern Rennecke  <>

	* (PLUGIN_HEADERS): Add more headers.

	* tree-pass.h (GCC_PASS_LISTS): Define.
	(PASS_LIST_NO_all_lowering_passes): New enumeration value.
	(PASS_LIST_NO_all_small_ipa_passes): Likewise.
	(PASS_LIST_NO_all_regular_ipa_passes): Likewise.
	(PASS_LIST_NO_all_lto_gen_passes): Likewise.
	(PASS_LIST_NO_all_passes): Likewise.
	(PASS_LIST_NUM): Likewise.
	(gcc_pass_lists): Declare.
	* passes.c (gcc_pass_lists): Define.

2009-12-18  Richard Guenther  <>

	* tree-ssa-sccvn.c (copy_nary): New function.
	(copy_phis): Likewise.
	(copy_references): Likewise.
	(process_scc): Avoid last iteration by copying the
	optimistic table to the valid table.

2009-12-17  Jakub Jelinek  <>

	* dwarf2out.c (loc_descriptor): For SYMBOL_REFs and LABEL_REFs
	use DW_OP_addr+DW_OP_stack_value instead of DW_OP_implicit_value.
	(add_const_value_attribute): For CONST_STRING, SYMBOL_REFs and
	LABEL_REFs use DW_OP_addr+DW_OP_stack_value DW_AT_location instead of

2009-12-17  Alexandre Oliva  <>

	PR debug/41679
	* var-tracking.c (count_uses): Count MO_VAL_USE of original
	MO_VAL_SET value for COND_EXEC.
	(add_stores): Handle conditional stores.

	PR debug/41679
	* var-tracking.c (use_type): Remove indirection from loc.
	(count_uses): Dereference incoming loc early.
	(add_uses): Dereference incoming loc early.

	PR debug/41679
	* var-tracking.c (add_stores): Avoid value mode mismatch for
	promoted declarations.

2009-12-17  Jakub Jelinek  <>

	PR c++/42386
	* ipa.c (function_and_variable_visibility): Clear same_comdat_group
	links of DECL_EXTERNAL nodes.

2009-12-17  Sandra Loosemore  <>

	* doc/rtl.texi (Vector Operations): Clarify vec_select result mode.

2009-12-17  Julian Brown  <>

	* config/arm/bpabi-v6m.S (test_div_by_zero): New macro.
	(aeabi_ldivmod, aeabi_uldivmod): Use above macro.
	* config/arm/bpabi.S (test_div_by_zero): New macro.
	(aeabi_ldivmod, aeabi_uldivmod): Use above macro.
	* config/arm/lib1funcs.asm (ARM_LDIV0): Tail-call int div-by-zero
	handler for EABI. Add signed/unsigned argument, pass correct value
	to that handler.
	(THUMB_LDIV0): Same, for Thumb.
	(DIV_FUNC_END): Add signed argument.
	(WEAK): New macro (for EABI).
	(__udivsi3, __umodsi3): Add unsigned argument to DIV_FUNC_END. For
	__udivsi3, add entry point which skips division-by-zero test.
	(__divsi3, __modsi3): Add signed argument to DIV_FUNC_END.
	(__aeabi_uidivmod, __aeabi_idivmod): Check for division by zero.
	Call __udivsi3 or __divsi3 via entry points which skip
	division-by-zero tests.
	(__div0): Rename to __aeabi_idiv0, __aeabi_ldiv0 for EABI, and
	declare those names weak.

2009-12-17  Richard Guenther  <>

	PR middle-end/42397
	* builtins.c (get_object_alignment): Properly deal with
	a CONST_DECL base.
	* expr.c (emit_block_move_hints): Assert the alignment makes sense.

2009-12-17  Uros Bizjak  <>

	PR target/32280
	* config/i386/i386-modes.def (V1TI): New vector mode.
	* config/i386/i386.h (VALID_SSE_REG_MODE): Add V1TImode.
	(SSE_REG_MODE_P): Ditto.
	* config/i386/ (SSEMODE16): New mode iterator.
	(AVXMODE16): Ditto.
	(avxvecmode): Handle V1TI mode.
	(*avx_mov<mode>_internal): Use AVXMODE16 instead of AVXMODE.
	(mov<mode>): Use SSEMODE16 instead of SSEMODE.
	(*mov<mode>_internal): Ditto.
	(push<mode>1): Ditto.
	(movmisalign<mode>): Ditto.
	(sse2_ashlv1ti): Rename from sse2_ashlti.
	(sse2_lshrv1ti): Rename from sse2_lshrti.
	(*avx_ashlv1ti): Rename from *avx_ashlti and move from
	(*avx_lshrv1ti): Rename from *avx_lshrti and move from
	(vec_shl_<mode>): Convert operands to V1TImode and use V1TI shift.
	(vec_shr_<mode>): Ditto.
	(*sse2_mulv4si3): Update for renamed sse2_ashlv1ti3.
	(udot_prodv4si): Ditto.
	* config/i386/i386.c (classify_argument): Handle V1TImode.
	(function_arg_advance_32): Ditto.
	(function_arg_32): Ditto.
	(ix86_expand_sse4_unpack): Convert operands to V1TImode and update
	for renamed gen_sse2_lshrv1ti3.
	(ix86_expand_args_builtin) <V2DI_FTYPE_V2DI_INT_CONVERT>: Set rmode
	to V1TImode.
	(struct builtin_description) <__builtin_ia32_pslldqi128>: Update
	for renamed sse2_ashlv1ti3.
	<__builtin_ia32_psrldqi128>: Update for renamed sse2_lshrv1ti3.

	2007-06-11  Uros Bizjak  <>

	PR target/32280
	* config/i386/ ("sse2_ashlti", "sse2_lshrti3"): Move ...
	* config/i386/ ("sse2_ashlti", "sse2_lshrti3"): ... to here.

2009-12-17  Richard Earnshaw  <>

	PR target/42372
	* (pic_add_dot_plus_eight): Change output constraint from
	update to write.

2009-12-17  Shujing Zhao  <>

	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
	Update build_indirect_ref calls.

2009-12-17  Uros Bizjak  <>

	* config/i386/ (IMODE): Remove mode iterator.
	(modesuffix): Remove mode attribute.
	(modeconstraint): Ditto.
	(immconstraint): Ditto.
	(*sync_compare_and_swap<mode>): Use SWI mode iterator instead of
	IMODE mode iterator, imodesuffix mode attribute instead of modesuffix,
	<r> mode attribute instead of modeconstraint and <i> mode attribute
	instead of immconstraint.
	(sync_double_compare_and_swap<mode>): Ditto.
	(sync_old_add<mode>): Ditto.
	(sync_lock_test_and_set<mode>): Ditto.
	(sync_add<mode>): Ditto.
	(sync_sub<mode>): Ditto.
	(sync_and<mode>): Ditto.
	(sync_ior<mode>): Ditto.
	(sync_xor<mode>): Ditto.
	(sync_<code><mode>): Macroize insn pattern from
	sync_{and,ior,xor}<mode> using any_logic code iterator.

2009-12-17  Shujing Zhao  <>

	PR c/40885
	* c-common.h (ref_operator): New type.
	(build_indirect_ref): Adjust prototype with new argument.
	* c-typeck.c (build_indirect_ref): Accept ref_operator as argument and
	emit the diagnostics for easy translation.
	(build_array_ref): Update calls to build_indirect_ref.
	* c-omp.c (c_finish_omp_atomic): Likewise.
	* c-parser.c (c_parser_unary_expression,
	c_parser_postfix_expression_after_primary): Likewise.

2009-12-16  Richard Guenther  <>

	PR lto/42392
	* langhooks.c (lhd_begin_section): Make sure to switch back
	to the text section, not some random one.

2009-12-16  Jakub Jelinek  <>

	* tree-chrec.c (chrec_convert_1): Only fold (T2)(t +- x) to
	(T2)t +- (T2)x if only integer types are involved.

2009-12-16  Ben Elliston  <>

	* tree-data-ref.h (dot_rdg): Remove prototype.
	* tree-data-ref.c (dog_rdg_1, dot_rdg): Remove.

2009-12-16  Kazu Hirata  <>

	* doc/invoke.texi, doc/options.texi, doc/plugins.texi,
	doc/tm.texi: Fix typos.

2009-12-15  Ralf Wildenhues  <>

	* doc/extend.texi (Function Attributes, Extended Asm):
	Replace TABs with spaces.
	* doc/md.texi (Standard Names): Likewise.
	* doc/plugins.texi (Plugins): Likewise.

	* doc/c-tree.texi (Expression trees): Use @itemx for all but
	the first item for merged items.
	* doc/extend.texi (Variable Attributes): Likewise.
	* doc/install.texi (Configuration): Likewise.
	* doc/invoke.texi (RS/6000 and PowerPC Options, RX Options):

2009-12-15  Richard Guenther  <>

	* tree.c (free_lang_data_in_binfo): Do not free BINFO_OFFSET
	(free_lang_data_in_type): Do not free TYPE_STUB_DECL if we
	generate debug information.
	(free_lang_data_in_decl): Do not free DECL_SIZE_UNIT,
	(free_lang_data): Do not disable debuginfo.
	* lto-streamer-out.c (write_symbol_vec): Deal with
	non-constant DECL_SIZE.
	(pack_ts_base_value_fields): Write types with false
	(lto_output_ts_type_tree_pointers): Stream TYPE_STUB_DECL.
	* lto-streamer-in.c (lto_input_ts_type_tree_pointers): Stream
	* dwarf2out.c (add_pure_or_virtual_attribute): Check for
	(gen_type_die_for_member): Test for TYPE_STUB_DECL.
	* opts.c (decode_options): Do not disable var-tracking for lto.
	* doc/invoke.texi (-flto): Document -flto vs. -g experimental
	(-fwhopr): Document experimental status.

2009-12-15  Aldy Hernandez  <>

	PR graphite/42185
	* graphite-sese-to-poly.c (is_reduction_operation_p): Assert that
	we are a GIMPLE_ASSIGN.  Do not calculate rhs code twice.
	(follow_ssa_with_commutative_ops): Return NULL on non assignment.

2009-12-15  Eric Botcazou  <>

	* config/rs6000/ (probe_stack): Use an enclosing SET.

2009-12-15  Richard Guenther  <>

	* gimple.h (compare_field_offset): Declare.
	* gimple.c (compare_field_offset): Export.
	* lto-streamer-in.c (input_gimple_stmt): Use compare_field_offset.

2009-12-15  Richard Guenther  <>

	* lto-cgraph.c (lto_output_node): Also stream the alias
	for regular aliases.
	(input_node): Likewise.

2009-12-15  Paolo Bonzini  <>
	    Shujing Zhao  <>

	* intl.c (get_spaces): New.
	* intl.h (get_spaces): New.

2009-12-14  Mark Mitchell  <>

	* (--with-specs): New option.
	* configure: Regenerated.
	* gcc.c (driver_self_specs): Include CONFIGURE_SPECS.

2009-12-14  Jakub Jelinek  <>

	PR bootstrap/42369
	* config/i386/i386.c (ix86_expand_special_args_builtin): Avoid
	using switch with CODE_FOR_lwp_lwp* cases.

	* config/i386/i386-builtin-types.def (PVOID_FTYPE_VOID): Use

2009-12-14  Eric Botcazou  <>

	* cfgexpand.c (expand_debug_expr) <INDIRECT_REF>: Remove overzealous
	assertion and useless code.
	<TARGET_MEM_REF>: Likewise.

2009-12-14  Alexandre Oliva  <>

	PR debug/41473
	* dwarf2out.c (AT_loc_list_ptr): New.
	(resolve_addr): Remove unresolved attributes and loc_list entries.

	PR debug/41473
	* dwarf2out.c (add_var_loc_to_decl): Don't drop initial empty
	(new_loc_list): Drop gensym arg.  Move generation of ll_symbol...
	(gen_llsym): ... here.  New function.
	(add_loc_descr_to_loc_list): Removed.
	(loc_descriptor): Infer mode from CONST_DOUBLEs and CONST_VECTORs.
	(single_element_loc_list): Removed.
	(dw_loc_list): Don't create entries without a location.  Don't
	special-case the first node of the list, only single nodes.
	(single_element_loc_list_p): Simplify.
	(loc_list_from_tree): Don't use DECL_RTL if loc_list is nonempty.
	(add_location_or_const_value_attribute): Test var loc for NULL.
	(convert_cfa_to_fb_loc_list): Adjust calls to new new_loc_list,
	call gen_llsym if needed.

2009-12-14  Jakub Jelinek  <>

	* cgraph.h (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
	cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
	* cgraph.c (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
	cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
	* except.h (set_nothrow_function_flags): Remove prototype.
	* except.c (set_nothrow_function_flags): Use cgraph_set_nothrow_flag.
	Make static.
	* ipa-pure-const.c (propagate): Use cgraph_set_nothrow_flag,
	cgraph_set_readonly_flag, cgraph_set_pure_flag
	and cgraph_set_looping_const_or_pure_flag.
	(local_pure_const): Likewise.

2009-12-14  Jakub Jelinek  <>
	    Sebastian Pop  <>

	* config/i386/i386-builtin-types.def (PVOID): Declared.
	(VOID_FTYPE_PVOID): Declared.
	(PVOID_FTYPE_VOID): Declared.
	* config/i386/i386.c (IX86_BUILTIN_LLWPCB16, IX86_BUILTIN_LLWPCB32,
	(bdesc_special_args): Adjust declaration of __builtin_ia32_llwpcb,
	__builtin_ia32_slwpcb, __builtin_ia32_lwpval32,
	__builtin_ia32_lwpval64, __builtin_ia32_lwpins32, and
	(ix86_expand_special_args_builtin): Handle VOID_FTYPE_PVOID.
	UCHAR_FTYPE_USHORT_UINT_USHORT.  Warn when the third operand is
	not an immediate.  Also handle builtin functions with 3 arguments.
	(ix86_expand_builtin): Handle IX86_BUILTIN_LLWPCB and
	(memory attribute): Handle lwp.
	(lwp*): Rewrite all the insn patterns for LWP.
	* config/i386/lwpintrin.h (__llwpcb16, __llwpcb32, __llwpcb64,
	__slwpcb16, __slwpcb32, __slwpcb64, __lwpval16, __lwpins16): Removed.
	(__llwpcb, __slwpcb): New.

2009-12-14  Dmitry Gorbachev  <>

	* dominance.c (set_immediate_dominator): Don't mark as inline.

2009-12-14  Eric Botcazou  <>

	* doc/tm.texi (STACK_CHECK_PROTECT): Document alternate default.
	* doc/md.texi (check_stack): Clarify.
	(probe_stack): Likewise.
	* config/rs6000/ (UNSPEC_PROBE_STACK): New constant.
	(probe_stack): New insn.

2009-12-14  Ben Elliston  <>

	* lto-streamer-in.c (lto_get_builtin_tree): fclass can only be a

2009-12-13  Eric Botcazou  <>

	* doc/tm.texi (STACK_CHECK_PROBE_LOAD): Delete.
	* expr.h (STACK_CHECK_PROBE_LOAD): Likewise.
	* explow.c (emit_stack_probe): Do not test STACK_CHECK_PROBE_LOAD.
	* system.h (STACK_CHECK_PROBE_LOAD): Poison.

2009-12-13  Michael Matz  <>

	PR tree-optimization/42027
	* dojump.c (do_jump <TRUTH_AND_EXPR, TRUTH_OR_EXPR>): Go to
	TRUTH_ANDIF_EXPR resp. TRUTH_ORIF_EXPR expander, instead of
	falling through.

2009-12-13  Andy Hutchinson  <>

	PR target/23726
	* config/avr/ (pseudo_register_operand): New predicate
	for pseudos.
	* config/avr/ (divmodqi4): Replace with define_insn_and_split
	to allow div/mod optimization.
	(udivmodqi4): Ditto.
	(divmodhi4): Ditto.
	(udivmodhi4): Ditto.
	(divmodsi4): Ditto.
	(udivmodsi4): Ditto.

2009-12-13  Richard Guenther  <>

	PR tree-optimization/42357
	* tree-sra.c (sra_modify_assign): Do not tear apart struct copies.

2009-12-12  Richard Guenther  <>

	* tree.c (need_assembler_name_p): Abstract decls do not need
	an assembler name.
	* dwarf2out.c (dwarf2out_abstract_function): Preserve
	DECL_ABSTRACT properly.

2009-12-11  Richard Guenther  <>

	* lto-streamer-in.c (lto_input_tree_ref): Do not register
	DEBUG_EXPR_DECLs with the varpool.

2009-12-11  Eric Botcazou  <>

	* config/sparc/linux-unwind.h (MD_FROB_UPDATE_CONTEXT, 64-bit): Define.
	(sparc64_frob_update_context): New function.

2009-12-11  Richard Guenther  <>

	PR lto/41658
	PR lto/41657
	* lto-streamer-out.c (write_global_stream): Do not make decls
	weak but resort to TREE_ASM_WRITTEN to avoid multiple definitions.
	Make sure to mark all decls that we have written.

2009-12-11  Sebastian Andrzej Siewior  <>

	PR target/36047

	* config/m68k/linux.h: Remove LABELNO from the mcount statement. It is
	not used by glibc/uclibc and does not work with large binaries.

2009-12-11  Richard Guenther  <>

	PR lto/41662
	* lto-streamer-in.c (lto_init_eh): Move eh_initialized_p
	handling here.
	(input_eh_regions): Adjust.
	(lto_input_ts_function_decl_tree_pointers): Initialize EH

2009-12-11  Duncan Sands  <>

	* passes.c (make_pass_instance): Allocate and copy the right amount of
	memory for ipa passes, which are not the same size as other passes.

2009-12-11  Joern Rennecke  <>

	* plugin.c (get_named_event_id): Fix hash table rebuild to include
	dynamically allocated events.

2009-12-11  Richard Guenther  <>

	PR lto/42320
	* lto-symtab.c (lto_symtab_resolve_can_prevail_p): Properly
	detect non-prevailing decls.

2009-12-10  Jakub Jelinek  <>

	PR c++/42317
	* cgraph.h (struct cgraph_node): Add same_comdat_group field.
	* cgraph.c (cgraph_remove_node): Unchain node from same_comdat_group
	circular list.
	(cgraph_node_can_be_local_p): Return false for DECL_COMDAT with
	* ipa.c (cgraph_remove_unreachable_nodes): For any reachable node
	mark all its same_comdat_group nodes as also reachable.
	(cgraph_externally_visible_p): Return true even if any of
	same_comdat_group nodes has address taken.
	* lto-cgraph.c (lto_output_node): Stream out same_comdat_group.
	(output_cgraph): Ensure other same_comdat_group nodes are also
	(input_node): Stream in same_comdat_group.
	(input_cgraph_1): Fix up same_comdat_group fields from references
	to pointers.
	* cgraphunit.c (cgraph_analyze_functions): Mark all other
	same_comdat_group nodes as reachable.
	(cgraph_mark_functions_to_output): For each node->process process
	also other same_comdat_group nodes.
	* ipa-inline.c (cgraph_clone_inlined_nodes): Don't reuse nodes
	with same_comdat_group non-NULL.
	(cgraph_mark_inline_edge): Likewise.

2009-12-10  Jan Hubicka  <>

	PR middle-end/42228
	PR middle-end/42110
	* cgraph.c (cgraph_create_edge_including_clones): Add old_stmt
	parameter; update edge if it already exists.
	(cgraph_remove_node): Handle correctly cases where we are removing
	node having clones.
	* cgraph.h (cgraph_create_edge_including_clones): Declare.
	(verify_cgraph_node): Add missing error_found = true code.
	(cgraph_materialize_all_clones): Remove call edges of dead nodes.
	* ipa.c (cgraph_remove_unreachable_nodes): Correctly look for master
	clone; fix double linked list removal.
	* tree-inline.c (copy_bb): Update cgraph_create_edge_including_clones
	call; fix frequency of newly created edge.

2009-12-10  Bernd Schmidt  <>

	PR rtl-opt/42216
	* regrename.c: Error out if MAX_RECOG_OPERANDS is larger than
	(verify_reg_in_set): New function, broken out of verify_reg_tracked.
	(verify_reg_tracked): Use it.
	(scan_rtx_reg): When seeing a use involving a superset of the
	registers in an existing chain, enlarge that chain.  Otherwise,
	allow subsets and set fail_current_block for all other kinds of
	(hide_operands): New argument UNTRACKED_OPERANDS; callers changed.
	Do not modify operands when the bit with the corresponding number
	is set in that bitmap.
	(build_def_use): When we see matching operands with different
	modes, don't set fail_current_block, but keep track of such
	operands in a bitmap if their registers aren't already tracked
	in an open chain.  Pass this bitmap to all hide_operands calls.

2009-12-10  Richard Guenther  <>

	PR tree-optimization/42337
	* tree-ssa-pre.c (seen_during_translate): Remove.
	(phi_translate_1): Collapse into ...
	(phi_translate): ... this.  Remove seen parameter and
	adjust recursive calls.

2009-12-10  Richard Guenther  <>
	Allan Sandfeld Jensen  <>

	* tree-vectorizer.c (vectorize_loops): Properly guard
	vectorizer verboseness.

2009-12-10  Ben Elliston  <>

	* fwprop.c (free_load_extend): Initialise `use'.

2009-12-09  David Edelsohn  <>

	* builtins.c (do_mpc_ckconv): Pass the component type to

2009-12-09  Xinliang David Li  <>

	PR tree-optimization/42337
	* tree-ssa-pre.c (phi_translate_1): Push and Pop SEEN set.

2009-12-09  Nathan Froyd  <>

	* config/rs6000/ (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
	mulv2sf3, divv2sf3): New expanders.
	* config/rs6000/ (spe_evabs, spe_evand, spe_evaddw, spe_evsubfw,
	spe_evdivws): Rename to use standard GCC names.
	* config/rs6000/ (negv2sf, absv2sf2, addv2sf3, subv2sf3,
	mulv2sf3, divv2sf3): Rename to avoid conflict with the new expanders.
	* config/rs6000/rs6000.c (bdesc_2arg, bdesc_1arg): Use new CODE_FOR_
	names for renamed patterns.

2009-12-09  Andreas Krebbel  <>

	* config/s390/ ("copysign<mode>3"): Pattern removed.

2009-12-09  Jakub Jelinek  <>

	* Compute ld_ver, ld_vers, ld_date, ld_vers_major,
	ld_vers_minor and ld_vers_path always, not just when gcc_cv_ld_hidden
	isn't cached.
	* configure: Regenerated.

2009-12-08  Richard Henderson  <>

	* combine.c (setup_incoming_promotions): Fix sign-extend of
	zero-extend case; tidy conditions.

2009-12-08  Michael Matz  <>

	PR middle-end/38474
	* function.c (free_temp_slots): Only walk the temp slot
	addresses and combine slots if we actually changes something.
	(pop_temp_slots): Ditto.

2009-12-08  Olga Golovanevsky  <>

	PR middle-end/41843
	* ipa-struct-reorg.c (compare_fields): New function.
	(find_field_in_struct_1): Use compare_fields function.
	(is_equal_types): Likewise.

2009-12-07  DJ Delorie  <>

	PR c/42312
	* config/mep/mep.c (mep_expand_prologue): Set
	really_need_stack_frame after frame_size is set.

2009-12-07  Richard Henderson  <>

	PR rtl-opt/42269
	* combine.c (setup_incoming_promotions): Improve the conditions
	under which we respect the promotions applied.

2009-12-07  Eric Botcazou  <>

	* config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
	* config/sparc/linux64.h (ASM_SPEC): Likewise.

2009-12-07  Richard Henderson  <>

	PR debug/42299
	PR debug/42166
	* tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
	for ssa names already registered for update.

2009-12-07  Jakub Jelinek  <>

	PR debug/42244
	* ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to

2009-12-07  Sebastian Pop  <>

	* config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the
	options when bit_LWP is set.

2009-12-07  Sebastian Pop  <>

	* config/i386/cpuid.h (bit_ABM): New.
	* config/i386/driver-i386.c (host_detect_local_cpu): Add -mabm to the
	options when bit_ABM is set.

2009-12-07  Jakub Jelinek  <>

	* config/i386/i386.c (bdesc_special_args): Move __builtin_clzs from
	this array ...
	(bdesc_args): ... here.
	* config.gcc (i[34567]86-*-*): Include abmintrin.h.
	(x86_64-*-*): Likewise.

2009-12-07  Sebastian Pop  <>

	* config.gcc (i[34567]86-*-*, x86_64-*-*): Add popcntintrin.h.
	* config/i386/abmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
	* config/i386/i386-c.c (__POPCNT__): Defined.
	* config/i386/popcntintrin.h:  New file.
	* config/i386/smmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
	Include popcntintrin.h.
	* config/i386/x86intrin.h: Include popcntintrin.h when __POPCNT__
	is defined.

2009-12-07  Sebastian Pop  <>

	* config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
	* config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
	* config/i386/ Remove all XOP splitters.
	Allow the second and fourth operands of XOP multiply-add insns
	to be nonimmediate.

2009-12-07  Sebastian Pop  <>

	* config/i386/ Remove all FMA4 splitters.
	Allow the second operand of FMA4 insns to be a nonimmediate.
	Fix comments punctuation.

2009-12-07  Julian Brown  <>

	* config/arm/ (Ps, Pt): New constraint letters.
	* config/arm/ (*thumb2_addsi_short): Tighten constraints.

2009-12-07  Kaveh R. Ghazi  <>

	PR other/40302
	* (HAVE_mpc): Don't define.
	*, configure: Regenerate.

	PR other/40302
	* builtins.c: Remove HAVE_mpc* checks throughout.
	* fold-const.c: Likewise.
	* real.h: Likewise.
	* toplev.c: Likewise.

2009-12-07  Edmar Wienskoski  <>

	* config.gcc (cpu_is_64bit): Add new core e500mc64.
	(powerpc*-*-*): Add new core e500mc64.
	* config/rs6000/ New file.
	* config/rs6000/rs6000.c (processor_costs): Add new costs for
	(rs6000_override_options): Add e500mc64 case to
	processor_target_table. Altivec and Spe options not allowed with
	e500mc64. Disable string instructions for e500mc64. Enable branch
	targets alignment for both e500mc and e500mc64. Initialize
	rs6000_cost for e500mc64.
	(rs6000_emit_sISEL): New function.
	(rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
	(rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
	(rs6000_issue_rate): Set issue rate for e500mc64.
	(rs6000_rtx_costs): Set more accurate cost for mfcr instruction
	on architectures with isel.
	* config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
	* config/rs6000/rs6000.h (processor_type): Add
	(ASM_CPU_SPEC): Add e500mc64.
	* config/rs6000/ (define_attr "cpu"): Add ppce500mc64.
	(abssi2_isel): Expand pattern to handle DImode.
	(nabs<mode>2_isel): New pattern.
	(absdi2): Change pattern to handle 64 bit isel targets.
	(absdi2_internal): Exclude ISEL targets.
	(nabsdi2): Exclude ISEL targets.
	* doc/invoke.texi: Add e500mc64 to list of cpus.

2009-12-07  Uros Bizjak  <>

	* config/i386/ (any_or): New code iterator.
	(any_logic): Rename from plogic code iterator.
	(logicprefix): Rename from plogicprefix code attribute.
	(<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
	any_or code iterator.
	(*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
	any_or code iterator.
	(*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
	(*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
	(ior and xor splitters): Ditto.
	* config/i386/ Updated for rename.
	* config/i386/ Ditto.

2009-12-07  Uros Bizjak  <>

	* config/i386/ (float<SSEMODEI24:mode><X87MODEF:mode>2):
	Remove quotes around condition logic code.

2009-12-06  Richard Henderson  <>

	PR debug/42234
	* tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
	argument earlier.

2009-12-06  Kaveh R. Ghazi  <>

	* doc/install.texi: Document MPC is required.

2009-12-06  Uros Bizjak  <>

	* config/i386/ (g): Add HImode and QImode.
	(general_szext_operand): New mode attribute.
	(*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
	SWI124 mode iterator.
	(and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
	SWIM mode iterator.
	(*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
	SWI124 mode iterator.
	(ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
	SWIM mode iterator.
	(*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
	SWI248 mode iterator.
	(*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
	SWI mode iterator.
	(*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
	SWI mode iterator.
	(xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
	SWIM mode iterator.
	(*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
	SWI248 mode iterator.
	(*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
	SWI mode iterator.
	(*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
	SWI mode iterator.

2009-12-05  Sebastian Pop  <>

	* config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
	* config/i386/i386.h (CC1_CPU_SPEC_1): Remove
	"'-mfused-madd' was removed".
	* config/i386/i386.opt (mfused-madd): New.
	* config/i386/ Add TARGET_FUSED_MADD to FMA4 insns.
	* doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.

2009-12-05  John David Anglin  <>

	* pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
	* pa-hpux10.h (LIB_SPEC): Likewise.
	* pa-hpux11.h (LIB_SPEC): Likewise.

	PR ada/41912
	* pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
	for signal frames.
	* pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.

2009-12-05  Ralf Wildenhues  <>

	* configure: Regenerate.

2009-12-05  Richard Earnshaw  <>

	* arm/ (thumb2_mulsi_short_compare0): Use a low-register
	for the scratch.

2009-12-04  David Daney  <>

	PR rtl-optimization/42164
	* combine.c (combine_simplify_rtx): Handle truncation of integer

2009-12-04  Richard Guenther  <>

	* lto-streamer-out.c (pack_ts_decl_common_value_fields):
	Revert previous change.
	(lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
	* lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):

2009-12-04  Richard Guenther  <>

	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
	(call_may_clobber_ref_p_1): Likewise.

2009-12-04  Matthias Klose  <>
	    John David Anglin  <>

	PR target/40134
	* config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
	* config/pa/pa-linux.h (LIB_SPEC): Remove.

2009-12-03  Sebastian Pop  <>
	    Richard Henderson  <>

	* config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
	* config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
	* config/i386/ Do not use ix86_fma4_valid_op_p.
	* config/i386/ (fma4_*): Remove alternative with operand 1
	matching a memory access.  Do not use ix86_fma4_valid_op_p.
	(xop_*): Same.
	Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.

2009-12-03  Richard Henderson  <>

	* config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
	all operands into registers.

2009-12-03  Sebastian Pop  <>

	* config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
	* config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
	* config/i386/ Same.

2009-12-03  Richard Guenther  <>

	* cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
	instead of DECL_NAME for the entry point.

2009-12-03  Richard Earnshaw  <>

	* arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
	before the lock release.

2009-12-03  Michael Matz  <>

	PR middle-end/38474
	* cfgexpand.c (struct stack_var): Add conflicts member.
	(stack_vars_conflict, stack_vars_conflict_alloc,
	n_stack_vars_conflict): Remove.
	(add_stack_var): Initialize conflicts member.
	(triangular_index, resize_stack_vars_conflict): Remove.
	(add_stack_var_conflict, stack_var_conflict_p): Rewrite in
	terms of new member.
	(union_stack_vars): Only run over the conflicts.
	(partition_stack_vars): Remove special case.
	(expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
	don't create self-conflicts.
	(account_used_vars_for_block): Don't create any conflicts.
	(fini_vars_expansion): Free bitmaps, don't free or clear removed

2009-12-03  Bernd Schmidt  <>

	PR middle-end/42202
	* regrename.c (live_in_chains): New variable.
	(verify_reg_tracked): New static function.
	(scan_rtx_reg): Update live_in_chains.
	(scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
	we're already tracking the reg.
	(build_def_use): Likewise.  Initialize live_in_chains.

2009-12-03  Ken Werner  <>

	* config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
	startup files.
	* config/spu/spu-protos.h (spu_function_profiler): Add prototype.
	* config/spu/spu.c (spu_function_profiler): New function.
	* config/spu/spu.h (FUNCTION_PROFILER): Invoke

2009-12-03  Dave Korn  <>

	* ggc-page.c (struct free_object): Pull definition out ...
	(struct globals): .. from here.

2009-12-02  Richard Guenther  <>

	* fold-const.c (div_if_zero_remainder): Honor that sizetypes
	are sign-extending.  Simplify.

2009-12-02  Richard Henderson  <>

	PR tree-opt/42215
	* tree-loop-distribution.c (build_size_arg_loc): Tidy.
	(generate_memset_zero): Convert to sizetype properly.  Tidy.

2009-12-02  Richard Guenther  <>

	* lto-streamer-out.c (pack_ts_decl_common_value_fields):
	Do not pretend we have value exprs.

2009-12-02  Richard Guenther  <>

	PR middle-end/41491
	* fold-const.c (try_move_mult_to_index): Do not leak
	domain types into the IL.

2009-12-02  Richard Guenther  <>

	PR middle-end/42088
	* tree.c (free_lang_data): Disable if not using LTO.

2009-12-02  Richard Guenther  <>

	PR middle-end/42229
	* cfgloopmanip.c (remove_path): Avoid cancelling loops twice.

2009-12-02  Ulrich Weigand  <>

	PR middle-end/42224
	* tree.h (int_or_pointer_precision): Remove.
	* tree.c (int_or_pointer_precision): Remove.
	(integer_pow2p): Use TYPE_PRECISION instead.
	(tree_log2): Likewise.
	(tree_floor_log2): Likewise.
	(signed_or_unsigned_type_for): Likewise.
	* fold-const.c (fit_double_type): Likewise.
	* varasm.c (initializer_constant_valid_p): Likewise.

2009-12-02  Ira Rosen  <>

	* doc/invoke.texi (-fdump-tree-slp): Document.
	(-ftree-vectorizer-verbose): Update.
	(-ftree-slp-vectorize): Document.

2009-12-02  Nick Clifton  <>

	* config/rx/rx.c (rx_conditional_register_usage): Do not warn if
	no fixed registers are available for interrupt handlers.  Do not
	fix normal registers.
	(rx_get_stack_layout): Create a stack frame for fast interrupt
	handlers, if necessary.  Push extra registers if needed in order
	to save the accumulator.
	(rx_expand_prologue): Create a stack frame for fast interrupt
	handlers, if necessary.
	(rx_expand_builtin_mvfc): Handle the case where there is no target.

2009-12-01  Sebastian Pop  <>

	* config/i386/abmintrin.h (__lzcnt16): New.
	(__lzcnt): New.
	(__lzcnt64): New.
	* config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
	* config/i386/i386.c (IX86_BUILTIN_CLZS): New.
	(bdesc_special_args): Add __builtin_clzs.
	(ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.

2009-12-01  Sebastian Pop  <>

	* config/i386/abmintrin.h (_mm_popcnt_u32): New.
	(_mm_popcnt_u64): New.

2009-12-01  Sebastian Pop  <>

	* config/i386/abmintrin.h: New.
	* config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
	* config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.

2009-12-01  Uros Bizjak  <>

	* config/i386/ (SWI124): Rename from CRC32MODE.
	(crc32modesuffix): Remove.
	(crc32modeconstraint): Ditto.
	(sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
	imodesuffix instead of crc32modesuffix and <r>m instead of

2009-12-01  Jakub Jelinek  <>

	PR c++/42234
	* tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
	contains no statements.

2009-12-01  Grigori Fursin  <>
	    Joern Rennecke  <>

	* cgraphunit.c (plugin.h): Include.
	(ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
	PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
	* gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
	(enum plugin_event): Define by including plugin.def.
	Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
	(plugin_event_name): Change type to const char **.
	(get_event_last, get_named_event_id, unregister_callback): Declare.
	(register_callback): Change type of event argument to int.
	(highlev-plugin-common.h): New file.
	* (GCC_PLUGIN_H): Add highlev-plugin-common.h and
	(tree-optimize.o passes.o): Depend on $(PLUGIN_H).
	(PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
	(s-header-vars): New rule.
	(install-plugin): Depend on s-header-vars.  Install b-header-vars.
	* params.c (get_num_compiler_params): New function.
	* params.h (get_num_compiler_params): Declare.
	* passes.c (plugin.h): Include.
	(make_pass_instance): Invoke PLUGIN_NEW_PASS.
	(do_per_function_toporder, pass_init_dump_file): No longer static.
	(pass_fini_dump_file): Likewise.
	(execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
	(execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
	* plugin.c (plugin_event_name_init): New array, defined by
	including plugin.def.
	(plugin_event_name): Change type to const char ** and initialize
	to plugin_event_name_init.
	(event_tab, event_last, event_horizon): New variable.
	(get_event_last): New function.
	(plugin_callbacks_init): New array.
	(plugin_callbacks: Change type to struct callback_info **.
	Initialize to plugin_callbacks_init.
	(htab_event_eq, get_named_event_id, unregister_callback): New function.
	(invoke_plugin_va_callbacks): Likewise.
	(register_callback): Change type of event argument to int.
	Handle new events.  Allow dynamic events.
	(invoke_plugin_callbacks): Likewise.  Return success status.
	(plugins_active_p): Allow dynamic callbacks.
	* plugin.def: New file.
	* plugin.h (invoke_plugin_callbacks): Update prototype.
	(invoke_plugin_va_callbacks): Declare.
	* tree-optimize.c (plugin.h): Include.
	(tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
	* tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
	(pass_fini_dump_file, do_per_function_toporder): Likewise.
	* doc/plugin.texi: Document new event types.

2009-12-01  Martin Jambor  <>

	PR tree-optimization/42237
	* tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
	in between references into two.

2009-12-01  Richard Guenther  <>

	* tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
	to the block of the call when remapping a type.

2009-12-01  Martin Jambor  <>

	* cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
	unsigned short int.
	* ipa-prop.h (struct ipa_param_call_note): Likewise.
	* ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.

2009-12-01  Richard Guenther  <>

	* final.c (rest_of_clean_state): If -fcompare-debug is
	given dump final insns without UIDs.
	* tree-ssa-live.c (remove_unused_scope_block_p): Remove
	after_inlining checks.

2009-11-30  Chao-ying Fu  <>

	* config/mips/ (mips_lhx_<mode>): Use sign_extend.

2009-11-30  Dave Korn  <>

	status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
	* configure: Regenerate.
	* Regenerate.

	* config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
	options for Cygwin DLL libstdc++ support wrappers.
	(CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
	according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
	(CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
	whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
	* gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
	(i386_find_on_wrapper_list): Check if a function is found on the list
	of libstdc++ wrapper options.
	(i386_pe_file_end): If we are importing a wrapped function, also emit
	an external declaration for the real version.
	* config/i386/cygming.opt (muse-libstdc-wrappers): New option for
	Cygwin targets. Update copyright year.

2009-11-30  Steve Ellcey  <>
	    Jakub Jelinek <>

	* function.c (instantiate_virtual_regs_in_insn): Copy to new reg
	before forcing mode.

2009-11-30  Anatoly Sokolov  <>

	* config/sh/sh.c (sh_promote_prototypes): Make static.
	(sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
	* config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
	* config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
	(sh_promote_prototypes) : Remove.

2009-11-30  Julian Brown  <>

	* config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
	reloads to LO_REGS.

2009-11-30  Richard Henderson  <>

	* config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
	(bdesc_special_args): Update insn codes.
	(avx_vpermilp_parallel): Correct range check.
	(ix86_rtx_costs): Handle vector permutation rtx codes.
	(struct expand_vec_perm_d): Move earlier.
	(get_mode_wider_vector): New.
	(expand_vec_perm_broadcast_1): New.
	(ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
	(expand_vec_perm_broadcast): New.
	(ix86_expand_vec_perm_builtin_1): Use it.
	* config/i386/i386-protos.h: Update.
	* config/i386/ (avx_vbroadcast_operand): New.
	* config/i386/ (AVX256MODE24P): New.
	(ssescalarmodesuffix2s): New.
	(avxhalfvecmode, avxscalarmode): Fill out to all modes.
	(avxmodesuffixf2c): Add V8SI, V4DI.
	(vec_dupv4sf): New expander.
	(*vec_dupv4sf_avx): Add vbroadcastss alternative.
	(*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
	V4SF and V4SI.  Move C alternatives to front.  Add insertps and
	pinsrd alternatives.
	(*vec_set<mode>_0_sse2): Split out from ...
	(vec_set<mode>_0): Macro-ize for V4SF and V4SI.
	(vec_interleave_highv2df, vec_interleave_lowv2df): Require register
	destination; use ix86_vec_interleave_v2df_operator_ok, instead of
	(*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
	(*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
	(*avx_movddup, *sse3_movddup): Remove.  New splitter from
	vec_select form to vec_duplicate form.
	(*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
	(avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
	(*avx_unpcklpd256): ... here.
	(*vec_dupv4si_avx): New.
	(*vec_dupv2di_avx): Add movddup alternative.
	(*vec_dupv2di_sse3): New.
	(vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
	avx_vbroadcastss256; represent with vec_duplicate instead of
	nested vec_concat operations.
	(avx_vbroadcastf128_<mode>): Rename from
	(*avx_vperm_broadcast_v4sf): New.
	(*avx_vperm_broadcast_<AVX256MODEF2P>): New.

2009-11-30  Martin Jambor  <>

	PR middle-end/42196
	* tree-sra.c (struct access): New field grp_different_types.
	(dump_access): Dump grp_different_types.
	(compare_access_positions): Prefer scalars and vectors over other
	scalar types.
	(sort_and_splice_var_accesses): Set grp_different_types if appropriate.
	(sra_modify_expr): Use the original also when dealing with a complex
	 or vector group accessed as multiple types.

2009-11-30  Richard Henderson  <>

	* config/i386/i386.c (avx_vperm2f128_parallel): New.
	* config/i386/i386-protos.h: Declare it.
	* config/i386/ (avx_vperm2f128_v8sf_operand,
	avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
	* config/i386/ (avx_vperm2f128<mode>3): Change to expander.
	(*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
	(*avx_vperm2f128<mode>_nozero): New.

2009-11-30  Richard Henderson  <>

	* config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
	* config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
	V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
	(bdesc_args): Add them.
	(ix86_expand_builtin): Expand them.
	(expand_vec_perm_pshufb2): Only operate on 16-byte vectors.

2009-11-30  Martin Jambor  <>

	PR middle-end/42206
	* ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.

2009-11-30  Jakub Jelinek  <>

	* ipa-reference.c (propagate): Only dump bitmaps if computed.

2009-11-30  Olga Golovanevsky  <>

	PR middle-end/39806
	* ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
	(new_var_hash): Likewise.
	(is_in_new_vars_htab): Likewise.
	(add_to_new_vars_htab): Likewise.

2009-11-30  Ira Rosen  <>

	* tree-vect-stmts.c (vectorizable_assignment): Support
	multiple types.

2009-11-30  Richard Guenther  <>

	* doc/contrib.texi (Contributors): Add myself.

2009-11-30  Richard Guenther  <>

	* tree.c (free_lang_data): Do not set debug_info_level to
	none if terse.

2009-11-30  Richard Guenther  <>

	PR middle-end/42119
	PR fortran/38530
	* expr.c (expand_expr_addr_expr_1): Properly expand the initializer

2009-11-30  Richard Guenther  <>

	* tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
	variable UID order.

2009-11-30  Richard Guenther  <>

	* tree-dump.c (dump_option_value_in): Add TDF_NOUID.
	* tree-pass.h (TDF_NOUID): Likewise.
	* print-rtl.c: Include tree-pass.h.
	(print_mem_expr): Pass dump_flags.
	(print_rtx): Likewise.
	* print-tree.c: Include tree-pass.h.
	(print_node_brief): Handle TDF_NOUID.
	(print_node): Likewise.
	* tree-pretty-print.c (dump_decl_name): Likewise.
	(dump_generic_node): Likewise.
	* (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)

2009-11-30  Nick Clifton  <>

	* config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
	* config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
	* config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
	__stormy16_count_leading_zeros() into this function.
	(__ctzhi2): Use __builtin_clz.
	(__ffshi2): Likewise.

2009-11-30  Eric Botcazou  <>

	* config/sparc/sparc.c (DF_MODES): Simplify.
	(TF_MODES, OF_MODES): Adjust for above change.
	(TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
	*  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.

2009-11-30  Paolo Bonzini  <>

	PR rtl-optimization/41812
	* fwprop.c (local_md, local_lr): New globals.
	(process_defs, process_uses): Remove local_md argument.  Never
	consider dead pseudos to have singleton def-use chains.
	(single_def_use_enter_block): Perform LR simulation.
	(build_single_def_use_links): Remove local_md local variable.
	Add DF_NOTE.  Allocate local_lr.
	(fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
	* df-problems.c (df_md_scratch): New.
	(df_md_alloc, df_md_free): Allocate/free it.
	(df_md_local_compute): Only include live registers in init.
	(df_md_transfer_function): Prune the in-set computed by
	the confluence function, and the gen-set too.

2009-11-30  Hans-Peter Nilsson  <>

	PR rtl-optimization/40086
	* reorg.c (relax_delay_slots): When looking for redundant insn at
	the branch target, use next_real_insn, not next_active_insn.

2009-11-30  Kaveh R. Ghazi  <>

	* doc/install.texi: Update minimum MPC version to 0.8.

2009-09-09  Segher Boessenkool  <>

	* config/rs6000/ (fnmaddsf4_powerpc_1): Remove
	HONOR_SIGNED_ZEROS final condition.
	(fnmsubsf4_powerpc_1): Same.
	(fnmadddf4_fpr_1): Same.
	(fnmsubdf4_fpr_1): Same.

2009-11-29  Ira Rosen  <>

	PR tree-optimization/42193
	* tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
	to 1 in case of basic block SLP.
	(vectorizable_load): Likewise.

2009-11-28  Jan Hubicka  <>

	* cgraph.c (same_body_alias_1): Break out of
	(same_body_alias): ... here; remove comdat check; it is handled
	in cp already.
	(cgraph_add_thunk): New.
	(dump_cgraph_node): Dump aliases and thunks.
	* cgraph.h (cgraph_thunk_info): New structure.
	(struct cgraph_node): Add thunk info.
	(cgraph_add_thunk): New.
	* cgraphunit.c (cgraph_emit_thunks): Remove.
	(cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
	(assemble_thunk): New function.
	(cgraph_expand_function): Handle thunks.
	(thunk_adjust): New.
	(init_lowered_empty_function): New.
	* lto-cgraph.c (lto_output_node): Stream thunk info.
	(input_node): Likewise.
	* langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
	* i386.c (x86_output_mi_thunk): Make output prettier.

2009-11-28  Richard Guenther  <>

	PR tree-optimization/42183
	* tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
	address taken.  Merge the addressable state of the NRV
	variable and the result instead of copying it.

2009-11-28  Jakub Jelinek  <>

	* matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
	malloc_fname variable.
	(check_allocation_function): Remove unused gsi and bb_level_0
	(transform_access_sites): Remove unused d_type_size and d_type_size_k
	* omega.c (resurrect_subs): Remove unused n variable.
	(omega_solve_geq): Remove unused neweqns variable.
	* lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
	* tree-inline.c (declare_return_variable): Remove USE_P argument,
	return use instead of var.
	(remap_decl, remap_block): Remove unused fn variable.
	(expand_call_inline): Remove unused retvar variable, adjust
	declare_return_variable caller.
	(optimize_inline_calls): Remove unused prev_fn variable.
	* tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
	(vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
	* tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
	* tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
	(vect_create_epilog_for_reduction): Remove unused bytesize variable.
	* omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
	parameter.  Remove unused par_stmt variable.
	(determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
	(expand_omp_sections): Remove unused l1 variable.
	(lower_omp_for): Remove unused ilist variable.
	* tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
	Remove unused has_upstream_mem_write_p variable.
	* recog.c (decode_asm_operands): Remove unused noperands variable.
	* tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
	size2 variable.
	* libgcov.c (__gcov_merge_delta): Remove unused last variable.
	* tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
	base_nm variable.
	(gen_conditions_for_pow): Remove unused ec variable.
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
	* ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
	fndecl variable.
	* tree-ssa-sink.c (statement_sink_location): Remove unused code
	* regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
	* tree-complex.c (create_one_component_var): Remove unused inner_type
	* calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
	unnecessarily when GEN_*CALL omits that argument.
	* regrename.c (regrename_optimize): Remove unused regs_seen variable.
	(build_def_use): Remove unused icode variable.
	* ipa-pure-const.c (check_call): Remove unused callee and avail
	* tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
	* tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
	(vect_pattern_recog): Remove unused stmt variable.
	* sel-sched-ir.c (make_regions_from_the_rest): Remove unused
	new_regions variable.
	* postreload.c (reload_cse_simplify_operands): Remove unused mode
	* tree-parloops.c (create_call_for_reduction_1): Remove unused
	addr_type variable.
	(create_parallel_loop): Remove unused res variable.
	(gen_parallel_loop): Remove unused nloop variable.
	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
	* value-prof.c (gimple_mod_subtract_transform,
	gimple_stringops_transform): Remove unused value variable.
	(gimple_stringops_values_to_profile): Remove unused fcode variable.
	* tree-vrp.c (register_new_assert_for): Remove unused found variable.
	(vrp_visit_switch_stmt): Remove unused n variable.
	* tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
	(vectorizable_operation): Remove unused shift_p variable.
	(vectorizable_store): Remove unused first_stmt_vinfo variable.
	* tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
	* tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
	(vect_permute_store_chain): Remove unused scalar_dest variable.
	(vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
	* tree-ssa-threadupdate.c (thread_single_edge): Remove unused
	local_info variable.
	* tree-optimize.c (tree_rest_of_compilation): Remove unused node
	* optabs.c (expand_binop): Remove unused equiv_value variable.
	(emit_libcall_block): Remove unused prev variable.
	(init_optabs): Remove unused int_mode variable.
	* tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
	(do_structure_copy): Remove unused lhsbase and rhsbase variables.
	(find_func_aliases): Remove unused rhstype variable.
	(ipa_pta_execute): Remove unused varid variable.

2009-11-28  Andy Hutchinson  <>

	* config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.

2009-11-28  David Binderman  <>

	* ira-color.c (put_allocno_into_bucket): Remove set but not used
	local variable hard_regs_num.
	* ira-lives.c (process_single_reg_class_operands): Remove cover_class.
	* loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
	* lower-subreg.c (decompose_multiword_subregs): Remove next.

2009-11-27  Martin Jambor  <>

	PR middle-end/42006
	* tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
	instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
	for vector and complex types.
	(get_adjustment_for_base): Describe return value in the comment.

2009-11-27  Nick Clifton  <>

	* longlong.h (count_leading_zeros): Define macro for stormy16 target.
	* config/stormy16/stormy16-lib2.c: Arrange for separate
	compilation of each function.
	(__ffshi2): New function.
	(__stormy16_count_leading_zeros): New function.
	* config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
	compile each function into its own object file.
	(stormy16-lib2-ashlsi3.c): New stub file.
	(stormy16-lib2-ashrsi3.c): New stub file.
	(stormy16-lib2-clzhi2.c): New stub file.
	(stormy16-lib2-count-leading-zeros.c): New stub file.
	(stormy16-lib2-ctzhi2.c): New stub file.
	(stormy16-lib2-divsi3.c): New stub file.
	(stormy16-lib2-ffshi2.c): New stub file.
	(stormy16-lib2-lshrsi3.c): New stub file.
	(stormy16-lib2-modsi3.c): New stub file.
	(stormy16-lib2-parityhi2.c): New stub file.
	(stormy16-lib2-popcounthi2.c): New stub file.
	(stormy16-lib2-udivmodsi4.c): New stub file.
	(stormy16-lib2-udivsi3.c): New stub file.
	(stormy16-lib2-umodsi3.c): New stub file.

2009-11-27  Richard Henderson  <>

	* config/i386/ (vec_interleave_highv16qi,
	vec_interleave_lowv16qi, vec_interleave_highv8hi,
	vec_interleave_lowv8hi, vec_interleave_highv4si,
	vec_interleave_lowv4si, vec_interleave_highv2di,
	vec_interleave_lowv2di, vec_interleave_highv4sf,
	vec_interleave_lowv4sf, vec_interleave_highv2df,
	vec_interleave_lowv2df): Remove expanders.
	(sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
	sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
	sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
	Rename to their proper vec_interleave equivalent.  Update all users
	to the new name.
	* config/i386/i386.c, config/i386/ Update all users.

2009-11-27  Michael Matz  <>

	PR rtl-optimization/42084
	* cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
	use it to stop walking.
	(expand_gimple_cond): Adjust call to above.

2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR target/41810
	* gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
	[SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
	__extension__ to allow cast from function pointer to object
	pointer in C++.
	* doc/install.texi (--enable-threads): Clarify use of Solaris threads.

2009-11-27  Steven Bosscher  <>

	* config/ia64/ Remove.
	* config/ia64/ Do not include it.
	* config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
	"itanium1", and "merced" from the processor alias table.
	(clocks, add_cycles): Remove global variables.
	(ia64_sched_reorder2): Don't set/use them.
	(ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
	(bundling): Likewise. Remove extra pass for MMMUL/MMSHF.

2009-11-27  Andreas Krebbel  <>

	* config/s390/s390.c (last_scheduled_insn): New variable.
	(s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
	(s390_sched_reorder, s390_sched_variable_issue): New functions.

2009-11-27  Michael Matz  <>

	PR c++/41906
	* tree-eh.c (lower_catch): Stop after expanding a catch-all.

2009-11-27  Richard Guenther  <>

	* loop-init.c (pass_rtl_move_loop_invariants): Use
	(pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
	(pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
	(pass_rtl_doloop): Use TV_LOOP_DOLOOP.

2009-11-27  Andreas Krebbel  <>

	* emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.

2009-11-27  Jakub Jelinek  <>

	* config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
	unused insn variable.
	* genemit.c (output_peephole2_scratches): Only declare and initialize
	_regs_allocated if it will be ever used.
	* cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
	succ_bb variable.
	(create_empty_loop_on_edge): Remove unused freq and cnt variables.
	* unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record

	* opts.c (decode_options): If optimize is bigger than 255,
	set it to 255.

2009-11-26  Richard Henderson  <>

	* config/i386/ (mulv16qi3): Change back from an expander
	to an insn-and-split.
	(mulv4si): Mention AVX not XOP for AVX exception.
	(*sse2_mulv4si3): Likewise.
	(mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.

2009-11-26  Bernd Schmidt  <>

	* cfgexpand (n_stack_vars_conflict): New static variable.
	(triangular_index): Reduce likelyhood of overflow by performing
	the division before the multiplication.
	(resize_stack_vars_conflict): Call fatal_error if overflow
	occurred in triangular_index.  Update n_stack_vars_conflict.

	PR rtl-opt/38582
	* regrename.c (struct du_chain): Remove member earlyclobber.
	(scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
	all callers changed.
	(scan_rtx): Remove argument earlyclobber, all callers changed.
	(hide_operands, restore_operands, record_out_operands): New functions,
	broken out of build_def_use.
	(build_def_use): Call them as necessary.

	* regrename.c (struct du_head): New members id, conflicts,
	hard_conflicts and cannot_rename.
	(enum scan_actions): Remove terminate_all_read and
	terminate_overlapping_read; add mark_all_read.
	(scan_actions_name): Likewise.
	(du_head_p): New typedef.  Define a vector type for it.
	(id_to_chain): New static variable.
	(note_sets, clear_dead_regs): Delete functions.
	(free_chain_data): New function.
	(merge_overlapping_regs): Simply walk the conflicts bitmap.
	Remove argument B, all callers changed.
	(regrename_optimize): Allocate id_to_chain.  Ignore chains that have
	the cannot_rename bit set.  Update regno and nregs of a renamed chain.
	Call free_chain_data when done.
	(do_replace): Remove death notes when the renamed reg is set in the
	last insn; add them if not.
	(mark_conflict, note_sets_clobbers): New static function.
	(fail_current_block, current_id, open_chains_set, live_hard_regs): New
	static variables.
	(scan_rtx_reg): Keep track of conflicts between chains, and between
	chains and hard regs.  Don't terminate chains when we find a read we
	can't handle, mark it unrenameable instead.  For terminate_write,
	terminate chains that are written with an exact match or a superset
	of registers.  Set fail_current_block if multi-word lifetimes are too
	complex to handle.
	(scan_rtx_address): Use mark_all_read instead of terminate_all_read.
	(build_def_use): Initialize current_id, live_chains and live_hard_regs;
	free memory for them when done.
	Rearrange the steps so that earlyclobbers are noted before reads
	are processed.  Add new steps to keep track of hard register lifetimes
	outside insn operands.

2009-11-26  Richard Guenther  <>

	* tree-ssa-dce.c (nr_walks): New variable.
	(mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
	(perform_tree_ssa_dce): Init nr_walks.

2009-11-26  Michael Matz  <>

	PR tree-optimization/41905
	* tree-eh.c (lower_eh_constructs_2): Don't add assignments
	below statements that can't fall thru.

2009-11-26  Michael Matz  <>

	* builtins.c (expand_builtin_printf, expand_builtin_fprintf,
	expand_builtin_sprintf): Remove.
	(expand_builtin): Don't call them.

2009-11-26  Richard Guenther  <>

	* tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.

2009-11-26  Nick Clifton  <>

	* config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
	being used incorrectly.
	(rx_function_ok_for_sibcall): New function.  Do not allow indirect
	sibcalls, or sibcalls from interrupt functions.
	* config/rx/ (sibcall): Convert to a define_expand.  Check
	for a MEM inside a MEM.
	(sibcall_value): Likewise.
	(sibcall_internal): New pattern containing old sibcall pattern.
	(sibcall_value_internal): Likewise.

2009-11-25  Richard Henderson  <>

	* config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
	optional 3rd argument to define the mode.
	* config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
	(V2UDI, V4USI, V8UHI, V16UQI): New.
	* config/i386/i386-modes.def: Rearrange for double-wide AVX.
	* config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
	* config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
	(bdesc_args): Add the builtin definitions to match.
	(ix86_expand_builtin): Expand them.
	(ix86_builtin_vectorization_cost): Rename from
	(ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
	doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
	expand_vec_perm_blend, expand_vec_perm_vpermil,
	expand_vec_perm_pshufb, expand_vec_perm_1,
	expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
	expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
	expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
	ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
	ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
	ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
	* (SSEMODE_EO): New.
	(vec_extract_even<mode>): Use SSEMODE_EO and
	(vec_extract_odd<mode>): Likewise.
	(mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
	vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.

2009-11-25  Richard Henderson  <>

	* target.h (targetm.vectorize.builtin_vec_perm_ok): New.
	* hooks.h, hooks.c (hook_bool_tree_tree_true): New.
	* tree-vect-slp.c (vect_create_mask_and_perm): Don't create
	the vector constant here...
	(vect_transform_slp_perm_load): ... do it here instead.  Validate
	that the permutation vector is implementable by the target.

2009-11-25  Jakub Jelinek  <>

	* config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
	* config/rs6000/sysv4.h (TARGET_REGNAMES): Define.

	* print-rtl.c (print_rtx): When printing newline, append
	print_rtx_head and indentation after the newline.

	PR target/42165
	* config/i386/i386.c (print_operand): For 32-byte memory use
	YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
	* config/i386/ (crc32modesuffix): Expand to nothing
	in -masm=intel mode.
	(sse4_2_crc32di): Print just crc32 instead of crc32q in
	-masm=intel mode.
	* config/i386/ (*mmx_pinsrw): Print correct size of
	memory operand in -masm=intel mode.
	* config/i386/ (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
	*sse2_pinsrw): Likewise.
	(sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
	q suffix in -masm=intel mode.

2009-11-25  Eric Botcazou  <>

	PR target/10127
	PR ada/20548
	PR middle-end/42004
	* dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
	(dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
	ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
	(dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
	(dwarf2out_frame_debug_expr): Revert previous change and adjust for
	above renaming.
	(dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.

2009-11-25  Uros Bizjak  <>

	* config/i386/ (emms_operation): New predicate.
	(vzeroupper_operation): Ditto.
	(vzeroall_operation): Improve pattern recognition.
	* config/i386/ (avx_vzeroupper_rex64): Remove insn pattern.
	(avx_vzeroupper): Change insn pattern to expander.
	(*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
	(*avx_vzeroall): Remove operands 1 and 2.
	* config/i386/ (mmx_emms): Change insn pattern to expander.
	(mmx_femms): Ditto.
	(*mmx_emms): New insn pattern.  Use emms_operation predicate.
	(*mmx_femms): Ditto.
	* config/i386/i386.c (enum ix86_builtins)
	(struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
	Remove initailization.
	<CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.

2009-11-25  Paul Brook  <>

	* config/arm/ (consttable_4): Handle (high ...).

2009-11-25  Robert Nelson  <>
	    Richard Earnshaw  <>

	* arm.h (enum vfp_reg_type): Add VFP_NONE.
	* arm.c (all_fpus): Use it for floating point units that aren't based
	on the VFP architecture.
	(aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
	enum machine_mode.

2009-11-25  H.J. Lu  <>

	* alias.c: Remove trailing white spaces.
	* alloc-pool.c: Likewise.
	* alloc-pool.h: Likewise.
	* attribs.c: Likewise.
	* auto-inc-dec.c: Likewise.
	* basic-block.h: Likewise.
	* bb-reorder.c: Likewise.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* builtins.def: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-cppbuiltin.c: Likewise.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-lex.c: Likewise.
	* c-omp.c: Likewise.
	* c-opts.c: Likewise.
	* c-parser.c: Likewise.
	* c-pretty-print.c: Likewise.
	* c-tree.h: Likewise.
	* c-typeck.c: Likewise.
	* caller-save.c: Likewise.
	* calls.c: Likewise.
	* cfg.c: Likewise.
	* cfganal.c: Likewise.
	* cfgexpand.c: Likewise.
	* cfghooks.c: Likewise.
	* cfghooks.h: Likewise.
	* cfglayout.c: Likewise.
	* cfgloop.c: Likewise.
	* cfgloop.h: Likewise.
	* cfgloopmanip.c: Likewise.
	* cfgrtl.c: Likewise.
	* cgraph.c: Likewise.
	* cgraph.h: Likewise.
	* cgraphbuild.c: Likewise.
	* cgraphunit.c: Likewise.
	* cif-code.def: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* coverage.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* cselib.c: Likewise.
	* dbgcnt.c: Likewise.
	* dbgcnt.def: Likewise.
	* dbgcnt.h: Likewise.
	* dbxout.c: Likewise.
	* dce.c: Likewise.
	* ddg.c: Likewise.
	* ddg.h: Likewise.
	* defaults.h: Likewise.
	* df-byte-scan.c: Likewise.
	* df-core.c: Likewise.
	* df-problems.c: Likewise.
	* df-scan.c: Likewise.
	* df.h: Likewise.
	* dfp.c: Likewise.
	* diagnostic.c: Likewise.
	* diagnostic.h: Likewise.
	* dominance.c: Likewise.
	* domwalk.c: Likewise.
	* double-int.c: Likewise.
	* double-int.h: Likewise.
	* dse.c: Likewise.
	* dwarf2asm.c: Likewise.
	* dwarf2asm.h: Likewise.
	* dwarf2out.c: Likewise.
	* ebitmap.c: Likewise.
	* ebitmap.h: Likewise.
	* emit-rtl.c: Likewise.
	* et-forest.c: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* final.c: Likewise.
	* flags.h: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* fwprop.c: Likewise.
	* gcc.c: Likewise.
	* gcov-dump.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genattr.c: Likewise.
	* genattrtab.c: Likewise.
	* genautomata.c: Likewise.
	* genchecksum.c: Likewise.
	* genconfig.c: Likewise.
	* genflags.c: Likewise.
	* gengtype-parse.c: Likewise.
	* gengtype.c: Likewise.
	* gengtype.h: Likewise.
	* genmddeps.c: Likewise.
	* genmodes.c: Likewise.
	* genopinit.c: Likewise.
	* genpreds.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* ggc-zone.c: Likewise.
	* ggc.h: Likewise.
	* gimple-iterator.c: Likewise.
	* gimple-low.c: Likewise.
	* gimple-pretty-print.c: Likewise.
	* gimple.c: Likewise.
	* gimple.def: Likewise.
	* gimple.h: Likewise.
	* gimplify.c: Likewise.
	* graphds.c: Likewise.
	* graphite-clast-to-gimple.c: Likewise.
	* gthr-nks.h: Likewise.
	* gthr-posix.c: Likewise.
	* gthr-posix.h: Likewise.
	* gthr-posix95.h: Likewise.
	* gthr-single.h: Likewise.
	* gthr-tpf.h: Likewise.
	* gthr-vxworks.h: Likewise.
	* gthr.h: Likewise.
	* haifa-sched.c: Likewise.
	* hard-reg-set.h: Likewise.
	* hooks.c: Likewise.
	* hooks.h: Likewise.
	* hosthooks.h: Likewise.
	* hwint.h: Likewise.
	* ifcvt.c: Likewise.
	* incpath.c: Likewise.
	* init-regs.c: Likewise.
	* integrate.c: Likewise.
	* ipa-cp.c: Likewise.
	* ipa-inline.c: Likewise.
	* ipa-prop.c: Likewise.
	* ipa-pure-const.c: Likewise.
	* ipa-reference.c: Likewise.
	* ipa-struct-reorg.c: Likewise.
	* ipa-struct-reorg.h: Likewise.
	* ipa-type-escape.c: Likewise.
	* ipa-type-escape.h: Likewise.
	* ipa-utils.c: Likewise.
	* ipa-utils.h: Likewise.
	* ipa.c: Likewise.
	* ira-build.c: Likewise.
	* ira-color.c: Likewise.
	* ira-conflicts.c: Likewise.
	* ira-costs.c: Likewise.
	* ira-emit.c: Likewise.
	* ira-int.h: Likewise.
	* ira-lives.c: Likewise.
	* ira.c: Likewise.
	* jump.c: Likewise.
	* lambda-code.c: Likewise.
	* lambda-mat.c: Likewise.
	* lambda-trans.c: Likewise.
	* lambda.h: Likewise.
	* langhooks.c: Likewise.
	* lcm.c: Likewise.
	* libgcov.c: Likewise.
	* lists.c: Likewise.
	* loop-doloop.c: Likewise.
	* loop-init.c: Likewise.
	* loop-invariant.c: Likewise.
	* loop-iv.c: Likewise.
	* loop-unroll.c: Likewise.
	* lower-subreg.c: Likewise.
	* lto-cgraph.c: Likewise.
	* lto-compress.c: Likewise.
	* lto-opts.c: Likewise.
	* lto-section-in.c: Likewise.
	* lto-section-out.c: Likewise.
	* lto-streamer-in.c: Likewise.
	* lto-streamer-out.c: Likewise.
	* lto-streamer.c: Likewise.
	* lto-streamer.h: Likewise.
	* lto-symtab.c: Likewise.
	* lto-wpa-fixup.c: Likewise.
	* matrix-reorg.c: Likewise.
	* mcf.c: Likewise.
	* mode-switching.c: Likewise.
	* modulo-sched.c: Likewise.
	* omega.c: Likewise.
	* omega.h: Likewise.
	* omp-low.c: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* opts-common.c: Likewise.
	* opts.c: Likewise.
	* params.def: Likewise.
	* params.h: Likewise.
	* passes.c: Likewise.
	* plugin.c: Likewise.
	* postreload-gcse.c: Likewise.
	* postreload.c: Likewise.
	* predict.c: Likewise.
	* predict.def: Likewise.
	* pretty-print.c: Likewise.
	* pretty-print.h: Likewise.
	* print-rtl.c: Likewise.
	* print-tree.c: Likewise.
	* profile.c: Likewise.
	* read-rtl.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* reg-stack.c: Likewise.
	* regcprop.c: Likewise.
	* reginfo.c: Likewise.
	* regmove.c: Likewise.
	* regrename.c: Likewise.
	* regs.h: Likewise.
	* regstat.c: Likewise.
	* reload.c: Likewise.
	* reload1.c: Likewise.
	* resource.c: Likewise.
	* rtl.c: Likewise.
	* rtl.def: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.
	* sbitmap.c: Likewise.
	* sched-deps.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-int.h: Likewise.
	* sched-rgn.c: Likewise.
	* sched-vis.c: Likewise.
	* sdbout.c: Likewise.
	* sel-sched-dump.c: Likewise.
	* sel-sched-dump.h: Likewise.
	* sel-sched-ir.c: Likewise.
	* sel-sched-ir.h: Likewise.
	* sel-sched.c: Likewise.
	* sel-sched.h: Likewise.
	* sese.c: Likewise.
	* sese.h: Likewise.
	* simplify-rtx.c: Likewise.
	* stack-ptr-mod.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* store-motion.c: Likewise.
	* stringpool.c: Likewise.
	* stub-objc.c: Likewise.
	* sync-builtins.def: Likewise.
	* target-def.h: Likewise.
	* target.h: Likewise.
	* targhooks.c: Likewise.
	* targhooks.h: Likewise.
	* timevar.c: Likewise.
	* tlink.c: Likewise.
	* toplev.c: Likewise.
	* toplev.h: Likewise.
	* tracer.c: Likewise.
	* tree-affine.c: Likewise.
	* tree-affine.h: Likewise.
	* tree-browser.def: Likewise.
	* tree-call-cdce.c: Likewise.
	* tree-cfg.c: Likewise.
	* tree-cfgcleanup.c: Likewise.
	* tree-chrec.c: Likewise.
	* tree-chrec.h: Likewise.
	* tree-complex.c: Likewise.
	* tree-data-ref.c: Likewise.
	* tree-data-ref.h: Likewise.
	* tree-dfa.c: Likewise.
	* tree-dump.c: Likewise.
	* tree-dump.h: Likewise.
	* tree-eh.c: Likewise.
	* tree-flow-inline.h: Likewise.
	* tree-flow.h: Likewise.
	* tree-if-conv.c: Likewise.
	* tree-inline.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-loop-distribution.c: Likewise.
	* tree-loop-linear.c: Likewise.
	* tree-mudflap.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-nomudflap.c: Likewise.
	* tree-nrv.c: Likewise.
	* tree-object-size.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-outof-ssa.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-pass.h: Likewise.
	* tree-phinodes.c: Likewise.
	* tree-predcom.c: Likewise.
	* tree-pretty-print.c: Likewise.
	* tree-profile.c: Likewise.
	* tree-scalar-evolution.c: Likewise.
	* tree-ssa-address.c: Likewise.
	* tree-ssa-alias.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-coalesce.c: Likewise.
	* tree-ssa-copy.c: Likewise.
	* tree-ssa-copyrename.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* tree-ssa-forwprop.c: Likewise.
	* tree-ssa-ifcombine.c: Likewise.
	* tree-ssa-live.c: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-ssa-loop-ch.c: Likewise.
	* tree-ssa-loop-im.c: Likewise.
	* tree-ssa-loop-ivcanon.c: Likewise.
	* tree-ssa-loop-ivopts.c: Likewise.
	* tree-ssa-loop-manip.c: Likewise.
	* tree-ssa-loop-niter.c: Likewise.
	* tree-ssa-loop-prefetch.c: Likewise.
	* tree-ssa-loop-unswitch.c: Likewise.
	* tree-ssa-loop.c: Likewise.
	* tree-ssa-math-opts.c: Likewise.
	* tree-ssa-operands.c: Likewise.
	* tree-ssa-operands.h: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-ssa-propagate.c: Likewise.
	* tree-ssa-reassoc.c: Likewise.
	* tree-ssa-sccvn.c: Likewise.
	* tree-ssa-sink.c: Likewise.
	* tree-ssa-structalias.c: Likewise.
	* tree-ssa-ter.c: Likewise.
	* tree-ssa-threadedge.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa-uncprop.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-ssanames.c: Likewise.
	* tree-switch-conversion.c: Likewise.
	* tree-tailcall.c: Likewise.
	* tree-vect-data-refs.c: Likewise.
	* tree-vect-generic.c: Likewise.
	* tree-vect-loop-manip.c: Likewise.
	* tree-vect-loop.c: Likewise.
	* tree-vect-patterns.c: Likewise.
	* tree-vect-slp.c: Likewise.
	* tree-vect-stmts.c: Likewise.
	* tree-vectorizer.c: Likewise.
	* tree-vectorizer.h: Likewise.
	* tree-vrp.c: Likewise.
	* tree.c: Likewise.
	* tree.def: Likewise.
	* tree.h: Likewise.
	* treestruct.def: Likewise.
	* unwind-compat.c: Likewise.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-dw2.c: Likewise.
	* value-prof.c: Likewise.
	* value-prof.h: Likewise.
	* var-tracking.c: Likewise.
	* varasm.c: Likewise.
	* varpool.c: Likewise.
	* vec.c: Likewise.
	* vec.h: Likewise.
	* vmsdbgout.c: Likewise.
	* web.c: Likewise.
	* xcoffout.c: Likewise.

2009-11-24  John David Anglin  <>

	* pa.c (output_call): Only use sr4 for long interspace calls if
	call binds local and generating non PIC code.
	(attr_length_call): Adjust length calculation for above.

2009-11-25  Uros Bizjak  <>

	* config/i386/ (plusminus_carry_mnemonic): New code attribute.
	(add<mode>3_carry): Change operand order of plus RTX.
	(*add<mode>3_carry): Ditto.
	(*addsi3_carry_zext): Ditto.
	(*add<dwi>3_doubleword): Update for changed operand order.
	(*negti2_1 splitter): Ditto.
	(*negdi2_1 splitter): Ditto.
	(<plusminus_insn><mode>3_carry): Macroize expander from
	{add,sub}<mode>3_carry patterns using plusminus code iterator.
	(*<plusminus_insn><mode>3_carry): Macroize insn from
	*{add,sub}<mode>3_carry patetrns using plusminus code iterator.
	(neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
	patterns using SDWIM mode iterator.
	(*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
	pattern from *neg{di,ti}2_1 patterns and corresponding splitters
	using DWIH mode iterator.
	(*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
	using SWI mode iterator.
	(*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
	(one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
	patterns using SWIM mode iterator.
	(*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
	patterns using SWI248 mode iterator.
	(*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
	patterns using SWI mode iterator.
	(*one_cmpl<mode>2_2 splitter): Macroize splitter from
	one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.

2009-11-24  Michael Matz  <>

	* expr.c (set_storage_via_libcall): Fix build_call_expr call.

2009-11-24  David Binderman  <>

	* expr.c (store_field): Remove set but not used local variable
	(expand_expr_real_2): Remove treeop2.
	* gcse.c (update_ld_motion_stores): Remove new_rtx.
	* haifa-sched.c (max_issue): Remove points.
	(sched_create_recovery_edges): Remove e.
	* ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.

2009-11-24  Nick Clifton  <>

	* config/v850/v850.c (function_arg): Fix handling of zero-length
	function arguments.

2009-11-24  Michael Matz  <>

	* tree.h (union tree_ann_d): Don't declare.
	(tree_base): Remove ann field.
	(struct var_ann_d): Declare forward.
	(tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
	(DECL_VAR_ANN_PTR): New macro.
	* tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
	accept only VAR, PARM or RESULT decls.
	(create_tree_common_ann): Remove.
	(remove_referenced_var): Use DECL_VAR_ANN_PTR.
	* tree-eh.c (lookup_expr_eh_lp): Remove.
	* tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
	(ann_type, tree_common_ann, get_tree_common_ann): Remove.
	* tree-flow.h (enum tree_ann_type): Remove.
	(struct tree_ann_common_d): Remove.
	(struct var_ann_d): Remove common field.
	(union tree_ann_d): Remove.
	(tree_ann_t, tree_ann_common_t): Remove typedefs.
	(tree_common_ann, get_tree_common_ann, ann_type,
	create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
	* tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
	* tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
	* builtins.c (expand_builtin_memcpy): Use
	currently_expanding_gimple_stmt instead of tree annotation.
	(expand_builtin_memset_args): Ditto.
	* cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
	(expand_call_stmt): Don't set tree annotation.
	(expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
	* expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
	* gimple.h (currently_expanding_gimple_stmt): Declare.

2009-11-24  Paolo Carlini  <>

	* dwarf2out.c (add_location_or_const_value_attribute): Remove
	* cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.

2009-11-24  Rafael Avila de Espindola  <>

	* lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
	being called recursively.

2009-11-24  Basile Starynkevitch  <>

	* (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
	$(MD5_H) params.def params.h prefix.h tree-inline.h.

2009-11-24  Paul Brook  <>

	* gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment

2009-11-24  Julian Brown  <>
	    Paul Brook  <>

	* config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
	(arm_dwarf_register_span): New function.
	(arm_dbx_register_number): Add VFPv3 dwarf numbering.

2009-11-24  David Binderman  <>

	* cfgrtl.c (commit_one_edge_insertion): Remove set but not used
	local variable bb_note.
	* dominance.c (get_dominated_by): Likewise local var n.
	(output_file_names): Likewise local var idx.
	(add_location_or_const_value_attribute): Likewise local var status.
	* dwarf2out.c (gen_variable_die): Likewise local var field.
	* emit-rtl.c (no_line_numbers): Remove.
	(init_emit_once): Remove line_numbers parameter.
	* rtl.h (init_emit_once): Adjust prototype.
	* toplev.c (backend_init): Adjust init_emit_once call.

2009-11-24  Richard Guenther  <>

	PR tree-optimization/42142
	* tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
	Handle iv-dependent (non-)kills properly.
	(mark_aliased_reaching_defs_necessary): Pass the basic-block
	of the reference statement to mark_aliased_reaching_defs_necessary_1.

2009-11-24  Martin Jambor  <>

	PR tree-optimization/42154
	* tree-sra.c (struct access): Added comments.
	(sra_modify_expr): Build references to the old aggregate with
	build_ref_for_offset instead of reusing access->expr.
	(load_assign_lhs_subreplacements): Likewise.

2009-11-24  Uros Bizjak  <>

	* config/i386/ (add<mode>3_carry): Change insn pattern
	to expander.
	(sub<mode>3_carry): Ditto.
	(x86_mov<mode>cc_0_m1): Ditto.
	(*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
	for ix86_carry_flag_operator operator predicate.
	(*sub<mode>3_carry): Ditto.
	(*x86_mov<mode>cc_0_m1): Ditto.
	(*addsi3_carry_zext): Use VOIDmode match_operator for
	ix86_carry_flag_operator operator predicate.
	(*subsi3_carry_zext): Ditto.
	(*x86_mov<mode>cc_0_m1_s): Ditto.
	(*x86_mov<mode>cc_0_m1_neg): Ditto.
	* config/i386/ (ix86_carry_flag_operator): Do not
	check operator sub-expressions for FLAGS_REG and const0_rtx.
	* config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
	(ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
	(ix86_expand_int_addcc): Update calls to
	gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
	(ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
	Do not set mode of compare operation.

2009-11-23  Jan Hubicka  <>

	PR middle-end/42151
	* ipa-inline.c (inline_transform): Avoid ICE when transform is called

2009-11-23  Jan Hubicka  <>

	* ipa-cp.c (ipcp_compute_node_scale): Work around completely
	wrong profile updates.
	* predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
	having largest frequency.
	* ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
	used uninitalized warning.
	* tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block

2009-11-23  Uros Bizjak  <>

	* config/alpha/ (*cmp_sadd_sidi): Use gen_lowpart instead
	of gen_rtx_REG to generate operand 5.
	(*cmp_ssub_sidi): Ditto.

2009-11-23  Richard Henderson  <>

	* config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare

2009-11-23  Paul Brook  <>

	* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
	case for noreturn functions.
	(arm_compute_save_reg_mask): Remove special noreturn handling.

2009-11-23  Richard Guenther  <>

	* tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
	size for DECL bases.

2009-11-22  Richard Henderson  <>

	* i386.c (avx_vpermilp_parallel): New function.
	* i386-protos.h: Declare it.
	* (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
	avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
	* (AVXMODEFDP, AVXMODEFSP): New iterators.
	(ssescalarnum, ssedoublesizemode): Add AVX modes.
	(vpermilbits): Remove.
	(avx_vpermil<mode>): Change insns to expanders.
	(*avx_vpermil<mode>): New.  Use vec_select.

2009-11-22  Richard Earnshaw  <>

	* opts.c (decode_options): Don't enable flag_schedule_insns
	when optimizing for size.
	* doc/invoke.texi: Document change.

2009-11-22  Uros Bizjak  <>

	PR target/42113
	* config/alpha/ (*cmp_sadd_si): Change mode
	of scratch register to SImode.
	(*cmp_sadd_sidi): Ditto.
	(*cmp_ssub_si): Ditto.
	(*cmp_ssub_sidi): Ditto.

2009-11-21  Ian Lance Taylor  <>

	* (HOST_LIBS): Move higher in file.
	is not empty, set to $(CC) and $(CFLAGS).

2009-11-22  Martin Jambor  <>

	* tree-cfg.c (verify_types_in_gimple_reference): Error out on
	V_C_E of an SSA_NAME or an invariant if lvalue is required.
	(verify_gimple_call): Verify LHS also with with

2009-11-21  Martin Jambor  <>

	PR middle-end/42025
	* tree-sra.c (access_precludes_ipa_sra_p): New function.
	(splice_param_accesses): Check all accesses by calling
	(sra_ipa_modify_expr): Rename argument erite to dont_convert and do
	not convert types if it is true.
	(sra_ipa_modify_assign): Convert types in case of mismatch.

2009-11-21  Kaushik Phatak  <>

	* config/sh/ (cmpeqsi_t-1): Use logical_operand predicate
	for operand 1.

2009-11-21  Adam Nemet  <>

	* config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
	(mips_mulsidi3_gen_fn): Declare new function.
	* config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
	* config/mips/ (<u>mulsidi3): Change condition to use
	mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
	(<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
	(mulsidi3_64bit_dmul): New define_insn.

2009-11-21  Ben Elliston  <>

	* gengtype-lex.l: Enable noinput flex option.
	(YY_NO_INPUT): Remove define.

2009-11-21  Alexandre Oliva  <>

	* tree-ssa.c (find_released_ssa_name): Handle NULL wi.
	(insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
	(insert_debug_temps_for_defs): Handle PHI nodes.
	* tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
	SSA names.

2009-11-21  Alexandre Oliva  <>

	* tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
	after remove_phi_node.

2009-11-21  Alexandre Oliva  <>

	PR tree-optimization/42078
	* gimple.h (gimple_replace_lhs): New declaration.
	* gimple.c (gimple_replace_lhs): New function.
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
	modifying the call.

2009-11-20  Sebastian Pop  <>

	* config/i386/ (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
	(xop_mulv2div2di3_low): Same.
	(*xop_pmacsdqh_mem): Same.

2009-11-20  Richard Henderson  <>

	* config/i386/i386-builtin-types.awk: New file.
	* config/i386/i386-builtin-types.def: New file.
	* config/i386/t-i386: Use them to build
	* config/i386/i386.c: Include it.
	(ix86_builtin_type_tab, ix86_get_builtin_type): New.
	(ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
	(struct builtin_isa): Remove GTY marker.  Replace tree type with
	ix86_builtin_func_type; add set_and_not_built_p.
	(def_builtin): Change type parameter to tcode; use
	ix86_get_builtin_func_type; update all callers.  Accept zero mask
	to mean the builtin is unconditionally available.
	(ix86_add_new_builtins): Use set_and_not_built_p instead of type
	being set to NULL.
	(enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
	Update some users to rationalized enumeration codes from new include.
	(enum multi_arg_type): Remove.  Replace all enumeration values
	with defines to new ix86_builtin_func_type.
	(ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
	all type resolution to def_builtin.
	(ix86_init_builtin_types): Split out from ...
	(ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.

2009-11-20  Michael Meissner  <>

	PR target/41787
	* config/rs6000/rs6000.c (struct machine_function): Revert
	2009-10-23 change to set VRSAVE to non-0 if we use VSX.
	(rs6000_expand_to_rtl_hook): Ditto.
	(rs6000_check_vector_mode): Ditto.
	(compute_vrsave_mask): Ditto.

2009-11-20  Paul Brook  <>

	* doc/invoke.texi: Document ARM -mcpu=cortex-a5.
	* config/arm/arm-cores.def: Add cortex-a5.
	* config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
	* config/arm/ Regenerate.

2009-11-20 Olga Golovanevsky <>

	PR middle-end/39960
	* ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
	(ref_pos): New field in structure.
	(insert_new_var_in_stmt): New function.

2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
	* config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
	INT_LEAST64_TYPE): Define.
	UINT_LEAST64_TYPE): Define.
	INT_FAST64_TYPE): Define.
	UINT_FAST64_TYPE): Define.

2009-11-20  Julian Brown  <>

	* config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
	specially for Thumb-1.
	(ASM_OUTPUT_REG_POP): Likewise.

2009-11-19  Jason Merrill  <>

	* dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.

2009-11-19  Basile Starynkevitch  <>
	    Rafael Avila de Espindola  <>

	* doc/plugins.texi (Plugin initialization): Added advices for
	retrieving the version of GCC at plugin compilation and loading times.

2009-11-19  Basile Starynkevitch  <>

	* plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
	(dump_active_plugins): output to file everything. Use
	internationalized dump & FMT_FOR_PLUGIN_EVENT.

2009-11-19  Richard Guenther  <>

	* gimple.c (canonicalize_cond_expr_cond): Strip conversions
	around truth-valued expressions.
	* tree.c (free_lang_data): Untangle check for LTO frontend.

2009-11-19  Jakub Jelinek  <>

	* tree.c (need_assembler_name_p): Use cgraph_get_node instead
	of cgraph_node_for_decl.
	* cgraph.h (cgraph_node_for_decl): Remove prototype.
	* cgraph.c (cgraph_node_for_decl): Remove.
	(cgraph_get_node): Just return NULL if !cgraph_hash.

2009-11-19  Paul Brook  <>

	* config.gcc: Add new ARM --with-fpu options.
	* doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
	* config/arm/arm.c (all_fpus): Add fpv4-sp-d16.

2009-11-18  Richard Guenther  <>

	* gimple.h (union gimple_statement_d): Add gsmembase member.
	(gimple_vuse_op): Use gsmembase for access.
	(gimple_vdef_op): Likewise.
	(gimple_vuse): Likewise.
	(gimple_vdef): Likewise.
	(gimple_vuse_ptr): Likewise.
	(gimple_vdef_ptr): Likewise.
	(gimple_set_vuse): Likewise.
	(gimple_set_vdef): Likewise.
	* gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.

2009-11-18  Daniel Jacobowitz  <>

	* doc/arm-neon-intrinsics.texi: Regenerated.

2009-11-18  Daniel Jacobowitz  <>

	* config/arm/ (analyze_shape_elt): Handle alternatives.

2009-11-18  Paul Brook  <>
	    Daniel Jacobowitz  <>

	* config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
	(arm_arch7em): New variable.
	(all_architectures): Add armv7e-m.
	(arm_override_options): Set arm_arch7em.
	Include arm_arch7em.
	(arm_arch7em): Declare.

2009-11-18  Richard Guenther  <>

	* lto-streamer-in.c (input_gimple_stmt): Assert that we find
	a valid field decl if checking is enabled.

2009-11-18  Martin Jambor  <>

	* ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
	(lto_ipa_fixup_call_notes): Declare.
	* ipa-prop.c (ipa_note_param_call): Store gimple uid.
	(update_call_notes_after_inlining): Copy call stmt uid to the new
	(ipa_write_param_call_note): New function.
	(ipa_read_param_call_note): New function
	(ipa_write_node_info): Write also param call notes.  Removed a bogus
	comment, reformatted to fit 80 columns.
	(ipa_read_node_info): Read also param call notes. Removed a bogus
	comment.  Remove ipa_edge_args_vector growth.
	(lto_ipa_fixup_call_notes): New function.
	* ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
	* ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
	inlining regardless of flag_wpa.
	(cgraph_decide_inlining_of_small_functions): Likewise.
	(cgraph_decide_inlining): Likewise.
	(inline_read_summary): Likewise.

2009-11-18  Jan Hubicka  <>

	* predict.c (compute_function_frequency): Export.
	* predict.h (compute_function_frequency): Declare.
	* tree-optimize.c (execute_fixup_cfg): Rescale frequencies.

2009-11-18  Martin Jambor  <>

	* passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
	on all nodes we write summaries for.

2009-11-18  Shujing Zhao  <>

	PR middle-end/22201
	(PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
	description string.

2009-11-18  Jakub Jelinek  <>

	* dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
	(rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.

	PR c++/3187
	* cgraph.h (struct cgraph_node): Add same_body and same_body_alias
	(cgraph_same_body_alias, cgraph_remove_same_body_alias): New
	* cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
	cgraph_materialize_all_clones): Handle same_body aliases.
	* cgraph.c (cgraph_allocate_node): New function.
	(cgraph_create_node): Use it.
	(cgraph_node_for_decl, cgraph_node, cgraph_get_node,
	cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
	(cgraph_same_body_alias, cgraph_remove_same_body_alias): New
	* lto-cgraph.c (lto_output_node): Stream out same_body aliases.
	(input_node): Stream in same_body aliases.
	* lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
	for same_body aliases.
	(lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.

2009-11-18  Iain Sandoe <>

	PR other/39888
	* config/darwin.h: Use the extension stub libraries to access
	current libgcc_s features.

2009-11-18  Alexandre Oliva  <>

	PR debug/41926
	* tree-vect-loop.c (vect_loop_kill_debug_uses): New.
	(vect_transform_loop): Call it.

2009-11-18  Alexandre Oliva  <>

	* tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
	released SSA names.

2009-11-18  Alexandre Oliva  <>

	PR debug/41888
	PR debug/41886
	* graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
	are ok.
	* graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
	(try_generate_gimple_bb): Skip debug stmts when finding data refs.
	* sese.c (sese_build_liveouts_bb): Skip debug stmts.
	(sese_bad_liveouts_use): New.
	(sese_reset_debug_liveouts_bb): New.
	(sese_build_liveouts): Use it.
	(rename_variables_in_stmt): Reset debug stmts rather than creating
	new vars for them.
	(expand_scalar_variable_stmt): Likewise.

2009-11-18  Alexandre Oliva  <>

	* df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
	(df_ref_remove): Likewise.

2009-11-17  Jan Hubicka  <>

	* ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile

2009-11-17  Eric Botcazou  <>

	* toplev.c (process_options): Remove dead code.
	* doc/invoke.texi (-frename-registers): Mention -fpeel-loops.

2009-11-17  Rafael Avila de Espindola  <>

	* lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the

2009-11-17  Ulrich Weigand  <>

	PR tree-optimization/41857
	* tree-ssa-address.c (move_hint_to_base): Use void pointer to
	TYPE's address space instead of pointer to TYPE.

2009-11-17  Ulrich Weigand  <>

	* reload.c (find_reloads_address): Fix typo.

2009-11-17  Ulrich Weigand  <>

	* config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
	registers in leaf functions if possible.

2009-11-17  Maxim Kuvyrkov  <>

	* config/m68k/m68k-devices.def: Add MCF5441x family.

2009-11-17  Jan Hubicka  <>

	* cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
	removed node.
	* cgraphunit.c (verify_cgraph_node): Verify frequencies for match.

2009-11-17  Uros Bizjak  <>

	* config/i386/ (x86_64_szext_general_operand): Do not
	nest ior expressions.
	(x86_64_szext_nonmemory_operand): Ditto.
	(call_insn_operand): Ditto.

2009-11-16  Alexandre Oliva  <>

	* stmt.c (expand_asm_stmt): Get locus from stmt.

2009-11-16  Alexandre Oliva  <>

	* tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
	Create the decl label for the new dest block on demand.  Require
	a fallthrough edge if no asm labels were redirected.

2009-11-16  Uros Bizjak  <>

	* config/i386/ (cbranchsi4): Use nonimmediate_operand for
	operand 1 predicate.
	(cstoresi4): Ditto for operand 2.
	(cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
	patterns using SDWIM mode iterator.
	(cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
	using SWIM mode iterator.
	(cmpdi_1): Rename from cmpdi_1_rex64.
	(cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
	SWI48 mode iterator.
	(*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
	using SWI mode iterator.
	(*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
	(*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
	(*cmpqi_ext_3_insn): Make private.
	(*cmpqi_ext_3_insn_rex64): Make private.
	(cmpstrnsi): Update for renamed cmpdi_1_rex64.
	* config/i386/ (cmpsi_operand): Remove.

2009-11-16  Paul Brook  <>

	* doc/invoke.texi: Document ARM VFPv4 based FPUs.
	* config/arm/arm.c (all_fpus): Add VFPv4 entries.

2009-11-14  Jan Hubicka  <>

	* cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
	* cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
	zero out all callees.
	* cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
	frequency and count match.
	* ipa-inline.c (update_noncloned_frequencies): New function.
	(cgraph_clone_inlined_nodes): Use it.
	* tree-inline.c (copy_bb): Fix frequency scaling; output
	diagnostic on frequency mismatches to dump file.
	(initialize_cfun): Do not scale frequency; fix count scaling;
	initialize entry and exit block frequencies; copy profile info.
	(copy_cfg_body): Use frequency_scale as argument; fix count scaling.
	(copy_body): Use frequency_scale as argument.
	(expand_call_inline): Compute frequency scale and output diagnostic
	to dump file.
	(delete_unreachable_blocks_update_callgrah): Remove checking that
	has to be done after edge redirection.
	(tree_function_versioning): Update initialize_cfun and copy_body call.

2009-11-14  Jan Hubicka  <>

	* cgraph.c (cgraph_release_function_body): Update use of
	(cgraph_remove_node): Remove ipa_transforms_to_apply.
	* cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
	* cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
	copied body.
	(cgraph_materialize_clone): Remove original if dead.
	* lto-streamer-in.c (lto_read_body): Remove FIXME and
	ipa_transforms_to_apply hack.
	* function.h (struct function): Add ipa_transforms_to_apply.
	* ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
	* tree-inline.c (copy_bb): Update sanity check.
	(initialize_cfun): Do not copy ipa_transforms_to_apply.
	(expand_call_inline): remove dead clone originals.
	(tree_function_versioning): Merge transformation queues.
	* passes.c (add_ipa_transform_pass): Remove.
	(execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
	(execute_all_ipa_transforms): Update.
	(execute_one_pass): Update.

2009-11-14  Andy Hutchinson  <>

	PR target/21078, 21080
	* config/avr/avr.c (avr_return_addr_rtx): New function for
	(expand_prologue): Calculate stack usage.
	(avr_asm_function_end_prologue): Output stack size and offset label.
	* config/avr/avr.h (RETURN_ADDR_RTX): Replace.
	(machine_function): Add stack_usage.
	* config/avr/avr-protos.h (avr_return_addr_rtx): New function.

2009-11-14  Anatoly Sokolov  <>

	* config/iq2000/iq2000.c (iq2000_function_value): Make static, add
	new 'outgoing' argument.
	(iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
	* config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
	* config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):

2009-11-14  Richard Earnshaw  <>

	PR target/42031
	* (adddi_sesidi_di): Place tied contraint first.
	(adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
	(subdi_zesidi_di, subdi_sesidi_di): Likewise.
	(mulsi3_compare0, mulsi_compare0_scratch): Likewise.
	(mulsi3addsi, mulsi3addsi_compare0): Likewise.
	(mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
	(umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
	(anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
	(andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
	(arm_lshrdi3_1bit, one_cmpldi2): Likewise.

2009-11-14  Uros Bizjak  <>

	* config/i386/ (call_register_no_elim_operand):
	New predicate.  Reject stack register as valid call operand
	for 32bit targets.
	(call_insn_operand): Use call_register_no_elim_operand.

2009-11-13  Richard Henderson  <>

	* function.c (stack_protect_prologue): Don't bypass expand_expr
	for stack_protect_guard and guard_decl.
	(stack_protect_epilogue): Likewise.

2009-11-13  Jan Hubicka  <>

	* ipa.c (function_and_variable_visibility): Clear COMDAT on functions
	when to PUBLIC is set.

2009-11-13  Jakub Jelinek  <>

	PR middle-end/42029
	* gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
	tmp_load if needed.

2009-11-13  Uros Bizjak  <>

	PR target/41900
	* config/i386/ (*call_pop_1, *call_1, *call_value_pop_1,
	*call_value_1): Use "lsm" as operand 1 constraint.
	* config/i386/ (call_insn_operand): Depend on
	index_register_operand to avoid %esp register.

2009-11-13  Uros Bizjak  <>

	2009-11-03  Uros Bizjak  <>

	PR target/41900
	* config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
	(TARGET_CALL_ESP): New define.
	* config/i386/i386.c (initial_ix86_tune_features): Initialize
	* config/i386/ (*call_pop_1_esp, *call_1_esp,
	*call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
	*call_1, *call_value_pop_1 and *call_value_1.  Depend on
	(*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
	New patterns, use "lsm" as operand 1 constraint.
	* config/i386/ (call_insn_operand): Depend on
	index_register_operand for !TARGET_CALL_ESP to avoid %esp register.

2009-11-13  Jason Merrill  <>

	PR debug/26965
	* dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
	Don't emit a second declaration at any scope.

2009-11-13  Andrey Belevantsev  <>

	PR rtl-optimization/41697
	* sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
	a conditional jump has a single successor.

2009-11-13  Andrey Belevantsev  <>

	* sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
	allocate reg_last when in case lazy_reg_last is true.
	(init_deps_reg_last): New.
	(free_deps): When max_reg is 0, this context is already freed.
	* sched-int.h (init_deps_reg_last): Export.
	(init_deps): Update prototype.
	* sched-ebb.c (schedule_ebb): Update the call to init_deps.
	* sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
	* ddg.c (build_intra_loop_deps): Likewise.
	* sel-sched-ir.c (copy_deps_context, create_deps_context,
	reset_deps_context, deps_init_id): Likewise.
	(init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
	(free_data_for_scheduled_insn): New, break down from ...
	(free_first_time_insn_data): ... here.
	(has_dependence_p): Allocate reg_last now, when it is needed.
	(extend_insn_data): When maximal LUID is big enough, allocate
	per-insn data in smaller chunks.
	* sel-sched-ir.h (free_data_for_scheduled_insn): Export.
	* sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
	in scheduled insn.

2009-11-13  Uros Bizjak  <>

	* config/i386/ (call_value): Fix comment.
	(sibcall_value): Ditto.

2009-11-13  Eric Botcazou  <>

	* config/i386/linux-unwind.h (x86_frob_update_context): New function.

2009-11-12  Eric Botcazou  <>
	    Laurent GUERBY  <>

	* config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
	Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
	(sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.

2009-11-12  Jan Hubicka  <>

	* ipa.c (function_and_variable_visibility): Fix my accidentail commit
	and clear DECL_COMMON on localized declarations.

2009-11-12  Bernd Schmidt  <>

	PR rtl-opt/38582
	* regrename.c (struct du_head): New structure; some elements moved
	(struct du_chain): ... this one.
	(open_chains, closed_chains): Now of type struct du_head *.
	(do_replace): Accept du_head argument, not du_chain.  All callers
	changed.  Modified code to match new data structures.
	(build_def_use): Return a list of du_head structures.  Modified code
	to match new data structures.
	(dump_def_use_chain): Accept du_head argument, not du_chain.  All
	callers changed.  Modified code to match new data structures.
	(merge_overlapping_regs): Accept du_head argument, not du_chain.  All
	callers changed.  Modified code to match new data structures.
	(scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
	Allocate a du_head structure as well as a du_chain when creating a
	new chain.  Modified other code to match new data structures.

2009-11-12  Jan Hubicka  <>

	* cgraph.h (varpool_node_name): Declare.
	* cgraphunit.c (process_function_and_variable_attributes): Set
	force_output flag on used variables.
	* ipa.c (function_and_variable_visibility): Dump externally visible
	and needed variables.
	* varpool.c (varpool_node_name): Export.
	(decide_is_variable_needed): Check COMDAT for externally visible vars;
	ignore needed flag.

2009-11-12  Uros Bizjak  <>

	PR middle-end/41930
	* simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
	processing if XEXP (x, i) is NULL.

2009-11-12  Jan Hubicka  <>

	* ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON

2009-11-11  Andy Hutchinson  <>

	PR middle-end/41440
	* cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
	single successor block, ending with jump created by RTL expander.

2009-11-11  Jan Hubicka  <>

	PR middle-end/41729
	* ipa.c (function_and_variable_visibility): Do not privatize COMDAT
	and WEAK variables at -fwhole-program.

	PR middle-end/41735
	* ipa.c (whole_program_function_and_variable_visility): COMDAT
	functions/variables are not needed even if they are externally visible.

2009-11-11  Jan Hubicka  <>

	(patch by Richard Guenther)
	* lto-streamer-out.c (output_function): Output head of argument list
	* lto-streamer-in.c (input_function): Re-map arguments into merged

2009-11-11  Jan Hubicka  <>

	* lto-cgraph.c: Include gcov-io.h
	(output_profile_summary): New function.
	(output_cgraph): Use it.
	(input_profile_summary): New function.
	(input_cgraph): Use it.
	* coverage.c (build_ctr_info_value): Use varpool; initalize
	(create_coverage): Likewise.
	* tree-profile.c (tree_init_ic_make_global_vars): Likewise.
	(tree_init_edge_profiler): Likewise.
	* (lto-cgraph.o): Add dependency on gcov-io.h.

2009-11-11  Kai Tietz  <>

	* config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
	* c-pragma.c (def_pragma_macro_value): Likewise.
	(def_pragma_macro): Likewise.
	(pushed_macro_table): Likewise.
	(HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
	* doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.

2009-11-11  Basile Starynkevitch  <>

	* doc/plugins.texi (Registering custom attributes): section
	renamed as (Registering custom attributes or pragmas).
	Mentions custom attributes & pragmas, and c_register_pragma, with
	a small example.
	* doc/cpp.texi (Pragmas): Mentions that plugins can provide their
	* doc/extend.texi (Function Attributes): Mentions that plugin can
	provide their attributes.

2009-11-11  Jon Beniston  <>

	* config.gcc: Add lm32 elf and uclinux targets.
	* config/lm32: New directory.
	* config/lm32/lm32.c: New file.
	* config/lm32/lm32.h: New file.
	* config/lm32/ New file.
	* config/lm32/lm32.opt: New file.
	* config/lm32/lm32-protos.h: New file.
	* config/lm32/ New file.
	* config/lm32/ New file.
	* config/lm32/sfp-machine.h: New file.
	* config/lm32/t-fprules-softfp: New file.
	* config/lm32/uclinux-elf.h: New file.
	* doc/invoke.texi: Document lm32 options.
	* doc/contrib.texi: Document lm32 porter.
	* doc/install.texi: Document lm32 targets.

2009-11-11  Martin Jambor  <>

	PR lto/41932
	* ipa-prop.c (ipa_update_after_lto_read): Call
	ipa_check_create_node_params and ipa_check_create_edge_args.  Also
	call ipa_initialize_node_params instead of ipa_populate_param_decls.

2009-11-11  Daniel Jacobowitz  <>

	* config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
	(neon_expand_vector_init): Use them.  Also handle non-constant
	vectors with identical elements and vectors with only one
	non-constant element.
	(arm_print_operand): Handle 'y' modifier.
	* config/arm/arm-protos.h (neon_make_constant): Declare.
	* config/arm/ (neon_vdup_n<mode>): Split into two
	patterns.  Use VX instead of VDQW for the first one.  Allow
	a VFP alternative and V32 modes for the second one.
	* config/arm/ (shape_elt): Add Alternatives.
	(ops): Use Alternatives for vdup lane instructions.
	* config/arm/ (analyze_shape): Handle Alternatives.
	* config/arm/ (mov<mode>): Use neon_make_constant.

2009-11-11  Daniel Jacobowitz  <>

	* config/arm/ (*neon_mov<mode>): Reject two non-register
	(movti, mov<mode>): Call force_reg on one operand if required.
	* config/arm/ (mov<mode>): Likewise.

2009-11-11  Daniel Jacobowitz  <>

	* config/arm/arm.c (arm_override_options): Enable scheduling for

2009-11-10  Eric Botcazou  <>

	PR target/10127
	PR ada/20548
	* expr.h (anti_adjust_stack_and_probe): Declare.
	* explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
	parameter and rewrite head comment.
	(allocate_dynamic_stack_space): Adjust call to above function.
	* function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.

	* tree.h (dwarf2out_args_size): Delete.
	* dwarf2out.c (dwarf2out_args_size): Make static and move around.
	(dwarf2out_args_size_adjust): Delete prototype and move around.
	(dwarf2out_frame_debug_expr): Do not record arg size adjustments for

2009-11-10  Eric Botcazou  <>

	* config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
	DECL_SIZE of DECL_RESULT before evaluating it.

2009-11-10  Kaveh R. Ghazi  <>

	PR tree-optimization/41987
	* fold-const.c (const_binop): Avoid using fold_buildN().

2009-11-10  Martin Jambor  <>

	* tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
	(execute_all_ipa_stmt_fixups): Declare.
	* ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
	* ipa-inline.c (pass_ipa_inline): Likewise.
	* ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
	* ipa-reference.c (pass_ipa_reference): Likewise.
	* ipa.c (pass_ipa_whole_program_visibility): Likewise.
	* lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
	(pass_ipa_lto_finish_out): Likewise.
	* lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
	* passes.c (execute_ipa_stmt_fixups): New function.
	(execute_all_ipa_stmt_fixups): New function.
	* lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.

2009-11-10  Eric Botcazou  <>

	PR ada/20548
	* explow.c (probe_stack_range): Fix typo.
	* config/sparc/ (probe_stack): New expander.

2009-11-09  Dave Korn  <>

	* config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.

2009-11-09  Jason Merrill  <>

	* (pgq): New function for printing gimple sequence.

2009-11-09  Paul Brook  <>
	    Daniel Jacobowitz  <>
	    Sandra Loosemore  <>

	* doc/extend.texi (Half-Precision): Update wording to reflect
	that there are now multiple -mfpu options that enable fp16
	hardware support.
	* doc/invoke.texi: Update list of ARM -mfpu= options.
	* config.gcc: Update ARM --with-fpu option list.
	* config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
	vfpv3xd and vfpv3xd-fp16.
	(use_vfp_abi): New function.
	(aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
	when undesirable.
	(aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
	aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
	(arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
	arm_9e_rtx_costs): Only expect double-precision operations if the FPU
	provides them.
	(coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
	(arm_print_operand): Handle 'p' modifier.
	(arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
	* config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
	(TARGET_FP16): Define.
	* config/arm/ Disable double-precision patterns if the FPU
	does not provide them.
	(arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
	double-precision values on a single-precision FPU.
	(movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
	double-precision constants.
	(movhf_vfp_neon): New pattern (was movhf_vfp).
	(movhf_vfp): Remove NEON instructions.
	* config/arm/ Add new "Dy" constraint for
	double-precision constants.  Update description of "Dv".
	* config/arm/ Disable double-precision patterns if the FPU
	does not provide them

2009-11-09  Jakub Jelinek  <>

	* config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
	(print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage

2009-11-08  H.J. Lu  <>

	* collect2.c (main): Search PLUGIN_LD for plugin linker.

	* (--with-plugin-ld): New.  Default to ld.
	* configure: Regenerated.
	* Likewise.

	(collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.

2009-11-08  Jonathan Gray  <>

	* config/openbsd-stdint.h: Change to reflect what
	c_common_nodes_and_builtins expects.

2009-11-08  Paolo Carlini  <>

	* builtins.c (apply_args_reg_offset): Remove commented out delaration.

2009-11-08  Jakub Jelinek  <>

	PR target/41985
	* config/i386/i386.c (get_some_local_dynamic_name): Don't assert
	function contains at least one local dynamic name.
	(print_operand) <case '&'>: Instead output operand lossage diagnostics
	here if that happens.

2009-11-08  Zbigniew Chamski  <>
	    Joern Rennecke  <>

	* cfgrtl.c (pass_free_cfg): Add pass name.
	* cgraphbuild.c (pass_build_cgraph_edges): Likewise.
	(pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
	* dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
	* df-core.c (pass_df_initialize_no_opt): Likewise.
	* except.c (pass_rtl_eh): Likewise.
	* function.c (pass_init_function, pass_leaf_regs): Likewise.
	* gcse.c (pass_rtl_pre): Change pass name.
	* passes.c (pass_postreload): Add pass name.
	(make_pass_instance): Don't use duplicate-tracking logic for
	names starting with '*'.
	(next_pass_1): Assert that pass has a name.
	(register_one_dump_file): If there is an space in the name,
	skip past it.
	* predict.c (pass_strip_predict_hints): Add pass name.
	* reg-stack.c (pass_stack_regs): Likewise.
	* stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
	* tree-cfg.c (pass_warn_function_return,
	pass_warn_function_noreturn): Add pass name.
	* tree-dfa.c (pass_referenced_vars): Likewise.
	* tree-optimize.c (pass_cleanup_cfg_post_optimizing):
	Fix whitespace before comment.
	(pass_fixup_cfg): Add pass name, fix whitespace before comment.
	(pass_init_datastructures): Add pass name.
	* tree-ssa-loop.c (pass_record_bounds): Likewise.
	* tree-ssa.c (pass_early_warn_uninitialized,
	pass_late_warn_uninitialized): Likewise.
	* tree.c (pass_ipa_free_lang_data): Likewise.
	* doc/passes.texi (pass manager): Document how to disambiguate
	pass names.

2009-11-08  Paolo Bonzini  <>

	* df-problems.c: Fix documentation for forward simulation of LR.
	(df_simulate_one_insn_forwards): Use df_simulate_find_defs.
	(df_simulate_finalize_forwards): Remove.
	* df.h (df_simulate_finalize_forwards): Remove.

2009-11-08  Richard Guenther  <>

	* tree-ssa-structalias.c (build_succ_graph): Properly make
	variables escape if they are stored to anything.

2009-11-08  Richard Guenther  <>

	PR rtl-optimization/41928
	* loop-invariant.c (free_loop_data): If we didn't allocate
	loop data do not try to free it.

2009-11-07  Jason Merrill  <>

	* tree.c (reconstruct_complex_type): Preserve attributes.

2009-11-07  Richard Guenther  <>

	* tree-ssa-structalias.c (build_succ_graph): Feed stores
	to anything only to variables that can take pointers.
	(get_constraint_for_ssa_var): Properly exclude full
	variables from expanding.
	(first_vi_for_offset): Avoid overflow in arithmetic.
	(first_or_preceding_vi_for_offset): Likewise.
	(count_num_arguments): Fix implementation.
	(gate_ipa_pta): Do not run when not optimizing.

2009-11-07  David Binderman <>

	* builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
	expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
	set but not used variables.
	(apply_args_reg_offset): Comment out as unused.
	* calls.c (flags_from_decl_or_type): Likewise.
	* genautomata.c (check_regexp_units_distribution): Likewise.

2009-11-07  Uros Bizjak  <>

	* config/i386/ (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
	xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
	*xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
	xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
	xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
	xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
	operand alternatives.

2009-11-06  Michael Matz  <>

	PR middle-end/41963
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
	of a potential reciprocal to really be reciprocals.

2009-11-06  Jakub Jelinek  <>

	* config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
	lwpintrin.h after immintrin.h.
	* config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove

	PR middle-end/41935
	* c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
	or non-constant index, allow index one past the last element and
	allow exceeding array bound in arrays that might be used as flexible
	array members.

2009-11-05  Richard Henderson  <>

	* config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.

2009-11-05  Paul Brook  <>

	* config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
	(arm_fpu_desc): New.
	(all_fpus): Add FPU details.
	(fp_model_for_fpu): Remove.
	(arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
	(arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
	(arm_file_start): Use arm_fpu_desc.
	(TARGET_FPA_EMU2): Define.
	(arm_fp_model, fputype, arm_fpu_tune): Remove.
	(vfp_reg_type, arm_fpu_desc): New.
	* config/arm/ (attr fpu): Simplify.
	* config/arm/ (movxf_fpa): Use TARGET_FPA_EMU2.
	* config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
	* config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
	* config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
	* config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.

2009-11-05  Michael Matz  <>

	* config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
	* doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
	for 1/sqrtf.

2009-11-04  Jason Merrill  <>

	PR c++/36912
	* varasm.c (initializer_constant_valid_p): A PLUS_EXPR
	or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
	(output_constant): Avoid crash after error.

2009-11-05  Martin Jambor  <>

	* tree-sra.c (struct access): Changed comment of next_sibling field.
	(analyze_modified_params): Loop over accesses of a group rather than
	over all with the ame base, pass a common bitmap to
	(unmodified_by_ref_scalar_representative): Build link lists of
	accesses of a group.
	(splice_param_accesses): Likewise.

2009-11-04  Kenneth Zadeck  <>

	* df-scan.c (df-uses-record): Add case zero_extract of mem.

2009-11-04  Eric Botcazou  <>

	PR target/10127
	PR ada/20548
	* config/i386/ (probe_stack): New expander.
	(logical operation peepholes): Do not split stack checking probes.

2009-11-04  Harsha Jagasia  <>
	    Dwarakanath Rajagopal  <>

	* doc/invoke.texi (-mlwp): Add documentation.
	* doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
	* config.gcc (i[34567]86-*-*): Include lwpintrin.h.
	(x86_64-*-*): Ditto.
	* config/i386/lwpintrin.h: New file, provide x86 compiler
	intrinisics for LWP.
	* config/i386/cpuid.h (bit_LWP): Define LWP bit.
	* config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
	* config/i386/i386-c.c (ix86_target_macros_internal): Check
	* config/i386/i386.h (TARGET_LWP): New macro for LWP.
	* config/i386/i386.opt (-mlwp): New switch for LWP support.
	* config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
	(ix86_handle_option): Handle -mlwp.
	(isa_opts): Handle -mlwp.
	(enum pta_flags): Add PTA_LWP.
	(override_options): Add LWP support.
	(IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
	(IX86_BUILTIN_LLWPCB32): Ditto.
	(IX86_BUILTIN_LLWPCB64): Ditto.
	(IX86_BUILTIN_SLWPCB16): Ditto.
	(IX86_BUILTIN_SLWPCB32): Ditto.
	(IX86_BUILTIN_SLWPCB64): Ditto.
	(IX86_BUILTIN_LWPVAL16): Ditto.
	(IX86_BUILTIN_LWPVAL32): Ditto.
	(IX86_BUILTIN_LWPVAL64): Ditto.
	(IX86_BUILTIN_LWPINS16): Ditto.
	(IX86_BUILTIN_LWPINS32): Ditto.
	(IX86_BUILTIN_LWPINS64): Ditto.
	(enum  ix86_special_builtin_type): Add LWP intrinsic support.
	(builtin_description): Ditto.
	(ix86_init_mmx_sse_builtins): Ditto.
	(ix86_expand_special_args_builtin): Ditto.
	* config/i386/ (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
	LWP support.
	(lwp_llwpcbhi1): New lwp pattern.
	(lwp_llwpcbsi1): Ditto.
	(lwp_llwpcbdi1): Ditto.
	(lwp_slwpcbhi1): Ditto.
	(lwp_slwpcbsi1): Ditto.
	(lwp_slwpcbdi1): Ditto.
	(lwp_lwpvalhi3): Ditto.
	(lwp_lwpvalsi3): Ditto.
	(lwp_lwpvaldi3): Ditto.
	(lwp_lwpinshi3): Ditto.
	(lwp_lwpinssi3): Ditto.
	(lwp_lwpinsdi3): Ditto.

2009-11-04  Andrew Pinski  <>
	    Trevor Smigiel <>

	PR rtl-opt/41833
	* simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
	a vec_duplicate.

2009-11-04  Richard Guenther  <>
	    Rafael Avila de Espindola  <>

	* gcc.c (process_command): Handle arguments name@offset.

2009-11-04  Harsha Jagasia  <>
	    Dwarakanath Rajagopal  <>

	* config.gcc (i[34567]86-*-*): Include xopintrin.h.
	(x86_64-*-*): Ditto.
	* config/i386/xopintrin.h: New file, provide common x86 compiler
	intrinisics for XOP.
	* config/i386/cpuid.h (bit_XOP): Define XOP bit.
	* config/i386/x86intrin.h: Add XOP check and xopintrin.h.
	* config/i386/i386-c.c(ix86_target_macros_internal): Check
	* config/i386/i386.h(TARGET_XOP): New macro for XOP.
	* config/i386/i386.opt (-mxop): New switch for XOP support.
	* config/i386/ (UNSPEC_XOP_UNSIGNED_CMP)
	(UNSPEC_FRCZ): Add new UNSPEC for XOP support.
	(PPERM_*): New constants for vpperm instruction.
	(xop_pcmov_<mode>): Add XOP conditional mov instructions.
	* config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
	(OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
	(ix86_handle_option): Handle -mxop.
	(isa_opts): Handle -mxop.
	(enum pta_flags): Add PTA_XOP.
	(override_options): Add XOP support.
	(print_operand): Add code for XOP compare instructions.
	(ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
	(ix86_expand_int_vcond): Extend for XOP compare instruction.

	(IX86_BUILTIN_VPCMOV): New for XOP intrinsic.

	(IX86_BUILTIN_VPCMOV256): Ditto.
	(IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
	(IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
	(IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
	(IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
	(IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
	(IX86_BUILTIN_VPCMOV_V4DF256): Ditto.






	(IX86_BUILTIN_VFRCZPS256): Ditto.
	(IX86_BUILTIN_VFRCZPD256): Ditto.









	(enum multi_arg_type): New enum for describing the various XOP
	intrinsic argument types.
	(bdesc_multi_arg): New table for XOP intrinsics.
	(ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
	(ix86_expand_multi_arg_builtin): New function for creating XOP

	* config/i386/ (sserotatemax): New mode attribute for XOP.
	(xop_pmacsww): Ditto.
	(xop_pmacssww): Ditto.
	(xop_pmacsdd): Ditto.
	(xop_pmacssdd): Ditto.
	(xop_pmacssdql): Ditto.
	(xop_pmacssdqh): Ditto.
	(xop_pmacsdql): Ditto.
	(xop_pmacsdql_mem): Ditto.
	(xop_mulv2div2di3_low): Ditto.
	(xop_pmacsdqh): Ditto.
	(xop_pmacsdqh_mem): Ditto.
	(xop_mulv2div2di3_high): Ditto.
	(xop_pmacsswd): Ditto.
	(xop_pmacswd): Ditto.
	(xop_pmadcsswd): Ditto.
	(xop_pmadcswd): Ditto.
	(xop_pcmov_<mode>): Ditto.
	(xop_pcmov_<mode>256): Ditto.
	(xop_phaddbw): Ditto.
	(xop_phaddbd): Ditto.
	(xop_phaddbq): Ditto.
	(xop_phaddwd): Ditto.
	(xop_phaddwq): Ditto.
	(xop_phadddq): Ditto.
	(xop_phaddubw): Ditto.
	(xop_phaddubd): Ditto.
	(xop_phaddubq): Ditto.
	(xop_phadduwd): Ditto.
	(xop_phadduwq): Ditto.
	(xop_phaddudq): Ditto.
	(xop_phsubbw): Ditto.
	(xop_phsubwd): Ditto.
	(xop_phsubdq): Ditto.
	(xop_pperm): Ditto.
	(rotl<mode>3): Ditto.
	(rotr<mode>3): Ditto.
	(xop_rotl<mode>3): Ditto.
	(xop_rotr<mode>3): Ditto.
	(vrotr<mode>3): Ditto.
	(vrotl<mode>3): Ditto.
	(xop_vrotl<mode>3): Ditto.
	(vlshr<mode>3): Ditto.
	(vashr<mode>3): Ditto.
	(xop_ashl<mode>3): Ditto.
	(xop_lshl<mode>3): Ditto.
	(ashlv16qi3): Ditto.
	(lshlv16qi3): Ditto.
	(ashrv16qi3): Ditto.
	(ashrv2di3): Ditto.
	(xop_frcz<mode>2): Ditto.
	(xop_vmfrcz<mode>2): Ditto.
	(xop_frcz<mode>2256): Ditto.
	(xop_maskcmp<mode>3): Ditto.
	(xop_maskcmp_uns<mode>3): Ditto.
	(xop_maskcmp_uns2<mode>3): Ditto.
	(xop_pcom_tf<mode>3): Ditto.

	* doc/invoke.texi (-mxop): Add documentation.
	* doc/extend.texi (x86 intrinsics): Add XOP intrinsics.

2009-11-03  Mark Mitchell  <>

	PR driver/11810
	* gcc.c (SWITCHES_NEED_SPACES): Define to "o".
	* config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
	* config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.

2009-11-04  Richard Earnshaw  <>

	PR target/40835
	* (peephole2 patterns for move and compare): New.

2009-11-04  Nick Clifton  <>

	* defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
	Make sure that it does not allow CONST_DOUBLEs.
	* doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
	* config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
	* config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
	* config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
	* config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
	* config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
	* config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
	* config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
	* config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
	* config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
	* config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
	* config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
	* config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
	* config/score/score.h (CONSTANT_ADDRESS_P): Delete.
	* config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.

2009-11-04  Richard Guenther  <>

	PR tree-optimization/41919
	* tree-vrp.c (test_for_singularity): Properly compare values.

2009-11-04  Revital Eres  <>

	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
	Consider peeling for alignment only for stores and remove
	redundant assignment.

2009-11-04  Maxim Kuvyrkov  <>

	PR target/41302
	* config/m68k/m68k.c (m68k_reg_present_p): New static function.
	(m68k_ok_for_sibcall_p): Handle different result return locations.

2009-11-04  Richard Guenther  <>

	* c-opts.c (c_common_post_options): Move LTO option processing
	code ...
	* opts.c (decode_options): ... here.

2009-11-04  Jakub Jelinek  <>

	* c-common.c (fold_offsetof_1): Use %wd instead of

2009-11-04  Maciej W. Rozycki  <>

	* config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
	__pic__ or __PIC__.

2009-11-04  Maciej W. Rozycki  <>

	* config.gcc (vax-*-linux*): Keep the original contents of
	tmake_file while adding vax/t-linux.

2009-11-03  Eric Botcazou  <>

	PR target/10127
	PR ada/20548
	* system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
	* doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
	* doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
	Document PROBE_STACK.
	* explow.c (anti_adjust_stack_and_probe): New function.
	(allocate_dynamic_stack_space): Do not directly allocate space if
	STACK_CHECK_MOVING_SP, instead invoke above function.
	(emit_stack_probe): Handle probe_stack insn.
	(PROBE_INTERVAL): New macro.
	(STACK_GROW_OPTAB): Likewise.
	(STACK_GROW_OFF): Likewise.
	(probe_stack_range): Use Pmode and memory_address consistently.  Fix
	loop condition in the small constant case.  Rewrite in the general
	case to be immune to wraparounds.  Make sure the address of probes
	is valid.  Try to use [base + disp] addressing mode if possible.
	* ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
	checking is enabled and STACK_CHECK_MOVING_SP.
	* rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
	return 1 for volatile references to the stack pointer.
	* tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
	__builtin_alloca if stack checking is enabled.
	* unwind-dw2.c (uw_identify_context): Take into account whether the
	context is that of a signal frame or not.
	* config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
	* config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.

2009-11-03  Jakub Jelinek  <>

	PR rtl-optimization/41917
	* rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
	operand isn't known to be 0, return 1.

2009-11-03  Richard Sandiford  <>

	* config/mips/ Fix typos.

2009-11-03  Richard Sandiford  <>

	* doc/invoke.texi: Fix typo.

2009-11-03  Paul Brook  <>

	* config/arm/ (vectype): Add T_floatSF.
	(string_of_vectype): Ditto.
	* config/arm/ (signed_ctype): Add T_floatSF.
	(deftypes): Use float for float32_t.
	* config/arm/arm_neon.h: Regenerate.

2009-11-03  Nick Clifton  <>
	    Kevin Buettner  <>

	* config/rx/ (rx_store_multiple_vector): Reverse
	order of expected registers.
	(rx_load_multiple_vector): Likewise.
	(rx_rtsd_vector): Likewise.
	* config/rx/rx.c (rx_cpu_type): New variable.
	(rx_print_operand): Fix bug printing 64-bit constant values.
	(rx_emit_stack_pushm): Reverse order of pushed registers.
	(gen_rx_store_vector): Likewise.
	(is_fast_interrupt_func): Only accept "fast_interrupt" as the
	attribute name.
	(is_exception_func): Rename to is_interrupt_func and only accept
	"interrupt" as the attribute name.
	(rx_get_stack_layout): Use new function name.
	(rx_func_attr_inlinable): Likewise.
	(rx_attribute_table): Remove "exception".
	(rx_expand_prologue): If necessary push the accumulator register
	in the prologue of interrupt functions.
	(rx_expand_epilogue): If necessary pop the accumulator.
	(rx_builtins): Add RX_BUILTIN_MVTIPL.
	(rx_expand_builtin_stz): Remove.
	(rx_expand_builtin_mvtipl): New function.
	(rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
	(rx_expand_builtin): Likewise.
	(rx_enable_fpu): New variable.
	(rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
	* config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
	on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
	(enum rx_cpu_types): Define.
	(ASM_SPEC): Pass -m32bit-doubles on to assembler.
	(OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
	* config/rx/ Test ALLOW_RX_FPU_INSNS instead of
	(revl): Rename to bswapsi2.
	(bswaphi2): New pattern.
	(mvtachi): Mark as volatile because it uses a register unknown to GCC.
	(mvtaclo): Likewise.
	(racw): Likewise.
	(mvtc): Remove clobber of cc0.
	(mvtcp): Delete.
	(opecp): Delete.
	* config/rx/rx.opt (mieee): Remove.
	(fpu): Add.
	(nofpu): Add.
	(mcpu=): Add.
	(patch=): Add.
	(msave-acc-in-interrupts): Add.
	* config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
	(MULTILIB_DIRS): Likewise.
	(MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
	* doc/extend.texi: Remove description of "exception" function
	* doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
	-msave-acc-in-interrupts options.

2009-11-03  Richard Guenther  <>

	* c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.

2009-11-03  Dodji Seketeli  <>

	PR c++/38699
	* c-common.c (fold_offsetof_1): Issue errors when the member
	designator of the offsetof expression is not legitimate.

2009-11-03  Uros Bizjak  <>

	* config/i386/ (*call_value_1_rex64_ms_sysv): Use register
	names instead of numerical constants.
	(sse_prologue_save): Ditto.
	(*sse_prologue_save_insn): Ditto.

2009-11-03  Uros Bizjak  <>

	PR target/41900
	* config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
	(TARGET_CALL_ESP): New define.
	* config/i386/i386.c (initial_ix86_tune_features): Initialize
	* config/i386/ (*call_pop_1_esp, *call_1_esp,
	*call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
	*call_1, *call_value_pop_1 and *call_value_1.  Depend on
	(*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
	New patterns, use "lsm" as operand 1 constraint.
	* config/i386/ (call_insn_operand): Depend on
	index_register_operand for !TARGET_CALL_ESP to avoid %esp register.

2009-11-02  Ulrich Weigand  <>

	PR tree-optimization/41857
	* tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
	* tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
	to create_mem_ref.
	* tree-ssa-address.c (move_hint_to_base): New function.
	(most_expensive_mult_to_index): Add TYPE argument.  Use mode and
	address space associated with TYPE.
	(addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
	most_expensive_mult_to_index.  Call move_hint_to_base.
	(create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
	TYPE to addr_to_parts.

2009-11-02  Martin Jambor  <>

	PR tree-optimization/41750
	* tree-sra.c (analyze_modified_params): Loop over all
	representatives of components of a parameter.

2009-11-02  Jakub Jelinek  <>

	PR tree-optimization/41841
	* ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
	local variables of not yet materialized clones.

	PR debug/41893
	* cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
	for a VOIDmode variable.

	PR c++/41774
	* c-pragma.c (visstack): Change into vector of ints rather than
	enum symbol_visibility.
	(push_visibility): Add kind argument, push default_visibility together
	with kind.
	(pop_visibility): Add kind argument, return true if successful, fail
	if visibility stack is empty or if stack top is of different kind.
	(handle_pragma_visibility): Don't check length of visstack, instead
	call pop_visibility and issue diagnostics if it failed.  Pass 0
	as last argument to push_visibility and pop_visibility.
	* c-pragma.h (push_visibility): Add kind argument.
	(pop_visibility): Likewise.  Return bool instead of void.

2009-11-01  Eric Botcazou  <>

	* tree.def (TARGET_MEM_REF): Update comment.
	* alias.c (get_alias_set): Retrieve the original memory reference for
	a TARGET_MEM_REF before proceeding.

2009-10-31  Anatoly Sokolov  <>

	* config/frv/frv.c (frv_function_value, frv_libcall_value,
	frv_function_value_regno_p): New functions.
	* config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
	(FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
	* config/frv/frv-protos.h (frv_function_value_regno_p): Declare.

2009-10-31  Anatoly Sokolov  <>

	* config/mn10300/mn10300.c (mn10300_function_value): Make static, add
	new 'outgoing' argument.
	(mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
	* config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
	(FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
	* config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
	(mh10300_function_value_regno_p): Declare.

2009-10-31  Ramana Radhakrishnan  <>

	* config/arm/ New - integer pipeline description.

2009-10-31  Eric Botcazou  <>

	* tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
	aborting if the sizes of the two references don't match.

2009-10-31  Toon Moene  <>

	* ipa-inline.c (cgraph_decide_inlining):
	Include reason for not inlining called-once functions in dump file.

2009-10-30  Daniel Gutson  <>

	* config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
	* config/arm/bpapi.h (BE8_LINK_SPEC): New define.

2009-10-30  Richard Guenther  <>

	PR lto/41858
	* lto-streamer.h (struct lto_file_decl_data): Remove fd member.

2009-10-30  Nathan Sidwell  <>

	* target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
	* config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused

2009-10-30  Martin Jambor  <>

	* tree-sra.c (build_ref_for_offset_1): Remove a comment.

2009-10-30  H.J. Lu  <>

	PR target/40838
	* cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
	first.  Move assert on stack_alignment_estimated just before
	setting stack_realign_needed.
	(gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
	Don't call update_stack_boundary.

	* config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
	(verride_options): Don't check ix86_force_align_arg_pointer here.
	(ix86_function_ok_for_sibcall): Use it.
	(ix86_update_stack_boundary): Likewise.

	* config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.

2009-10-30  Richard Earnshaw  <>

	* (QHSI): New mode iterator.
	(movqi): If generating for thumb, then truncate any immediate to
	8 bits.
	* (thumb2_movsi_shortim and peephole2 generator): Replace
	(thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based

2009-10-29  Cary Coutant  <>

	PR debug/41700
	* dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
	locations in the source).
	(store_vcall_insn): New function.
	(lookup_vcall_insn): New function.
	(dwarf2out_virtual_call_token): Use store_vcall_insn.
	(dwarf2out_copy_call_info): New function.
	(dwarf2out_virtual_call): Use lookup_vcall_insn.
	* emit-rtl.c (try_split): Call copy_call_info debug hook.
	* debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
	* debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
	(debug_nothing_rtx_rtx): New dummy hook.
	* dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
	(xcoff_debug_hooks): Likewise.
	* sdbout.c (sdb_debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.

2009-10-29  David Daney  <>

	* doc/invoke.texi (mmcount-ra-address): Document new command line
	* config/mips/mips.opt (mmcount-ra-address): New option.
	* config/mips/mips-protos.h (mips_function_profiler): Declare new
	* config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
	(mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
	(mips_function_profiler): Moved from FUNCTION_PROFILER, and
	* config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to

2009-10-29  Steve Ellcey  <>

	PR middle-end/37565
	PR target/38018
	* doc/tm.texi (OVERRIDE_OPTIONS): Update.
	* optc-gen.awk (cl_target_option_restore): Include call to
	* target.h (override_options_after_change): New.
	* c-common.c (parse_optimize_options): Call
	* config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
	(ia64_override_options_after_change): New.
	(ia64_override_options) Add call to above.

2009-10-29  Michael Matz  <>

	* tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
	(gate_convert_to_rsqrt): Ditto.
	(pass_convert_to_rsqrt): Ditto.
	* tree-pass.h (pass_convert_to_rsqrt): Don't declare.
	* passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
	to pass list.

	* config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.

2009-10-29  Ramana Radhakrishnan  <>

	* config/arm/arm.c (find_best_start): Fix type of remainder to be

2009-10-29  Martin Jambor  <>

	PR tree-optimization/41775
	* tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
	(generate_subtree_copies): Do not unshare agg.
	(load_assign_lhs_subreplacements): Do not unshare rhs.
	(sra_modify_assign): Do not unshare exprs.
	(propagate_subacesses_accross_link): Renamed to

2009-10-29  Richard Earnshaw  <>

	* arm.c (count_insns_for_constant): Rework to support counting for
	thumb2 immediates as well.
	(find_best_start): Split out from arm_gen_constant.
	(arm_gen_constant): Rework to support XOR with immediate.

2009-10-29  Chao-ying Fu  <>

	* config/mips/mips.c (mips_emit_unary, mips_force_unary): New
	(mips_expand_synci_loop):  Use the length rtx to control the
	synci loop from the begin rtx that points to the first byte of
	the cache line.

2009-10-28  Rafael Avila de Espindola  <>

	* doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.

2009-10-28  Rafael Avila de Espindola  <>

	* dbxout.c (dbxout_common_check): Accept non public trees.
	* dwarf2out.c (fortran_common): Accept non public trees.

2009-10-28  Rafael Avila de Espindola  <>

	* common.opt (fuse-linker-plugin): New option.
	* gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
	* opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.

2009-10-28  Paolo Bonzini  <>

	PR rtl-optimization/39715
	* config/arm/ (cstoresi4): Use gen_cstoresi_ltu_thumb1.
	(gen_cstoresi_ltu_thumb1): New splitter.

2009-10-28  Richard Guenther  <>

	PR lto/41808
	PR lto/41839
	* tree-ssa.c (useless_type_conversion_p): Do not treat
	conversions to pointers to incomplete types as useless.
	* gimple.c (gimple_types_compatible_p): Compare struct tags,
	not typedef names.

2009-10-28  Jakub Jelinek  <>

	* var-tracking.c (emit_note_insn_var_location): Don't call the second
	vt_expand_loc unnecessarily when location is not a register nor

	PR middle-end/41837
	* ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
	fields don't have DECL_NAME.

	PR debug/41801
	* builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
	call convert_memory_address on addr.

	PR target/41762
	* config/i386/i386.c (ix86_pic_register_p): Don't call
	rtx_equal_for_cselib_p for VALUEs discarded as useless.

2009-10-28  Richard Sandiford  <>

	* var-tracking.c (emit_note_insn_var_location): Get the mode of
	a variable part from its REG, MEM or VALUE.

2009-10-28  Richard Guenther  <>

	* gimple.c (gimple_get_alias_set): Fix comment typo.

2009-10-28  Richard Guenther  <>

	* tree.c (free_lang_data_in_type): Do not call get_alias_set.
	(free_lang_data): Unconditionally compute alias sets for all
	standard integer types.  Bail out if gate bailed out previously.
	Do not reset the types_compatible_p langhook.
	(gate_free_lang_data): Remove.
	(struct pass_ipa_free_lang_data): Enable unconditionally.
	* gimple.c (gimple_get_alias_set): Use the same alias-set for
	all pointer types.

2009-10-28  Richard Guenther  <>

	PR middle-end/41855
	* tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
	(ref_maybe_used_by_call_p_1): Fix bcopy handling.
	(call_may_clobber_ref_p_1): Likewise.
	* tree-ssa-structalias.c (find_func_aliases): Likewise.
	* alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.

2009-10-28  Paolo Bonzini  <>

	PR rtl-optimization/41812

	2009-06-27  Paolo Bonzini  <>

	* df-problems.c (df_md_scratch): New.
	(df_md_alloc, df_md_free): Allocate/free it.
	(df_md_local_compute): Only include live registers in init.
	(df_md_transfer_function): Prune the in-set computed by
	the confluence function, and the gen-set too.

2009-10-28  Paolo Bonzini  <>

	PR rtl-optimization/39715
	* combine.c (simplify_comparison): Use extensions to
	widen comparisons.  Try an ANDing first.

2009-10-28  Paolo Bonzini  <>

	PR rtl-optimization/40741
	* config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
	a small constant is cheap.
	* config/arm/ (andsi3, iorsi3): Try to place the result of
	force_reg on the LHS.
	(xorsi3): Likewise, and split the XOR if the constant is complex
	and not in Thumb mode.

2009-10-28  Paolo Bonzini  <>

	* expmed.c (emit_store_flag): Check costs before
	transforming to the opposite representation.

2009-10-28  Paolo Bonzini  <>

	* config/sh/ (cbranchfp4_media): Remove hack extending
	cstore result to DImode.

2009-10-28  Kaz Kojima  <>

	* config/sh/ (stuff_delay_slot): Move const_int pattern
	inside the unspec vector.

2009-10-27  Richard Henderson  <>

	* cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.

2009-10-27  Richard Henderson  <>

	PR c++/41819
	* tree-eh.c (eh_region_may_contain_throw_map): Rename from
	eh_region_may_contain_throw; update users.
	(eh_region_may_contain_throw): New function.
	(lower_catch): Check flag_exceptions before creating exception region.
	(lower_eh_filter, lower_eh_must_not_throw): Likewise.
	(lower_cleanup): Tidy existing flag_exceptions check to match.

2009-10-27  Kai Tietz <>

	* config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
	* config/i386/mingw.opt: Add fset-stack-executable.
	* config/i386/i386.c (ix86_trampoline_init): Make call to
	emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
	defined and its value is not zero.
	* doc/invoke.texi

2009-10-27  Richard Guenther  <>

	* tree-ssa-structalias.c (find_func_aliases): In IPA mode
	handle calls to externally visible functions like in regular mode.
	(create_variable_info_for): Do not create function infos here.
	(have_alias_info): Remove write-only variable.
	(solve_constraints): New function split out from common code
	in compute_points_to_sets and ipa_pta_execute.
	(compute_points_to_sets): Adjust.
	(ipa_pta_execute): Likewise.  Handle clones and externally visible
	functions like in non-IPA mode.

2009-10-27  Jakub Jelinek  <>

	PR c/41842
	* c-typeck.c (convert_arguments): Return -1 if any of the arguments is

2009-10-27  Richard Guenther  <>

	* tree-complex.c (expand_complex_div_wide): Check for
	INTEGER_CST, not TREE_CONSTANT on comparison folding result.

2009-10-27  Revital Eres  <>

	PR tree-optimization/40648
	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
	Change decision of when to peel for alignment.

2009-10-27  Richard Guenther  <>

	PR lto/41821
	* gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.

2009-10-27  Aldy Hernandez  <>

	PR bootstrap/41451
	* fold-const.c (fold_binary_loc): Do not call

2009-10-27  Wei Guozhi  <>

	PR target/41705
	* target.h (have_conditional_execution): Add a new target hook
	* target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
	* targhooks.h (default_have_conditional_execution): Likewise.
	* targhooks.c (default_have_conditional_execution): Likewise.
	* doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
	* config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
	(arm_have_conditional_execution): New function.
	* ifcvt.c (noce_process_if_block, find_if_header,
	cond_exec_find_if_block, dead_or_predicable): Change the usage of
	macro HAVE_conditional_execution to a target hook call.
	* recog.c (peephole2_optimize): Likewise.
	* sched-rgn.c (add_branch_dependences): Likewise.
	* final.c (asm_insn_count, final_scan_insn): Likewise.
	* bb-reorder.c (HAVE_conditional_execution): Remove it.

2009-10-26  Ben Elliston  <>
	    Michael Meissner  <>
	    Ulrich Weigand  <>

	* config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
	* config/spu/spu_cache.h: New file.

	* config/spu/cachemgr.c: New file.
	* config/spu/cache.S: New file.

	* config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
	(ADDR_SPACE_EA): Define.
	* config/spu/spu.c (EAmode): New macro.
	(ea_symbol_ref): New function.
	(spu_legitimate_constant_p): Handle __ea qualified addresses.
	(spu_addr_space_legitimate_address_p): New function.
	(spu_addr_space_legitimize_address): Likewise.
	(cache_fetch): New global.
	(cache_fetch_dirty): Likewise.
	(ea_alias_set): Likewise.
	(ea_load_store): New function.
	(ea_load_store_inline): Likewise.
	(expand_ea_mem): Likewise.
	(spu_expand_mov): Handle __ea qualified memory references.
	(spu_addr_space_pointer_mode): New function.
	(spu_addr_space_address_mode): Likewise.
	(spu_addr_space_subset_p): Likewise.
	(spu_addr_space_convert): Likewise.
	(spu_section_type_flags): Handle "._ea" section.
	(spu_select_section): New function.
	(spu_unique_section): Likewise.
	* config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
	and __EA64__ predefined macros.
	* config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
	-matomic-updates switches.

	* config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
	(EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
	libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
	libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
	($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
	($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
	$(T)cache128k.o): Likewise.
	($(T)libgcc_%.a): Likewise.

	* config/spu/spu.opt (-mea32/-mea64): Add switches.
	(-maddress-space-conversion): Likewise.
	(-mcache-size=): Likewise.
	(-matomic-updates): Likewise.
	* doc/invoke.texi (-mea32/-mea64): Document.
	(-maddress-space-conversion): Likewise.
	(-mcache-size=): Likewise.
	(-matomic-updates): Likewise.

2009-10-26  Ben Elliston  <>
	    Michael Meissner  <>
	    Ulrich Weigand  <>

	* doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.

	* c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
	defined, add the named address space keywords.
	(c_addr_space_name): New function.
	(complete_array_type): Preserve named address space.
	(handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
	instead of targetm.valid_pointer_mode.

	* c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
	(c_addr_space_name): Add prototype.

	* c-tree.h (struct c_declspecs): Add address_space member.
	(declspecs_add_addrspace): Add prototype.

	* c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.

	* c-parser.c (c_parse_init): Add assertion.
	(typedef enum c_id_kind): Add C_ID_ADDRSPACE.
	(c_lex_one_token): Handle address space keywords.
	(c_token_starts_typename): Likewise.
	(c_token_starts_declspecs): Likewise.
	(c_parser_declspecs): Likewise.
	(c_parser_postfix_expression_after_paren_type): Diagnose compound
	literal within function qualified with named address space.

	* c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
	address space qualifiers.
	(shadow_tag_warned): Warn about useless address space qualifiers.
	(quals_from_declspecs): Handle address space qualifiers.
	(grokdeclarator): Likewise.
	(build_null_declspecs): Likewise.
	(declspecs_add_addrspace): New function.

	* c-typeck.c (addr_space_superset): New function.
	(qualify_type): Handle named address spaces.
	(composite_type): Likewise.
	(common_pointer_type): Likewise.
	(comp_target_types): Likewise.
	(build_conditional_expr): Likewise.
	(handle_warn_cast_qual): Likewise.
	(build_c_cast): Likewise.
	(convert_for_assignment): Likewise.
	(build_binary_op): Likewise.
	(pointer_diff): Handle named address spaces.  Use intermediate
	integer type of sufficient size if required.

2009-10-26  Ben Elliston  <>
	    Michael Meissner  <>
	    Ulrich Weigand  <>

	* doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.

	* target.h (struct target_def): Add pointer_mode, address_mode,
	and valid_pointer_mode to addr_space substructure.
	* target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
	* targhooks.c (target_default_pointer_address_modes_p): New function.
	* target.h (target_default_pointer_address_modes_p): Add prototype.
	* targhooks.c (default_addr_space_pointer_mode): New function.
	(default_addr_space_address_mode): Likewise.
	(default_addr_space_valid_pointer_mode): Likewise.
	* targhooks.h (default_addr_space_pointer_mode): Add prototype.
	(default_addr_space_address_mode): Likewise.
	(default_addr_space_valid_pointer_mode): Likewise.
	* output.h (default_valid_pointer_mode): Move to ...
	* targhooks.h (default_valid_pointer_mode): ... here.
	* varasm.c (default_valid_pointer_mode): Move to ...
	* targhooks.c (default_valid_pointer_mode): ... here.

	* varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
	instead of targetm.valid_pointer_mode.

	* fold-const.c (fit_double_type): Use int_or_pointer_precision.
	* tree.c (integer_pow2p): Likewise.
	(tree_log2): Likewise.
	(tree_floor_log2): Likewise.
	(signed_or_unsigned_type_for): Support pointer type of different size.
	(int_or_pointer_precision): New function.
	* tree.h (int_or_pointer_precision): Add prototype.
	* stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
	* varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
	incoming pointer type instead of POINTER_SIZE.

	* tree.c (build_pointer_type): Use appropriate pointer mode
	instead of ptr_mode.
	(build_reference_type): Likewise.
	* expr.c (store_expr): Likewise.
	(expand_expr_addr_expr): Likewise.
	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
	* cfgexpand.c (expand_debug_expr): Likewise.

	* auto-inc-dec.c: Include "target.h".
	(try_merge): Use appropriate address mode instead of Pmode.
	(find_inc): Likewise.
	* combine.c (find_split_point): Likewise.
	* cselib.c (cselib_record_sets): Likewise.
	* dse.c (replace_inc_dec): Likewise.
	(canon_address): Likewise.
	* var-tracking.c (replace_expr_with_values): Likewise.
	(count_uses): Likewise.
	(add_uses): Likewise.
	(add_stores): Likewise.
	* emit-rtl.c: Include "target.h".
	(adjust_address_1): Use appropriate address mode instead of Pmode.
	(offset_address): Likewise.
	* explow.c (break_out_memory_refs): Likewise.
	(memory_address_addr_space): Likewise.
	(promote_mode): Likewise.
	* expr.c (move_by_pieces): Likewise.
	(emit_block_move_via_loop): Likewise.
	(store_by_pieces): Likewise.
	(store_by_pieces_1): Likewise.
	(expand_assignment): Likewise.
	(store_constructor): Likewise.
	(expand_expr_addr_expr): Likewise.
	(expand_expr_real_1): Likewise.
	* cfgexpand.c (expand_debug_expr): Likewise.
	* ifcvt.c (noce_try_cmove_arith): Likewise.
	* regcprop.c (kill_autoinc_value): Likewise.
	* regmove.c (try_auto_increment): Likewise.
	* reload.c (find_reloads): Likewise.
	(find_reloads_address): Likewise.
	(find_reloads_address_1): Likewise.
	* sched-deps.c: Include "target.h".
	(sched_analyze_1): Use appropriate address mode instead of Pmode.
	(sched_analyze_2): Likewise.
	* sel-sched-dump.c: Include "target.h".
	(debug_mem_addr_value): Use appropriate address mode instead of Pmode.
	* stor-layout.c (layout_type): Likewise.
	* tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
	(multiplier_allowed_in_address_p): Likewise.
	(get_address_cost): Likewise.
	* varasm.c (make_decl_rtl): Likewise.

	* expr.c (expand_assignment): Always convert offsets to appropriate
	address mode.
	(store_expr): Likewise.
	(store_constructor): Likewise.
	(expand_expr_real_1): Likewise.

	* reload.h (form_sum): Add MODE argument.
	* reload.c (form_sum): Add MODE argument, use it instead of Pmode.
	Update recursive calls.
	(subst_indexed_address): Update calls to form_sum.

	* tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
	* tree-ssa-address.c: Include "target.h".
	(templates): Replace by ...
	(mem_addr_template_list): ... this new vector.
	(TEMPL_IDX): Handle address space numbers.
	(gen_addr_rtx): Add address mode argument, use it instead of Pmode.
	(addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
	instead of global cache.  Update call to gen_addr_rtx.
	(valid_mem_ref_p): Update call to addr_for_mem_ref.
	* expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.

	* rtl.h (convert_memory_address_addr_space): Add prototype.
	(convert_memory_address): Define as macro.
	* explow.c (convert_memory_address): Rename to ...
	(convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
	Use appropriate pointer and address modes instead of ptr_mode / Pmode.
	Update recursive calls.
	(memory_address_addr_space): Call convert_memory_address_addr_space.
	* expmed.c (make_tree): Likewise.
	* expr.c (expand_assignment): Likewise.
	(expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
	(expand_expr_addr_expr): Likewise.  Also, update call.

	* alias.c (find_base_value): Guard pointer size optimizations.
	(find_base_term): Likewise.
	* rtlanal.c (nonzero_bits1): Likewise.
	(num_sign_bit_copies1): Likewise.
	* simplify-rtx.c (simplify_unary_operation_1): Likewise.

	* (tree-ssa-address.o): Add $(TARGET_H) dependency.
	(emit-rtl.o): Likewise.
	(auto-inc-dec.o): Likewise.
	(sched-deps.o): Likewise.

2009-10-26  Ben Elliston  <>
	    Michael Meissner  <>
	    Ulrich Weigand  <>

	* doc/extend.texi (Named Address Spaces): New section.
	* coretypes.h (addr_space_t): New type.
	(ADDR_SPACE_GENERIC): New define.

	* doc/tm.texi (Named Address Spaces): New section.
	* target.h (struct gcc_target): Add addr_space substructure.
	(TARGET_INITIALIZER): Initialize addr_space hooks.
	* targhooks.c (default_addr_space_legitimate_address_p): New function.
	(default_addr_space_legitimize_address): Likewise.
	(default_addr_space_subset_p): Likewise.
	(default_addr_space_convert): Likewise.
	* targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
	(default_addr_space_legitimize_address): Likewise.
	(default_addr_space_subset_p): Likewise.
	(default_addr_space_convert): Likewise.

	* doc/rtl.texi (MEM_ADDR_SPACE): Document.
	* rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
	(MEM_ADDR_SPACE): New macro.
	* emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
	address space memory attribute.
	(mem_attrs_htab_hash): Handle address space memory attribute.
	(mem_attrs_htab_eq): Likewise.
	(set_mem_attributes_minus_bitpos): Likewise.
	(set_mem_alias_set): Likewise.
	(set_mem_align): Likewise.
	(set_mem_expr): Likewise.
	(set_mem_offset): Likewise.
	(set_mem_size): Likewise.
	(adjust_address_1): Likewise.
	(offset_address): Likewise.
	(widen_memoy_address): Likewise.
	(get_spill_slot_decl): Likewise.
	(set_mem_attrs_for_spill): Likewise.
	(set_mem_addr_space): New function.
	* emit-rtl.h (set_mem_addr_space): Add prototype.
	* print-rtl.c (print_rtx): Print address space memory attribute.
	* expr.c (expand_assignment): Set address space memory attribute
	of generated MEM RTXes as appropriate.
	(expand_expr_real_1): Likewise.
	* cfgexpand.c (expand_debug_expr): Likewise.
	* tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.

	* tree.h (struct tree_base): Add address_space bitfield.  Reduce
	size of "spare" bitfield.
	(TYPE_ADDR_SPACE): New macro.
	(TYPE_QUALS): Encode type address space.
	* tree.c (set_type_quals): Set type address space.
	(build_array_type): Inherit array address space from element type.
	* print-tree.c (print_node_brief): Print type address space.
	(print_node): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.

	* explow.c (memory_address): Rename to ...
	(memory_address_addr_space): ... this.  Add ADDRSPACE argument.
	Use address-space aware variants of memory address routines.
	* recog.c (memory_address_p): Rename to ...
	(memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
	Use address-space aware variants of memory address routines.
	(offsettable_address_p): Rename to ...
	(offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
	Use address-space aware variants of memory address routines.
	* reload.c (strict_memory_address_p): Rename to ...
	(strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
	Use address-space aware variants of memory address routines.
	(maybe_memory_address_p): Rename to ...
	(maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
	Use address-space aware variants of memory address routines.
	* expr.h (memory_address_addr_space): Add prototype.
	(memory_address): Define as macro.
	* recog.h (memory_address_addr_space_p): Add prototype.
	(memory_address_p): Define as macro.
	(offsettable_address_addr_space_p): Add prototype.
	(offsettable_address_p): Define as macro.
	(strict_memory_address_addr_space_p): Add prototype.
	(strict_memory_address_p): Define as macro.

	* combine.c (find_split_point): Use address-space aware variants
	of memory address routines.
	* emit-rtl.c (operand_subword): Likewise.
	(change_address_1): Likewise.
	(adjust_address_1): Likewise.
	(offset_address): Likewise.
	* expr.c (emit_move_insn): Likewise.
	(expand_assignment): Likewise.
	(expand_expr_real_1): Likewise.
	* recog.c (verify_changes): Likewise.
	(general_operand): Likewise.
	(offsettable_memref_p): Likewise.
	(offsettable_nonstrict_memref_p): Likewise.
	(constrain_operands): Likewise.
	* reload.c (get_secondary_mem): Likewise.
	(find_reloads_toplev): Likewise.
	(find_reloads_address): Likewise.
	(find_reloads_subreg_address): Likewise.
	* reload1.c (reload): Likewise.
	* rtlhooks.c (gen_lowpart_if_possible): Likewise.
	* rtl.h (address_cost): Add ADDRSPACE argument.
	* rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
	aware variant of memory address routines.
	* loop-invariant.c (create_new_invariant): Update address_cost call.
	* tree-ssa-loop-ivopts.c (computation_cost): Likewise.
	* fwprop.c (should_replace_address): Add ADDRSPACE argument.
	Use address-space aware variant of memory address routines.
	(propagate_rtx_1): Update call to should_replace_address.
	* tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
	* tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
	ADDRSPACE argument.  Use per-address-space instead of global cache.
	Use address-space aware variant of memory address routines.
	(get_address_cost): Likewise.
	(get_computation_cost_at): Update calls.
	* tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
	Use address-space aware variant of memory address routines.
	(create_mem_ref_raw): Update call to valid_mem_ref_p.
	(most_expensive_mult_to_index): Update call to

	* dwarf2out.c (modified_type_die): Output DW_AT_address_class
	attribute to indicate named address spaces.

	* varasm.c (get_variable_section): DECLs in named address spaces
	cannot be "common".

	* reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
	for addresses in a non-generic address space.

	* expr.c (emit_block_move_hints): Do not use libcalls for
	memory in non-generic address spaces.
	(clear_storage_hints): Likewise.
	(expand_assignment): Likewise.

	* fold-const.c (operand_equal_p): Expressions refering to different
	address spaces are not equivalent.

	* rtl.c (rtx_equal_p_cb): MEMs refering to different address
	spaces are not equivalent.
	(rtx_equal_p): Likewise.
	* cse.c (exp_equiv_p): Likewise.
	* jump.c (rtx_renumbered_equal_p): Likewise.
	* reload.c (operands_match_p): Likewise.

	* alias.c (nonoverlapping_memrefs_p): MEMs refering to different
	address spaces may alias.
	(true_dependence): Likewise.
	(canon_true_dependence): Likewise.
	(write_dependence_p): Likewise.

	* dse.c (canon_address): Handle named address spaces.
	* ifcvt.c (noce_try_cmove_arith): Likewise.

	* tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
	* expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
	* convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
	to handle conversions between different address spaces.
	* fold-const.c (fold_convert_loc): Likewise.
	(fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* gimple-pretty-print.c (dump_unary_rhs): Likewise.
	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
	* tree-inline.c (estimate_operator_cost): Likewise.
	* tree-ssa.c (useless_type_conversion_p): Conversions between pointers
	to different address spaces are not useless.

2009-10-26  Jakub Jelinek  <>

	PR bootstrap/41345
	* cfgcleanup.c (trivially_empty_bb_p): New function.
	(try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.

	PR debug/41828
	* dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
	add_name_and_src_coords_attributes, gen_namespace_die,
	dwarf2out_set_name): Handle dwarf2_name returning NULL.

2009-10-26  Nick Clifton  <>

	* config.gcc: Add support for RX target.
	* config/rx: New directory.
	* config/rx/ New file.
	* config/rx/ New file.
	* config/rx/rx.c: New file.
	* config/rx/rx.h: New file.
	* config/rx/ New file.
	* config/rx/rx.opt: New file.
	* config/rx/rx-protos.h: New file.
	* config/rx/t-rx: New file.
	* doc/extend.texi: Document RX function attributes.
	* doc/invoke.texi: Document RX specific command line options.
	* doc/contrib.texi: Document RX contribution.
	* doc/md.texi: Document RX constraints.
	* doc/install.texi: Document RX support.

2009-10-26  Michael Matz  <>

	PR tree-optimization/41783
	* tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
	case for simple diamonds.
	* tree-ssa-alias.h (get_continuation_for_phi): Declare.
	* tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
	argument, use alias oracle to skip some vdefs.
	(phi_translate_1): Change call to above, don't allocate new
	value ids if they can stay the same.
	(compute_avail): Allow vuse walking when looking up references.

2009-10-26  Richard Guenther  <>

	PR tree-optimization/41826
	* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
	access to re-allocated vector fields.

2009-10-26  Richard Guenther  <>

	* graphite-sese-to-poly.c (check_poly_representation): Fix
	compile without checking.

2009-10-26  Janus Weil  <>

	PR fortran/41714
	* gimple.h (tree_annotate_all_with_location): Remove prototype.
	* gimplify.c (tree_should_carry_location_p,
	Remove obsolete functions.

2009-10-25  Kaz Kojima  <>

	PR target/41813
	* config/sh/ (stuff_delay_slot): Don't set T_REG in pattern.

2009-10-25  Richard Guenther  <>

	* lto-streamer-in.c (unpack_ts_decl_common_value_fields):
	* lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.

2009-10-25  Richard Sandiford  <>

	* config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
	a note when expanding to nothing.

2009-10-25  Richard Guenther  <>

	PR middle-end/41814
	* tree.c (find_decls_types_r): Deal with Java overloading
	BINFO_VIRTUALS for its own purpose.

2009-10-24  Adam Nemet  <>

	* config/mips/ (hilo_operand): New predicate.
	* config/mips/ (<u>mulsidi3_64bit): Change it to a
	define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
	splitter part from here ...:
	(<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
	op0 and op4 to match the DINS case.
	(<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.

2009-10-24  Andy Hutchinson  <>

	PR middle-end/19154
	* (QIDI): Add new mode iterator.
	(sbrx_branch<mode>): Create new zero extract bit, test and jump
	patterns for all QI thru DI modes combinations.
	(sbrx_and_branch<mode>): Create new and based bit test and jump
	patterns for QI thru SI modes.
	avr.c (avr_out_sbxx_branch): Use only bit number.

2009-10-24  Jan Hubicka  <>

	* ipa-reference.c (check_call): Noreturn notrhow calls do not write
	to memory.
	(analyze_function): When analyzing noreturn nothrow call, do not
	compute written stats; free bitmaps of vars early if possible.
	(generate_summary): Only update bitmaps if computed.
	(propagate): Only dump bitmaps if computed.
	(ipa_reference_read_summary): Fix pasto.

2009-10-24  Eric Botcazou  <>

	* tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
	(aliasing_component_refs_p): ...this.  Return true if there is no
	common base and the base access types have the same alias set.
	(indirect_ref_may_alias_decl_p): Adjust for above renaming.
	(indirect_refs_may_alias_p): Likewise.

2009-10-23  Joseph Myers  <>

	PR c/40033
	* c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in

2009-10-23  Michael Meissner  <>

	PR target/41787
	* config/rs6000/rs6000.c (struct machine_function): Add
	vsx_or_altivec_used_p to record if vector types are used.
	(rs6000_expand_to_rtl_hook): Rename from
	rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
	any vector operations, so if there are, we can set VRSAVE to
	non-zero when only floating point vector registers are used.
	(TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
	(rs6000_check_vector_mode): Inner function to check if vector
	types are used in the code.
	(compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
	vector instructions are used.

	* config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
	Indicate that VSX registers which overlap floating point
	registers, can't be used across a call, since the ABI only states
	the scalar part of the register will be saved and restored.

2009-10-23  Joseph Myers  <>

	PR c/41673
	* alias.c (get_alias_set): Call langhook before returning 0 for
	types with structural equality.
	* c-common.c (c_common_get_alias_set): Use alias set of element
	type for arrays with structural comparison.

2009-10-23  Richard Guenther  <>

	PR middle-end/41805
	* cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and

2009-10-23  Richard Guenther  <>

	PR tree-optimization/41778
	* tree-ssa-pre.c (do_regular_insertion): Only insert if a
	redundancy along a path in the CFG we want to optimize for speed
	is going to be removed.
	(execute_pre): Do partial-PRE only if the function is to be
	optimized for speed.
	(gate_pre): Do not turn off all of PRE when not optimizing a
	function for speed.

2009-10-23  Kaveh R. Ghazi  <>

	* builtins.c (fold_builtin_cabs): Use validate_arg().
	(fold_builtin_cexp): Fix if-logic.
	(fold_builtin_1): Check subtype for BUILT_IN_CIMAG.

2009-10-22  Jeff Law  <>

	* ira-lives.c (process_single_reg_class_operands): Update the
	hard reg costs for all the hard registers desired by the
	single reg class operand.

2009-10-22  Richard Sandiford  <>

	* simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
	for rtxes that aren't handled specially.

2009-10-22  Richard Sandiford  <>

	* rtl.h (shallow_copy_rtvec): Declare.
	* rtl.c (shallow_copy_rtvec): New function.
	* cselib.c (cselib_subst_to_values): Use it.  Only modify an
	rtx field if the subrtx has changed.

2009-10-22  Anatoly Sokolov  <>

	* config/m32c/m32c.c (m32c_function_value_regno_p): New function.
	(m32c_function_value): Make static, add new 'outgoing' argument.
	(m32c_libcall_value): Make static, add new 'fun' argument.
	* config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
	(FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
	* config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
	(m32c_function_value, m32c_libcall_value): Delete declaration.

2009-10-22  Diego Novillo  <>

	* (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.

2009-10-22  Razya Ladelsky  <>

	* tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white

2009-10-22  Richard Guenther  <>

	* lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
	* lto-symtab.c (struct lto_symtab_entry_def): Add node member.
	(lto_symtab_merge): Do not merge cgraph nodes here.
	(lto_symtab_resolve_can_prevail_p): Simplify.
	(lto_symtab_resolve_symbols): Store cgraph node.
	(lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
	functions from the symtab.
	(lto_symtab_merge_cgraph_nodes_1): New function.
	(lto_symtab_merge_cgraph_nodes): Likewise.

2009-10-22  Richard Guenther  <>

	PR lto/41791
	* lto-streamer-out.c (lto_output_location): Stream the
	system header flag.
	* lto-streamer-in.c (lto_input_location): Likewise.

2009-10-22  Razya Ladelsky  <>

	* cfgloopmanip.c (duplicate_subloops): Export.
	* tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
	(transform_to_exit_first_loop): Duplicate bbs starting from
	header up to loop->latch instead of exit->src.
	Initialize control variable to the correct number of iterations.
	(gather_scalar_reductions): Do not register double reductions.
	(parallelize_loops): Dump which loop is tested.
	Indicate whether the parallelized loop is inner or not.
	Remove the innermost-loop requirement.
	* cfgloop.h (duplicate_subloops): Export.
	* tree-cfg.c (add_phi_args_after_redirect): New function.
	(gimple_duplicate_sese_tail): Remove the no-subloops constraint.
	Call duplicate_subloops.
	Update number of iterations at the exit condition.
	Don't redirect nexits always to the loop exit.
	Redirect copied edges from latch to the loop exit.

2009-10-22  Jan Hubicka  <>

	* ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
	flag_ltrans check.
	* ipa-inline.c (cgraph_mark_inline_edge,
	cgraph_decide_inlining, inline_read_summary): Disable indirect
	inlining for WPA for time being.

	PR tree-optimize/40556
	* ipa-inline.c (cgraph_early_inlining): Fix iterations condition.

2009-10-22  Richard Guenther  <>

	* lto-streamer.h (lto_symtab_clear_resolution): Remove.
	* lto-symtab.c (lto_symtab_clear_resolution): Likewise.

2009-10-22  Jan Hubicka  <>

	PR lto/41730
	* ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
	global vars.
	(check_call): Handle only indirect calls.
	(propagate_bits): Update comment.
	(write_node_summary_p): Turn bogus check to assert.
	(ipa_reference_write_summary): Stream calls_read_all properly.
	(ipa_reference_read_summary): Stream in calls_read_all properly.
	(read_write_all_from_decl): New function.
	(propagate): Handle OVERWRITABLE nodes and external calls here.
	* ipa-pre-const.c (check_call): In IPA mode handle indirect
	calls only.
	(analyze_function): Do not check visibility here.
	(add_new_function): We summary OVERWRITABLE too.
	(generate_summary): Stream OVERWRITABLE nodes too.
	(propagate): Handle external calls and OVERWRITABLE nodes here.
	(local_pure_const): Check visibility here.

2009-10-22  Jan Hubicka  <>

	* ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
	(pass_ipa_cp): Register them.
	(ipcp_init_stage): Analyze all functions for whopr/lto.
	(ipcp_propagate_stage): Skip external calls.
	(ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
	* ipa-reference.c (write_node_summary_p): Fix thinko about
	* cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
	when in ltrans, skip executing of ipa passes since everything
	should've been done.
	* ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
	(inline_generate_summary): Likewise.
	(inline_read_summary): New function.
	(inline_write_summary): New function.
	(pass_ipa_inline): Register new hooks.
	* ipa-prop.c: Inlcude lto-streamer.h
	(ipa_edge_args_vector): Update declaration.
	(ipa_count_arguments, ipa_compute_jump_functions,
	ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
	(ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
	ipa_read_node_info): New static functions.
	(ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
	(duplicate_array): Use xmalloc.
	(duplicate_ggc_array): New.
	(ipa_edge_duplication_hook): Use it.
	(ipa_update_after_lto_read): New function.
	* ipa-prop.h (ipa_prop_write_jump_functions,
	ipa_prop_read_jump_functions): Declare.
	(ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
	jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
	(ipa_edge_args_vector): Move into GGC.
	(ipa_check_create_edge_args): Update.
	(ipa_update_after_lto_read): New.
	* passes.c (ipa_write_summaries_1): When in wpa, do not write
	(ipa_read_summaries): When in ltrans, so not read summaries.
	* lto-streamer.c (lto_get_section_name): Add
	* lto-streamer.h (LTO_section_jump_functions): New section.
	(produce_asm): Declare.
	* lto-cgraph.c (output_cgraph): Output edges in reverse order.
	* lto-streamer-out.c (produce_asm): Export.
	* lto-streamer-in.c: Include tree-pass.h
	(input_function): Free dominance info when done.
	(lto_read_body): Push ipa_inline in ltrans stage.
	* gengtype.c (open_base_files): Add ipa-prop.h into includes.
	* (GTFILES): Add ipa-prop.h

2009-10-22  Matthias Klose  <>

	* doc/install.texi: Document --enable-browser-plugin.

2009-10-21  Vladimir Makarov  <>

	* doc/invoke.texi (fira-loop-pressure): Update default value.
	* opts.c (decode_options): Remove default value setting for
	* config/ia64/ia64.c (ia64_override_options): Set
	flag_ira_loop_pressure up for -O3.
	* config/rs6000/rs6000.c (rs6000_override_options): Ditto.

2009-10-21  Sebastian Pop  <>

	PR tree-optimization/41497
	* tree-scalar-evolution.c (analyze_evolution_in_loop): Return
	chrec_dont_know if the evolution function returned by follow_ssa_edge
	is constant in the analyzed loop and is not compatible with the
	initial value before the loop.
	* tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.

2009-10-21  Joseph Myers  <>

	* config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.

2009-10-21  Jakub Jelinek  <>

	PR other/25507
	* doc/invoke.texi: Document -print-multi-os-directory.

2009-10-21  Jack Howarth  <>

	PR c++/41313
	* gcc/config/darwin10.h: Use default_emit_unwind_label.
	* gcc/config/darwin.c: Disable -freorder-blocks-and-partition
	when darwin_emit_unwind_label is used.

2009-10-21  Eric Botcazou  <>

	* tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
	order of checks.

2009-10-20  Richard Henderson  <>

	* tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
	before emit_post_landing_pad.

2009-10-20  Adam Nemet  <>

	* config/mips/mips.c (mips_binary_cost): Add new argument speed.
	Use when calling rtx_costs.
	(mips_rtx_costs): Fix formatting.  Use argument speed rather than the
	global optimize_size.  Pass speed to mips_binary_cost.

2009-10-20  Jakub Jelinek  <>

	* config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead

2009-10-20  Richard Sandiford  <>

	* rtl.h (simplify_replace_fn_rtx): Declare.
	(wrap_constant, unwrap_constant): Delete.
	* cfgexpand.c (unwrap_constant, wrap_constant): Delete.
	(expand_debug_expr): Don't call wrap_constant.
	* combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
	(auto_adjust_pair): Fold into...
	(propagate_for_debug_subst):  Only define for AUTO_INC_DEC.
	Just return a new value.
	(propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
	otherwise use simplify_replace_rtx.
	* cselib.c (wrap_constant): Reinstate old definition.
	(cselib_expand_value_rtx_1): Don't wrap constants.
	* gcse.c (try_replace_reg): Don't use copy_rtx in the call to
	(bypass_block): Fix formatting in calls to simplify_replace_rtx.
	* reload1.c (reload): Skip all uses for an insn before adjusting it.
	Use simplify_replace_rtx.
	* simplify-rtx.c (simplify_replace_fn_rtx): New function,
	adapted from...
	(simplify_replace_rtx):  Turn into a wrapper for
	(simplify_unary_operation): Don't unwrap CONSTs.
	* var-tracking.c (check_wrap_constant): Delete.
	(vt_expand_loc_callback): Don't call it.
	(vt_expand_loc): Likewise.

2009-10-20  Pascal Obry  <>
	    Eric Botcazou  <>

	* config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.

2009-10-20  Michael Matz  <>

	* loop-invariant.c (create_new_invariant): Use different magic number.

2009-10-20  Richard Earnshaw  <>

	PR target/39247
	* arm.c (arm_override_options): Forcibly disable hot/cold block

2009-10-20  Alexandre Oliva  <>

	PR debug/41739
	* haifa-sched.c (try_ready): Skip debug deps updating speculation

2009-10-20  Richard Guenther  <>

	* ggc-page.c: Include cfgloop.h.
	(struct max_alignment): Drop long double, add void *.
	(extra_order_size_table): Add low non-power-of-two multiples
	of MAX_ALIGNMENT.  Drop small type-based entries, add
	tree_type, cgraph_node and loop.
	* alloc-pool.c (struct allocation_object_def): Drop long double
	aligning element.

2009-10-20  Jakub Jelinek  <>

	PR debug/41340
	* loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
	referenced just in DEBUG_INSNs.

2009-10-20  Richard Guenther  <>

	PR lto/41761
	* gimple.c (gimple_register_type): Make sure we register
	the types main variant first.

2009-10-20  Richard Guenther  <>

	* gimple.c (gimple_types_compatible_p): Simplify.  Move
	cheap checks before hashtable queries.  Add checks for

2009-10-20  Eric Botcazou  <>

	* tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
	without size or with size that can't be represented as a host integer.

2009-10-20  Alexandre Oliva  <>

	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
	the removal of a debug stmt as a significant change.

2009-10-20  Wolfgang Gellerich  <>

	* config/s390/ Added agen condition to operand
	forwarding bypasses.  Added bypass for early address generation
	use of int results.  Updated comments.

2009-10-20  Stefan Dösinger  <>

	* config/i386/i386.c: Remove signal.h #include.

2009-10-20  Jie Zhang  <>

	* simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
	* doc/rtl.texi: Document ss_abs.

2009-10-19  Jakub Jelinek  <>

	* c-common.c (c_parse_error): Handle CPP_UTF8STRING.
	* c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
	instead of C_LEX_RAW_STRINGS.
	(lex_string): Handle CPP_UTF8STRING.
	* c-parser.c (c_parser_postfix_expression): Likewise.
	* c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
	(C_LEX_STRING_NO_JOIN): ... this.

2009-10-19  Anatoly Sokolov  <>

	* config/cris/cris.c (cris_function_value, cris_libcall_value,
	cris_function_value_regno_p): New functions.
	(cris_promote_function_mode): Update comment.
	* config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
	(FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
	* config/cris/cris-protos.h (cris_function_value_regno_p): Declare.

2009-10-19  Jakub Jelinek  <>

	* unwind-dw2.c (execute_stack_op): Fix operand order for
	DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.

2009-10-19  Eric Botcazou  <>

	* gimple-low.c (struct lower_data): Add cannot_fallthru field.
	(lower_stmt) <GIMPLE_BIND>: Add comment.
	<GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
	and return.
	<GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
	Otherwise lower it and set cannot_fallthru to true.
	<GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
	<GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
	<GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
	to true for a noreturn call.  Do not remove statements.
	<GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
	Set cannot_fallthru to false on function exit.
	(gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.

2009-10-19  Andreas Krebbel  <>

	* config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.

2009-10-19  Andreas Krebbel  <>

	* config/s390/s390.c (s390_z10_optimize_cmp): Use
	next/prev_active_insn to skip DEBUG_INSNs as well.

2009-10-19  Joseph Myers  <>

	* config/arm/arm.c (output_move_neon): Use DImode in call to

2009-10-19  Matthias Klose  <>

	PR target/40134
	* config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.

2009-10-19  Jakub Jelinek  <>

	* cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.

2009-10-17  Andy Hutchinson  <>

	PR middle-end/41738
	* optabs.c (expand_binop): Make mode of shift count expression mode
	of shift count not target.
	Remove indent nit.

2009-10-17  Eric Botcazou  <>

	* tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
	case.  Force using values to replace references within the statement.
	(convert_local_reference_stmt): Likewise.

2009-10-17  Eric Botcazou  <>

	* gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
	remove a subsequent GOTO or RETURN statement.

2009-10-17  Andy Hutchinson  <>

	* config/ (*movqi): Add zero as equally preferable constraint
	as general register.
	(*movhi): Ditto.

2009-10-17  Eric Botcazou  <>

	* print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.

2009-10-17  Richard Guenther  <>

	* lto-streamer-in.c (lto_input_location): Try to reuse previous maps.

2009-10-17  Richard Guenther  <>

	* lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
	operands in COMPONENT_REFs.

2009-10-17  Anatoly Sokolov  <>

	* targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
	if not defined. Change type of second argument to const_rtx.
	(default_function_value): Call gcc_unreachable if FUNCTION_VALUE
	macro not defined.
	* targhooks.h (default_libcall_value): Update prototype.
	* target.h (struct gcc_target): Change type of second argument of
	libcall_value to const_rtx.
	* config/arm/arm.c (arm_libcall_value): Change type of second argument
	to const_rtx.
	(arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
	* doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.

2009-10-17  Jakub Jelinek  <>

	PR debug/40521
	* debug.h (struct gcc_debug_hooks): Add assembly_start hook.
	* cgraphunit.c (cgraph_optimize): Call it.
	* dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
	(dwarf2out_assembly_start): ... here.  New hook.
	(dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
	* debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
	* sdbout.c (sdb_debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
	(vmsdbgout_assembly_start): New hook.

2009-10-17  Alexandre Oliva  <>

	* rtl.h (RTL_LOCATION): Fix typo.

2009-10-17  Alexandre Oliva  <>

	* print-rtl.c (print_rtx): Print locators in asm_operands
	and asm_input.

2009-10-17  Alexandre Oliva  <>

	PR debug/41535
	* sched-deps.c (depl_on_debug_p): New.
	(attach_dep_link): Reject debug deps before nondebug deps.
	(add_to_deps_list): Insert debug deps after nondebug deps.
	(sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
	(sd_add_dep): Do not reject debug deps.
	(add_insn_mem_dependence): Don't count debug deps.
	(remove_from_deps): Likewise.
	(sched_analyze_2): Set up mem deps on debug insns.
	(sched_analyze_insn): Record reg uses for deps on debug insns.
	* haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
	try_ready nondebug insn after debug insn.
	* ddg.c (create_ddg_dep_from_intra_loop_link,
	create_ddg_dep_no_link): Don't reject debug deps.

2009-10-16  Richard Guenther  <>

	* lto-symtab.c (merge_incomplete_and_complete_type): Remove.
	(maybe_merge_incomplete_and_complete_type): Likewise.
	(lto_symtab_merge): Do not call them.  Do not warn for
	complete vs. incomplete compatible types.
	(lto_symtab_merge_decls_2): Simplify.
	* gimple.c (gimple_force_type_merge): Remove.
	(gimple_types_compatible_p): Make it static.
	* gimple.h (gimple_force_type_merge): Remove.
	(gimple_types_compatible_p): Likewise.

2009-10-16  Jakub Jelinek  <>

	* dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
	DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.

2009-10-16  Richard Guenther  <>

	PR tree-optimization/41728
	* tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
	if fold_stmt did anything.

2009-10-16  Richard Guenther  <>

	PR lto/41715
	* lto-streamer-in.c (lto_input_tree_ref): Revert last change.
	(maybe_fixup_handled_component): New function.
	(input_gimple_stmt): Fixup mismatched decl replacements.

2009-10-16  Richard Guenther  <>

	PR lto/41713
	* lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
	the same as VAR_DECL.

2009-10-16  Richard Guenther  <>

	* gimple.c (iterative_hash_gimple_type): For integer types
	also hash their minimum and maximum values and the string flag.
	For array types hash their domain and the string flag.

2009-10-16  Richard Guenther  <>

	* gimple.c (gimple_types_compatible_p): Restrict completing
	types to record or unions.  Simplify completion.
	Do not merge records or unions with different
	(iterative_hash_gimple_type): Restrict non-recursing into
	pointer targets for records and unions.

2009-10-15  Jakub Jelinek  <>

	PR debug/41717
	* cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
	* dwarf2out.c (mem_loc_descriptor): Don't handle
	punt if it is not lowpart subreg or if inner mode isn't

2009-10-16  Andreas Krebbel  <>

	* config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
	investigating previous or next insns.

2009-10-16  Eric Botcazou  <>

	* tree-sra.c (build_ref_for_offset_1): Update comment.

2009-10-16  Wolfgang Gellerich  <>

	* config/s390/ (atype): Added missing values.

2009-10-15  John David Anglin  <>

	PR target/41702
	* (casesi): Use sign extended index in call to gen_casesi64p.
	(casesi64p): Update pattern to reflect above.

2009-10-15  Steve Ellcey  <>

	PR rtl-optimization/41697
	* sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.

2009-10-15  Michael Meissner  <>

	PR target/23983
	* config/rs6000/ Update copyright year.
	* config/rs6000/ Ditto.

	* config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.

	* config/rs6000/rs6000.c (rs6000_builtin_decls): Change
	(builtin_classify): New static vector to classify various builtins
	to get the tree attributes correct.
	(def_builtin): Set the attributes of builtins based on what the
	builtin does (i.e. memory operation, floating point, saturation
	need special attributes, others are pure functions).

	* config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
	the builtins.
	(enum rs6000_builtins): Include rs6000-builtin.def to define the
	builtins.  Change the end marker to MAX_RS6000_BUILTINS from
	(rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to

	* config/rs6000/rs6000-builtin.def: New file that combines the
	builtin enumeration name and attributes.

2009-10-15  H.J. Lu  <>

	* config/i386/linux.h (ASM_SPEC): Add --32.

2009-10-15  Jakub Jelinek  <>

	* dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
	and DW_TAG_template_alias.
	(dwarf_attr_name): Handle DW_AT_main_subprogram,
	DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
	DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
	DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
	DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
	and DW_AT_GNU_odr_signature.
	(dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
	DW_FORM_flag_present and DW_FORM_ref_sig8.
	(output_signature): Only print name on the first byte.
	(output_die): Likewise for dw_val_class_data8.

2009-10-15  Alexander Monakov  <>

	* doc/invoke.texi: Clarify that most optimizations are not enabled
	without -O.

2009-10-15  Richard Guenther  <>

	PR lto/41668
	* gimple.c (compare_type_names_p): Handle anonymous names
	differently based on new mode argument.
	(gimple_types_compatible_p): For structs also compare the tags.
	(iterative_hash_type_name): Rename to ...
	(iterative_hash_name): ... this.  Hash all names.
	(iterative_hash_gimple_type): Fix hashing the struct tag of
	pointer targets.  Hash field decl names.

2009-10-15  Richard Guenther  <>

	PR lto/41669
	* gimple.c (gimple_get_alias_set): Avoid recursing on
	invalid type topology.

2009-10-15  Andrew Pinski  <>

	* config/spu/spu.c (get_branch_target): Use extract_asm_operands.

2009-10-15  Richard Guenther  <>

	* tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.

2009-10-15  Jakub Jelinek  <>

	* config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
	add --with-tune{,-32,-64} configured default for -mtune if explicit
	-mcpu is used.

2009-10-14  Daniel Gutson  <>

	* config/arm/ (neon_vshll_n<mode>): Checking Bounds fixed.

2009-10-14  DJ Delorie  <>

	* config/h8300/h8300.c (F): New.
	(Fpa): New.
	(h8300_emit_stack_adjustment): Call them.
	(push): Likewise.
	(h8300_push_pop): Likewise.
	(h8300_expand_prologue): Likewise.
	* config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.

2009-10-14  Jakub Jelinek  <>

	* stor-layout.c (place_field): Don't emit -Wpadded warnings for
	fields in builtin structs.
	(finalize_record_size): Likewise.

2009-10-14  Richard Guenther  <>

	* gimple.c (gtc_ob): New global.
	(struct type_pair_d): Replace pointers with type UIDs.
	(type_pair_hash): Adjust.
	(type_pair_eq): Likewise.
	(lookup_type_pair): Likewise.  Allocate from an obstack.
	(gimple_force_type_merge): Adjust.
	(gimple_types_compatible_p): Likewise.
	(free_gimple_type_tables): Free the obstack.

2009-10-14  Jakub Jelinek  <>

	* tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
	stmts setting DEBUG_EXPR_DECLs.

	* cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
	Don't crash if mode1 is VOIDmode.

2009-09-26  Vladimir Makarov  <>

	* params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
	* params.h (IRA_LOOP_RESERVED_REGS): New.
	* tree-pass.h (pass_subregs_of_mode_init,
	pass_subregs_of_mode_finish): Remove.
	* passes.c (pass_subregs_of_mode_init,
	pass_subregs_of_mode_finish): Remove.
	(pass_reginfo_init): Move before loop optimizations.
	* config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
	* common.opt (fira-loop-pressure): New.
	* toplev.h (flag_ira_loop_pressure): New.
	* rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
	* reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
	Make external and void type functions.
	(gate_subregs_of_mode_init, pass_subregs_of_mode_init,
	pass_subregs_of_mode_finish): Remove.
	* ira-costs.c (init_costs): Call init_subregs_of_mode.
	* regmove.c: Include ira.h.
	(regmove_optimize): Call ira_set_pseudo_classes after IRA based
	register pressure calculation in loops.
	* loop-invariant.c: Include REGS_H and ira.h.
	(struct loop_data): New members max_reg_pressure, regs_ref, and
	(struct invariant): New member orig_regno.
	(curr_loop): New variable.
	(find_exits): Initialize regs_ref and regs_live.
	(create_new_invariant): Initialize orig_regno.
	(get_cover_class_and_nregs): New.
	(get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
	array.  Add code for flag_ira_loop_pressure.
	(gain_for_invariant): Make new_regs an array.  Add code for
	(best_gain_for_invariant): Ditto.
	(set_move_mark): New parameter gain.  Use it for debugging output.
	(find_invariants_to_move): Make regs_needed and new_regs an array.
	Add code for flag_ira_loop_pressure.
	(move_invariant_reg): Set up orig_regno.
	(move_invariants): Set up reg classes for pseudos for
	(free_loop_data): Clear regs_ref and regs_live.
	(curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
	get_regno_cover_class, change_pressure, mark_regno_live,
	mark_regno_death, mark_reg_store, mark_reg_clobber,
	mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
	(move_loop_invariants): Calculate pressure.  Initialize curr_loop.
	* ira.c (ira): Call ira_set_pseudo_classes after IRA based
	register pressure calculation in loops if new regs were added.
	Call finish_subregs_of_mode.
	* opts.c (decode_options): Set up flag_ira_loop_pressure.
	* (loop-invariant.o): Add ira.h.
	(regmove.o): Ditto.
	* doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
	* doc/tm.texi (STACK_REG_COVER_CLASS): Describe.

2009-10-14  Richard Guenther  <>

	* lto-symtab.c (lto_symtab_compatible): Fold in ...
	(lto_symtab_merge): ... here.  Rewrite both to take the
	prevailing and a to-be-merged entry and to queue diagnostics properly.
	(lto_symtab_resolve_replaceable_p): New predicate for
	symbol resolution.
	(lto_symtab_resolve_can_prevail_p): Likewise.
	(lto_symtab_resolve_symbols): Rewrite.  Fold in code that
	handles merging commons by choosing the largest decl.  Fold
	in code that gives ODR errors.
	(lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
	diagnostics here.
	(lto_symtab_merge_decls_1): Re-structure.  Deal with the
	case of no prevailing decl here.  Diagnose mismatches
	in object types here.  Drop all but the prevailing decls.
	(lto_symtab_prevailing_decl): Return the single prevailing decl.
	* lto-streamer-in.c (lto_input_tree_ref): Deal with
	VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.

2009-10-14  Richard Guenther  <>

	PR lto/41521
	* lto-streamer-in.c (input_bb): Replace debug stmts with
	nops instead of dropping them.

2009-10-14  Nick Clifton  <>

	* gcc/doc/extended.texi: Replace the dash character with @minus{}
	in situations where it is being used as a minus symbol.
	* gcc/doc/tm.texi: Likewise.
	* gcc/doc/md.texi: Likewise.

2009-10-14  Jakub Jelinek  <>

	PR preprocessor/41543
	* input.h (BUILTINS_LOCATION): Change to 1 from 2.
	* tree.c: Include intl.h.
	(expand_location): Handle BUILTINS_LOCATION.
	* (tree.o): Depend on intl.h.

	PR debug/41695
	* dwarf2out.c (dwarf2out_var_location): Always clear
	last_postcall_label when changing last_label.

2009-10-14  Pascal Obry  <>

	(process_command): Handle -E as done with -c and -S.  Do not add
	the target executable suffix to the output file when -E is used.
	(main): Adjust error message accordingly.

2009-10-14  Alexandre Oliva  <>

	PR debug/41343
	PR debug/41447
	PR debug/41264
	PR debug/41338
	* tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
	decl with rtl.
	(tree_code_size): Likewise.

2009-10-13  Kaveh R. Ghazi  <>

	* builtins.c (fold_builtin_1): Support complex "arc" functions.
	* real.h (HAVE_mpc_arc): Define.

2009-10-14  Kaz Kojima  <>

	* config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
	(struct builtin_description): Add fndecl field.
	(bdesc): Remove const qualifier.  Update initializer.
	(sh_media_init_builtins): Remove const qualifier for d.  Record
	the result of add_builtin_function to the fndecl field.
	(sh_builtin_decl): New.
	(sh_media_builtin_decl): New.

2009-10-14  Hans-Peter Nilsson  <>

	PR target/38948
	* config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
	requests between special registers.

2009-10-13  Eric Botcazou  <>

	* dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.

2009-10-13  Richard Henderson  <>

	PR tree-optimization/41377
	* tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
	(cleanup_empty_eh_merge_phis): New change_region parameter;
	pass it on to redirect_eh_edge_1.  Update callers.
	(cleanup_empty_eh_unsplit): Don't require an existing EH label
	at the destination block.

2009-10-13  Basile Starynkevitch  <>

	* passes.c (register_pass): Replaced gcc_unreachable by
	fatal_error on failure. Mentions plugins in comments & messages.

2009-10-13  Jakub Jelinek  <>

	PR target/41693
	* rtl.h (DEBUG_EXPR_TREE_DECL): Define.
	* sched-vis.c (print_value): Use it.
	* cselib.c (cselib_hash_rtx): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* cfgexpand.c (expand_debug_rtx): Likewise.
	* var-tracking.c (vt_expand_loc_callback): Likewise.

2009-10-13  Richard Guenther  <>

	PR lto/41565
	* opts.c (handle_option): Split out code to handle setting
	the options flag var ...
	(set_option): ... here.
	* opts.h (set_option): Declare.
	* lto-opts.c (register_user_option_p): Include -fexceptions
	and all position independent code variants.
	(handle_common_option): Remove.
	(lto_reissue_options): Use set_option.

2009-10-13  Martin Jambor  <>

	PR tree-optimization/41661
	* ipa-prop.c (compute_complex_pass_through): Allow only operations
	that are tcc_comparisons or do not change the type in any
	un-usleless way.
	* ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
	folding tcc_comparison operations.

2009-10-13  Andreas Krebbel  <>

	* config/s390/s390.c (s390_encode_section_info): Handle BLKmode

2009-10-12  Alexandre Oliva  <>

	PR debug/41343
	PR debug/41447
	PR debug/41264
	PR debug/41338
	* tree.def (DEBUG_EXPR_DECL): New.
	* rtl.def (DEBUG_EXPR): New.
	* gengtype.c (adjust_field_rtx_def): Handle it.
	* tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
	(insert_debug_temp_for_var_def): ... this.  Drop support for
	moving.  Take iterator for def stmt; insert debug stmt before it.
	Scan early for use count and kind in debug stmts.
	(propagate_defs_into_debug_stmts): Rename to...
	(insert_debug_temps_for_defs): ... this.  Likewise.
	* tree.h (DEBUG_TEMP_UID): New.
	* tree.c (next_debug_decl_uid): New.
	(make_node_stat): Count debug decls separately.
	(copy_node_stat): Likewise.
	* cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
	* var-tracking.c (dv_is_decl_p): Recognize it.
	(track_expr_p): Track expanded DEBUG_EXPR_DECLs.
	(vt_expand_loc_callback): Expand DEBUG_EXPRs.
	(emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
	* cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
	(cselib_hash_rtx): Likewise.
	(cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
	* tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
	debug bind stmts.
	* emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
	(copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
	* rtl.c (copy_rtx): Likewise.
	(rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
	* print-rtl.c (print_rtx): Likewise.
	* sched-vis.c (print_value): Likewise.
	(print_insn): Handle DEBUG_EXPR_DECL.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
	* gimple-iterator (gsi_replace): Check for same lhs.
	(gsi_remove): Insert debug temps.
	* tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
	(move_computations_stmt): Drop explicit propagation into debug stmts.
	(rewrite_bittest): Likewise.  Use gsi_remove for propagation.
	* tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
	* tree-ssa-sink.c (statement_sink_location): Likewise.
	* tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
	* tree-ssanames.c (release_ssa_name): Adjust for rename.
	* tree-flow.h: Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
	debug temps without values.
	(eliminate_unnecessary_stmts): Don't discard just-inserted
	debug stmts.

2009-10-12  Hans-Peter Nilsson  <>

	PR target/26515
	* config/cris/ (andu): Check that operand 1 is one of the
	general registers.  Fix typo in head comment.

2009-10-12  Stefan Dösinger  <>

	* config/i386/ (vswapmov): New.
	* config/i386/i386.c (ix86_handle_fndecl_attribute): New.
	(ix86_function_ms_hook_prologue): New.
	(ix86_expand_prologue): Handle ms_hook_prologue attribute.
	* Test for swap suffix support in as.
	* configure: Rebuild.

2009-10-12  Jakub Jelinek  <>

	PR target/41680
	* config/i386/ (split after *testqi_ext_3_rex64): Only narrow
	paradoxical subregs to prevent partial register stalls if the inner
	mode is integer mode.

2009-10-12  Uros Bizjak  <>

	* config/i386/ (*setcc_<mode>_2): Remove insn pattern.

2009-10-12  Dodji Seketeli  <>

	PR c++/41570
	* gcc/dwarf2out.c (template_parameter_pack_die,
	gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.

2009-10-12  Alexandre Oliva  <>

	PR debug/41616
	* tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
	on updates too.
	(maybe_register_def): Likewise.  Take stmt iterator.
	(rewrite_update_stmt): Take stmt iterator and pass it on.
	(rewrite_update_enter_block): Pass stmt iterator.

2009-10-11  Andrew Pinski  <>

	* config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
	(spu_builtin_decl): New function.

2009-10-12  Uros Bizjak  <>

	* config/i386/ (SWIM): New mode iterator.
	(mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
	using SWIM mode iterator.
	(x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
	patterns using SWI48 mode iterator.
	(*x86_mov<mode>cc_0_m1_se):  Macroize insn from
	*x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
	(*x86_mov<mode>cc_0_m1_neg): New insn pattern.
	(*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
	patterns using SWI248 mode iterator.
	* config/i386/i386.c (ix86_expand_int_movcc): Update the call to
	gen_x86_movdicc_0_m1_rex64 for renamed function

2009-10-11  Jose Ruiz  <>
	    Eric Botcazou  <>

	PR target/33743
	* config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
	* config/sparc/sol2-unwind.h: New file.

2009-10-11  Olivier Hainque  <>
	    Eric Botcazou  <>

	PR target/33743
	* config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
	* config/i386/sol2-unwind.h: New file.

2009-10-11  H.J. Lu  <>

	PR target/41665
	* config/i386/ (addsi_1_zext): Get the proper second
	operand for lea.

2009-10-11  Richard Sandiford  <>

	* simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
	all OLD_RTXes, not just REGs.  Use copy_rtx to create the
	replacement value.

2009-10-11  Richard Guenther  <>

	* gimple.c (iterative_hash_type_name): Do not handle special
	anonymous names.

2009-10-11  Uros Bizjak  <>

	* config/i386/ (*setcc_di_1): New insn_and_split pattern.
	(*setcc_si_1_and): Ditto.
	(*setcc_si_1_movzbl): Ditto.
	(*setcc_<mode>_2): Ditto.
	(*setcc_qi): Rename from *setcc_1.
	(*setcc_qi_slp): Rename from *setcc_2.

	(*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
	(*zero_extendqisi2_movzbw_and splitter): Ditto.

	* config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
	"if" condition, there is already assert with reload_completed present.

2009-10-11  Gerald Pfeifer  <>

	* plugin.c (try_init_one_plugin): Improve constness of variable err.

2009-10-10  Gerald Pfeifer  <>

	* doc/install.texi (Final install): Refer to for bug reporting.

2009-10-10  Peter Bergner  <>

	* Add test for dci instruction.
	* configure: Regenerate.
	* Likewise.
	* config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
	* doc/invoke.texi: Add cpu_type 476 and 476fp.
	(-mmulhw): Add 476 to description.
	(-mdlmzb): Likewise.
	* config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
	* config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
	(processor_target_table): Add 476 and 476fp entries.
	(rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
	(rs6000_issue_rate): Add CPU_PPC476.
	* config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
	(ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
	(processor_type): Add PROCESSOR_PPC476.
	(EXTRA_SPECS): Add asm_cpu_476 string.
	* config/rs6000/ (define_attr "type"): Add isel attribute.
	(define_attr "cpu"): Add ppc476.
	Update comments for 476.
	(isel_signed, isel_unsigned): Change to use "isel" type attribute.
	* config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
	Update copyright year.
	* config/rs6000/ New file.
	* config/rs6000/ Add description for "isel" attribute.
	Update copyright year.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.
	* config/rs6000/ Likewise.

2009-10-10  Richard Guenther  <>

	PR tree-optimization/41654
	* tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
	a cond expr before calling gimple_cond_set_condition_from_tree.
	(ifcombine_iforif): Likewise.

2009-10-09  Ian Lance Taylor  <>

	* Use AC_SEARCH_LIBS to find dlopen.
	* configure: Rebuild.

2009-10-09  Neil Vachharajani <>

	* doc/cpp.texi (Other Directives): Do not list #ident and #sccs as

2009-10-09  Richard Guenther  <>

	PR lto/41638
	* target-def.h (TARGET_BUILTIN_DECL): Define.
	* target.h (struct gcc_target): Add builtin_decl target hook.
	* doc/tm.texi (TARGET_BUILTIN_DECL): Document.
	* lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
	target builtins.
	* lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
	not gcc_unreachable.
	(lto_output_builtin_tree): Sorry if the target does not support
	streaming target builtins.
	* config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
	(rs6000_builtin_decl): New function.
	* config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
	(ix86_builtin_decl): New function.

2009-10-09  Jakub Jelinek  <>

	PR preprocessor/41445
	* c-ppoutput.c (do_line_change): New function.
	(cb_line_change): Use it.
	(scan_translation_unit): Call do_line_change if
	avoid_paste or PREV_WHITE and token location is on a different line
	than print.src_line.

	PR debug/40521
	* dwarf2out.c (dwarf2out_init): Test whether
	HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
	it is defined.

	PR rtl-optimization/41646
	* calls.c (expand_call): For BLKmode types returned in registers
	avoid likely spilled hard regs in copy_blkmode_from_reg generated

2009-10-09  Richard Guenther  <>

	PR tree-optimization/41634
	* tree-ssa-dom.c (remove_local_expressions_from_table): Assert
	we remove the correct elements.
	(optimize_stmt): Make sure to update stmt operands before
	optimizing redundancies.

2009-10-09  Andreas Krebbel  <>

	* config/s390/ ("prefetch"): Remove stcmh for prefetching.

2009-10-09  Richard Guenther  <>

	PR driver/41637
	* lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
	(lto_wrapper_exit): New function.
	(fatal): Use it.
	(fatal_perror): Likewise.
	(fork_execute): Use global args_name, do not free it.
	(run_gcc): Use global ltrans_output_file, flto_out, do not free them.
	* lto-streamer.h: Remove duplicate prototypes.

2009-10-09  Richard Guenther  <>

	* cgraph.c (cgraph_create_edge): Check for NULL call_stmt
	before calling stmt_can_throw_external.

2009-10-09  Eric Botcazou  <>

	PR tree-optimization/40071
	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
	pointer if the original data reference doesn't conflict with the
	created vector data reference.  Fix long line.

2009-10-09  Uros Bizjak  <>

	* config/i386/ (any_div): New code iterator.
	(u): Handle div and udiv.
	(sgnprefix): Ditto.
	(<u>divqi3): Macroize insn from {,u}divqi3  using any_div
	code iterator.
	(lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
	lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
	(lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
	lceil<mode>{si,di}2 patterns using SWI48 mode iterator.

2009-10-08  Joseph Myers  <>

	* gcc.c (main): Remove trailing "." from diagnostics.

2009-10-08  Cary Coutant  <>

	Add support for debugging with ICF (Identical Code Folding).
	* calls.c (debug.h): New #include.
	(emit_call_1): Call virtual_call_token debug hook.
	* common.opt (-fenable-icf-debug): New option.
	* dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
	locations in the source).
	(poc_label_num): New variable.
	(dcall_entry, vcall_entry): New typedefs.
	(dcall_table, vcall_table): New variables.
	(struct vcall_insn): New type.
	(vcall_insn_table): New variable.
	(size_of_dcall_table): New function.
	(output_dcall_table): New function.
	(size_of_vcall_table): New function.
	(output_vcall_table): New function.
	(dwarf2out_direct_call): New function.
	(vcall_insn_table_hash): New function.
	(vcall_insn_table_eq): New function.
	(dwarf2out_virtual_call_token): New function.
	(dwarf2out_virtual_call): New function.
	(dwarf2out_init): Allocate new tables and sections.
	(prune_unused_types): Mark DIEs referenced from direct call table.
	(dwarf2out_finish): Output direct and virtual call tables.
	* final.c (final_scan_insn): Call direct_call and virtual_call
	debug hooks.
	* debug.h (struct gcc_debug_hooks): Add direct_call,
	virtual_call_token, virtual_call hooks.
	(debug_nothing_uid): New function.
	* debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
	(debug_nothing_uid): New function.
	* dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
	(xcoff_debug_hooks): Likewise.
	* sdbout.c (sdb_debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
	* doc/invoke.texi (-fenable-icf-debug): New option.

2009-10-08  Alexandre Oliva  <>

	PR debug/41353
	* regmove.c (regmove_backward_pass): Replace src with dst in the
	debug insn, and check for dst before rather than after.

2009-10-08  Janis Johnson <>

	* config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.

2009-10-08  Jan Hubicka  <>

	PR middle-end/41626
	* cgraphbuild.c (record_reference): When parameter DATA is NULL,
	do not mark cgraph nodes as needed.
	(record_references_in_initializer): Add new only_vars parameter.
	* cgraph.h (record_references_in_initializer): New parameter.
	* varasm.c (assemble_variable): Update call.
	* varpool.c (varpool_analyze_pending_decls): Always look for
	referenced vars.

2009-10-08  Anatoly Sokolov  <>

	* config/avr/avr.c (last_insn_address) Remove variable.
	(expand_prologue): Don't initialise last_insn_address variable.
	(final_prescan_insn): Don't output insn size.
	* config/avr/avr.opt (msize): Remove switch.
	* doc/invoke.texi (AVR Options): Remove documentation of -msize

2009-10-08  Adam Nemet  <>

	* combine.c (label_tick_ebb_start): Fix comment.
	(combine_instructions): Set label_tick and label_tick_ebb_start before
	calling setup_incoming_promotions.  Start them from 1.  Increment
	label_tick instead of deriving it from the BB index.  Rather than
	comparing ticks use the block from the previous iteration to decide
	whether to start a new EBB.  Remove empty lines before function.

2009-10-08  Michael Matz  <>

	PR middle-end/41573
	* builtins.c (fold_builtin_isascii): Use fold_build2.
	(fold_builtin_isdigit): Ditto.
	* except.c (duplicate_eh_regions_1): Tolerate NULL labels.
	* tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
	remove_useless_stmts_cond, remove_useless_stmts_tf,
	remove_useless_stmts_tc, remove_useless_stmts_bind,
	remove_useless_stmts_goto, remove_useless_stmts_label,
	remove_useless_stmts_1, remove_useless_stmts,
	pass_remove_useless_stmts): Remove.
	* tree-pass.h (pass_remove_useless_stmts): Don't declare.
	* passes.c (init_optimization_passes): Don't add
	* tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
	* tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
	static constants.
	* lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
	for static constants.
	* lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
	* lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.

2009-10-08  Richard Guenther  <>

	* gimple.c (free_gimple_type_tables): New function.
	* gimple.h (free_gimple_type_tables): Declare.

2009-10-07  Mark Heffernan  <>

	* ipa-prop.c (ipa_print_node_params) Only print
	names of named arguments.

2009-10-08  Rafael Avila de Espindola  <>

	* gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
	being statically linked.

2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.

2009-10-08  Jan Hubicka  <>

	PR bootstrap/41620
	* ipa.c (cgraph_externally_visible_p,
	whole_program_function_and_variable_visibility): Skip non-finalized

2009-10-08  Nick Clifton  <>

	* config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow

2009-10-08  Andreas Tobler  <>

	PR bootstrap/37739
	* Use config/x-cflags-O1 for powerpc FreeBSD.

2009-10-07  Joseph Myers  <>

	PR c/41182
	* c-common.c (c_fully_fold_internal): Strip nops from the result
	of recursive calls to c_fully_fold_internal.
	(c_wrap_maybe_const): New.
	(c_save_expr): Use c_wrap_maybe_const.
	* c-common.h (c_wrap_maybe_const): Declare.
	* c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
	build_binary_op): Use c_wrap_maybe_const.

2009-10-07  Kaveh R. Ghazi  <>

	* real.c: Fix comment to reflect actual exponent size.

2009-10-08  Ben Elliston  <>

	* config/rs6000/ Add FSF comment header.

2009-10-07  Uros Bizjak  <>

	* config/i386/ (any_extend): New code iterator.
	(u, s): New code attributes.
	(sgnprefix): Ditto.
	(DWIH): Rewrite as code iterator for SI and DI modes.
	(DWI): Rewrite as mode attribute.
	(dwi): New mode attribute.
	(di): Depend on SI mode and DI mode.
	(doubleint_general_operand): Remove mode attribute.

	(*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
	DWIH mode iterator.

	(*add<mode>3_doubleword): Use DWIH as the base mode iterator.
	(*sub<mode>3_doubleword): Ditto.

	(mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
	using SWIM248 mode iterator.
	(*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
	using SWI48 mode iterator.
	(<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
	patterns using DWIH mode iterator and any_extend code iterator.
	(<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
	using any_extend code iterator.
	(*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
	patterns using DWIH mode iterator and any_extend code iterator.
	(*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
	using any_extend code iterator.
	(<s>mul<mode>3_highpart): Macroize expander from
	{s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
	and any_extend code iterator.
	(*<s>muldi3_highpart_1): Macroize insn from
	*{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
	(*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
	patterns using any_extend code iterator.
	(*<s>mulsi3_highpart_zext): Macroize insn from
	*{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.

2009-10-07  Jakub Jelinek  <>

	* dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
	DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
	refering to a DIE with DW_AT_const_value.

2009-10-07  Vladimir Makarov  <>

	PR middle-end/22072
	* ira-lives.c (check_and_make_def_conflict): Process all operands.

2009-10-06  Jan Hubicka  <>

	* cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes

2009-10-06  Uros Bizjak  <>

	* config/i386/ (*lea_1_rex64, *lea_1, *lea_1_zext,
	*lea_2_rex64): Move before *add<mode>_1 pattern.

2009-10-07  Jan Hubicka  <>

	* collect2.c (main): Add -fno-whole-program.
	* gcc.c (set_collect_gcc_options): Do not remove whole program here.

2009-10-07  Jan Hubicka  <>

	* lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
	has no address taken.
	* cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
	never needed.
	(cgraph_clone_node): Clear externally_visible flag for clones.
	* cgraph.h (cgraph_only_called_directly_p,
	cgraph_can_remove_if_no_direct_calls_p): New predicates.
	* tree-pass.h (pass_ipa_whole_program_visibility): Declare.
	* ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
	(ipcp_initialize_node_lattices, ipcp_estimate_growth,
	ipcp_insert_stage): Likwise.
	* cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
	externally_visible flag.
	(verify_cgraph_node): Verify that inline clones look right.
	(process_function_and_variable_attributes): Do not set
	externally_visible flags.
	(ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
	been already run.
	* lto-cgraph.c (lto_output_node): Assert that inline clones are not
	* ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
	clear externally_visible when turning into inline clones
	(cgraph_mark_inline_edge): Use new predicates.
	(cgraph_estimate_growth): Likewise.
	(cgraph_decide_inlining): Likewise.
	* ipa.c (cgraph_postorder): Likewise.
	(cgraph_remove_unreachable_nodes): Likewise; sanity check
	that inline clones are not needed.
	(cgraph_externally_visible_p): New predicate.
	(function_and_variable_visibility): Add whole_program parameter;
	always set externally_visible flag; handle COMDAT function
	(local_function_and_variable_visibility): New function.
	(gate_whole_program_function_and_variable_visibility): New function.
	(whole_program_function_and_variable_visibility): New function.
	(pass_ipa_whole_program_visibility): New function.
	* passes.c  (init_optimization_passes): Add whole program visibility
	(do_per_function_toporder, function_called_by_processed_nodes_p): Do
	not care about needed/reachable flags.
	* varpool.c: Include flags.h
	(decide_is_variable_needed): When doing LTO assume whole-program mode.
	(varpool_finalize_decl): When we are in LTO read-back, all variables
	are analyzed.
	(varpool_analyze_pending_decls): Skip analyzis of analyzed vars.

2009-10-07  Andreas Krebbel  <>

	* config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and

2009-10-07  Andreas Krebbel  <>

	* config.gcc: Don't include the makefile fragments intended for
	* config/s390/fixdfdi.h: File removed.
	* config/s390/libgcc-glibc.ver: File removed.
	* config/s390/s390.h: Remove the fixdfdi.h hack.
	* config/s390/t-crtstuff: File moved to libgcc dir.
	* config/s390/t-linux: Likewise.
	* config/s390/t-tpf: libgcc specific parts removed.
	* config/s390/t-linux64: Likewise.

2009-10-06  Jerry Quinn  <>

	* (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
	(lto-compress.o): Likewise.

2009-10-07  Danny Smith  <>

	PR target/41512
	* config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
	dllexport to class members here.
	(i386_pe_determine_dllimport_p): Only check static class data for
	(i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
	* config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
	functions for vague linkage.
	(i386_pe_type_dllexport_p): Fix formatting.
	(maybe_add_dllexport) New function.
	(i386_pe_adjust_class_at_definition): Use it to propagate dllexport
	to class members.

2009-10-07  Ben Elliston  <>

	* config/rs6000/ Remove duplicated lines.

2009-10-07  Ben Elliston  <>

	* config.gcc (powerpc*-*-*): Handle a2.
	* config/rs6000/ (cpu): Add ppca2.  Include "".
	* config/rs6000/ New file.
	* config/rs6000/rs6000.opt (mno-update): New.
	(mupdate): Return to using a mask, not a var.
	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
	(enum processor_type): Add PROCESSOR_PPCA2.
	* config/rs6000/rs6000.c (ppca2_cost): New costs.
	(rs6000_override_options): Add "a2" to processor_target_table.
	Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
	* doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.

2009-10-06  Uros Bizjak  <>

	* config/i386/ (float<SSEMODEI24:mode><X87MODEF:mode>2):
	Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
	reference to nonexistent gen_truncxfxf2 function.

2009-10-06  Uros Bizjak  <>

	* config/i386/ (SWI48, SDWIM, DWI): New mode iterators.
	(DWIH, g, di, doubleint_general_operand): New mode attributes.
	(general_operand): Handle TI mode.
	(add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
	using SDWIM mode iterator.
	(*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
	pattern from *add{di,ti}3_1 patterns and corresponding splitters
	using DWI mode iterator.
	(add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
	patterns using SWI mode iterator.
	(*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
	using SWI48 mode iterator.
	(*add<mode>_1): Ditto from add{si,di}_1 patterns.
	(*add<mode>_2): Ditto from add{si,di}_2 patterns.
	(*add<mode>_3): Ditto from add{si,di}_3 patterns.
	(*add<mode>_5): Ditto from add{si,di}_5 patterns.
	(sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
	using SDWIM mode iterator.
	(*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
	pattern from *sub{di,ti}3_1 patterns and corresponding splitters
	using DWI mode iterator.
	(sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
	patterns using SWI mode iterator.
	(*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
	(*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
	(*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
	(<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
	patterns using plusminus code iterator.
	(<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
	sub<mode>3 patterns using plusminus code iterator.
	* config/i386/i386.c (override_options): Update the call to
	gen_subdi_carry_rex64 for renamed function.
	(ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
	and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
	calls to instruction expanders.

2009-10-06  Martin Jambor  <>

	PR bootstrap/41395
	* opts.c (decode_options): Run IPA-SRA at -O2.

2009-10-06  Richard Guenther  <>

	* lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.

2009-10-06  Tobias Burnus  <>

	PR lto/41591
	* doc/invoke.texi (-flto,-fwhole-program): Make clear that the
	-flto and -fwhole-program flags can be combined.

2009-10-06  Ryan Mansfield  <>

	PR driver/41217
	* gcc.c (process_command): Check that -o argument was specified.

2009-10-06  Jerry Quinn  <>

	* gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.

2009-10-05  Ralf Wildenhues  <>

	* c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
	* doc/invoke.texi (Warning Options): Annotate allowed languages
	for -Wunsuffixed-float-constants.

2009-10-05  Jakub Jelinek  <>

	* dwarf2out.c (modified_type_die): Don't add DW_AT_name to
	DW_TAG_{const,volatile}_type if its DW_AT_type already has the
	same name and isn't the main variant.

	PR debug/41558
	* dwarf2out.c (loc_by_reference): Removed.
	(dw_loc_list_1): New function.
	(dw_loc_list): Remove toplev argument, add want_address argument.
	Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
	(loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
	want_address == 2 to dw_loc_list.  For successful dw_loc_list
	set have_address to 1 only if want_address is not 0.

2009-10-05  Richard Sandiford  <>

	* config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
	* config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
	a code block followed by two pointers.
	(TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
	* config/mips/mips.c (MIPS_LOAD_PTR): New macro.
	(MIPS_MOVE): Likewise.
	(MIPS_LUI): Likewise.
	(MIPS_JR): Likewise.
	(MIPS_BAL): Likewise.
	(MIPS_NOP): Likewise.
	(mips_asm_trampoline_template): Delete.
	(mips_trampoline_code_size): New function.
	(mips_trampoline_init): Add shorter sequences for all cases
	except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
	Calculate the opcodes directly, rather than copying from a template.
	Only flush the code part of the trampoline.

2009-10-05  Richard Sandiford  <>

	* config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
	(FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
	with AT_REGNUM.
	* config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
	* config/mips/mips.c (mips16_build_call_stub): Replace
	(mips_print_operand_punctuation): Likewise.
	(mips_frame_set): Likewise.
	(mips16e_output_save_restore): Likewise.
	(mips_cfun_might_clobber_call_saved_reg_p): Likewise.
	(mips_save_reg_p): Likewise.
	(mips_return_addr): Likewise.
	(mips_set_return_address): Likewise.
	(mips_direct_save_slot_move_p): Likewise.
	(mips_output_function_prologue): Likewise.
	(mips_restore_reg): Likewise.
	(mips_expand_epilogue): Likewise.
	(mips_epilogue_uses): Likewise.
	* config/mips/ (RETURN_ADD_REGNUM): Define.
	(*mov<mode>_ra): Use it instead of a hard-coded 31.
	(clear_hazard_<mode>): Likewise.
	(call_internal): Likewise.
	(call_internal_direct): Likewise.
	(call_direct_split): Likewise.
	(call_value_internal): Likewise.
	(call_value_split): Likewise.
	(call_value_internal_direct): Likewise.
	(call_value_direct_split): Likewise.
	(call_value_multiple_internal): Likewise.
	(call_value_multiple_split): Likewise.

2009-10-05  Eric Botcazou  <>
	    Jakub Jelinek  <>

	PR rtl-optimization/41511
	* combine.c (record_value_for_reg): Pass explicit values as argument
	to get_last_value_validate.
	(get_last_value_validate): Document INSN parameter.
	For non-readonly MEMs, assume they might have been modified if INSN
	was in another basic block.
	(get_last_value): Minor reformatting.

2009-10-05  Andrew Pinski  <>

	PR tree-opt/40992
	* final.c (asm_str_count): Split out from asm_insn_count.
	* rtl.h (asm_str_count): New prototype.
	* tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call

2009-10-05  Sriraman Tallam  <>

	* doc/plugins.texi: Change plugin_pass to register_pass_info.

2009-10-05  Basile Starynkevitch  <>
	    Rafael Espindola  <>

	* gengtype.c (write_types): Moved call to write_func_for_structure
	into seperate loops.

2009-10-05  Richard Guenther  <>

	PR lto/41281
	* lto-cgraph.c (output_cgraph): Output toplevel asms.
	(input_cgraph_1): Input toplevel asms.

2009-10-05  Richard Guenther  <>

	PR lto/40902
	* lto-symtab.c (lto_compatible_attributes_p): Remove.
	(external_aggregate_decl_p): Likewise.
	(lto_symtab_compatible): Re-structure.  Remove dead code.
	For variables ignore toplevel qualifiers when comparing types.
	Issue warnings, not errors for mismatched user-alignment.

2009-10-05  Richard Guenther  <>

	PR lto/41552
	PR lto/41487
	* lto-symtab.c (struct lto_symtab_base_def): Remove.
	(struct lto_symtab_identifier_def): Likewise.
	(struct lto_symtab_decl_def): Likewise.
	(struct lto_symtab_entry_def): New.
	(lto_symtab_identifier_t): Rename to ...
	(lto_symtab_entry_t): ... this.
	(lto_symtab_decls): Remove.
	(lto_symtab_base_hash): Rename to ...
	(lto_symtab_entry_hash): ... this.
	(lto_symtab_base_eq): Rename to ...
	(lto_symtab_entry_eq): ... this.
	(lto_symtab_base_marked_p): Rename to ...
	(lto_symtab_entry_marked_p): ... this.
	(lto_symtab_identifier_marked_p): Remove.
	(lto_symtab_decl_marked_p): Likewise.
	(lto_symtab_maybe_init_hash_tables): Rename to ...
	(lto_symtab_maybe_init_hash_table): ... this.
	(lto_symtab_set_resolution_and_file_data): Remove.
	(lto_symtab_register_decl): New function.
	(lto_symtab_get_identifier): Remove.
	(lto_symtab_get): New function.
	(lto_symtab_get_resolution): Adjust.
	(lto_symtab_get_identifier_decl): Remove.
	(lto_symtab_set_identifier_decl): Likewise.
	(lto_symtab_merge_decl): Rename to ...
	(lto_symtab_merge): ... this.  Rewrite.
	(lto_symtab_merge_var): Remove.
	(lto_symtab_merge_fn): Likewise.
	(lto_symtab_prevailing_decl): Adjust.
	(lto_cgraph_replace_node): New function.
	(lto_symtab_merge_decls_2): Likewise.
	(lto_symtab_merge_decls_1): Likewise.
	(lto_symtab_fixup_var_decls): Likewise.
	(lto_symtab_resolve_symbols): Likewise.
	(lto_symtab_merge_decls): Likewise.
	(lto_symtab_prevailing_decl): Adjust.
	(lto_symtab_get_symtab_def): Remove.
	(lto_symtab_get_file_data): Likewise.
	(lto_symtab_clear_resolution): Adjust.
	(lto_symtab_clear_resolution): Likewise.
	* lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
	(input_cgraph_1): Likewise.
	* lto-streamer-in.c (get_resolution): Do not provide fake
	symbol resolutions here.
	(deferred_global_decls): Remove.
	(lto_register_deferred_decls_in_symtab): Likewise.
	(lto_register_var_decl_in_symtab): Change signature, register
	variable via lto_symtab_register_decl.
	(lto_register_function_decl_in_symtab): Likewise.
	(lto_read_tree): Adjust.
	* lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
	(lto_symtab_merge_var): Likewise.
	(lto_symtab_merge_fn): Likewise.
	(lto_symtab_register_decl): Declare.
	(lto_symtab_merge_decls): Likewise.

2009-10-05  Richard Guenther  <>

	PR tree-optimization/23821
	* tree-vrp.c (vrp_finalize): Do not perform copy propagation.
	* tree-ssa-dom.c (cprop_operand): Do not propagate copies into
	simple IV increments.

2009-10-05  Ramana Radhakrishnan  <>

	* config/arm/arm.c (arm_override_options): Really initialize
	flag_dwarf2_cfi_asm to 0.

2009-10-05  Doug Kwan  <>

	PR rtl-optimization/41574
	* combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
	floating point and we are not doing unsafe math optimizations.

2009-10-03  Simon Baldwin  <>
	    Cary Coutant  <>
	    Rafael Espindola  <>
	    Richard Guenther  <>
	    Jan Hubicka  <>
	    Doug Kwan <>
	    H.J. Lu  <>
	    Bill Maddox  <>
	    Ryan Mansfield  <>
	    Diego Novillo  <>
	    Ollie Wild  <>
	    Kenneth Zadeck  <>

	* lto-cgraph.c: New file.
	* lto-compress.c: New file.
	* lto-compress.h: New file.
	* lto-opts.c: New file.
	* lto-section-in.c: New file.
	* lto-section-out.c: New file.
	* lto-streamer-in.c: New file.
	* lto-streamer-out.c: New file.
	* lto-streamer.c: New file.
	* lto-streamer.h: New file.
	* lto-symtab.c: New file.
	* lto-wpa-fixup.c: New file.
	* lto-wrapper.c: New file.

2009-10-03  Simon Baldwin  <>
	    Ben Elliston  <>
	    Rafael Espindola  <>
	    Nathan Froyd  <>
	    Jan Hubicka  <>
	    Doug Kwan  <>
	    Diego Novillo  <>
	    Kenneth Zadeck  <>

	* (enable_lto): New.
	(site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
	(LTO_SYMTAB_H): Define.
	(LTO_STREAMER_H): Define.
	(OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
	lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
	lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
	(MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
	(native): Add lto-wrapper$(exeext)
	(lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
	lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
	lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
	(gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
	(varasm.o): Add dependency on tree-iterator.h.
	(cgraph.o): Add dependency on cif-code.def.
	(ipa-reference.o): Add dependency on LTO_STREAMER_H.
	(ipa-pure-const.o): Likewise.
	(GTFILES): Add lto-symtab.c.
	(install-lto-wrapper): New.
	* If 'lto' is in enable_languages, define ENABLE_LTO
	and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
	* Regenerate.

2009-10-03  Rafael Espindola  <>
	    Diego Novillo  <>

	* cgraphunit.c (ipa_passes): Prevent lto1 from calling
	Call execute_ipa_summary_passes for all_regular_ipa_passes and
	(cgraph_optimize): Make extern.

2009-10-03  Nathan Froyd  <>
	    Kenneth Zadeck  <>

	* toplev.c (in_lto_p): Declare.
	* collect2.c (scan_prog_file): Read all the output when reading
	information for LTO.
	(enum lto_mode_d): Declare.

2009-10-03  Richard Guenther  <>
	    Diego Novillo  <>

	* gimple.c: Include target.h and alias.h.
	(gimple_types): Declare.
	(type_hash_cache): Declare.
	(gimple_alloc_stat): Make extern.
	(gimple_build_eh_must_not_throw): Call
	(struct type_pair_d): Declare.
	(type_pair_t): Declare.
	(type_pair_hash): New.
	(type_pair_eq): New.
	(lookup_type_pair): New.
	(gimple_force_type_merge): New.
	(compare_type_names_p): New.
	(compare_field_offset): New.
	(gimple_types_compatible_p): New.
	(struct sccs): Declare.
	(next_dfs_num): Declare.
	(iterative_hash_gimple_type): New.
	(visit): New.
	(iterative_hash_type_name): New.
	(iterative_hash_gimple_type): New.
	(gimple_type_hash): New.
	(gimple_type_eq): New.
	(gimple_register_type): New.
	(print_gimple_types_stats): New.
	(gimple_signed_or_unsigned_type): New.
	(gimple_unsigned_type): New.
	(gimple_signed_type): New.
	(gimple_get_alias_set): New.
	(gimple_decl_printable_name): Do not use DMGL_TYPES.
	* gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
	(gimple_force_type_merge): Declare.
	(gimple_types_compatible_p): Declare.
	(gimple_register_type): Declare.
	(print_gimple_types_stats): Declare.
	(gimple_unsigned_type): Declare.
	(gimple_signed_type): Declare.
	(gimple_get_alias_set): Declare.
	(gimple_eh_must_not_throw_set_fndecl): New.

2009-10-03  Jan Hubicka  <>
	    Kenneth Zadeck  <>

	* ipa-pure-const.c: Include lto-streamer.h.
	(register_hooks): Factor out of ...
	(generate_summary): ... here.
	(pure_const_write_summary): New.
	(pure_const_read_summary): New.
	(pass_ipa_pure_const): Add pure_const_write_summary and
	* ipa-reference.c: Include lto-streamer.h.
	(add_new_function): New.
	(remove_node_data): New.
	(duplicate_node_data): New.
	(ipa_init): Guard against multiple calls.
	Move hook setup from analyze_function.
	(write_node_summary_p): New.
	(ipa_reference_write_summary): New.
	(ipa_reference_read_summary): New.
	(pass_ipa_reference): Add ipa_reference_write_summary and
	* cgraph.h (cgraph_local_info): Add field lto_file_data.
	(struct cgraph_edge): Add fields lto_stmt_uid and
	(cgraph_optimize): Declare.
	(cgraph_decide_is_function_needed): Declare.
	(reset_inline_failed): Declare.
	(enum LTO_cgraph_tags): Declare.
	(LTO_cgraph_tag_names): Declare.
	(LCC_NOT_FOUND): Define.

2009-10-03  Doug Kwan  <>
	    Rafael Espindola  <>
	    Jan Hubicka  <>
	    Diego Novillo  <>
	    Kenneth Zadeck  <>

	* passes.c (all_regular_ipa_passes): New.
	(all_ipa_passes): Rename to all_small_ipa_passes.
	(init_optimization_passes): Init all_regular_ipa_passes.
	* tree-pass.h (all_regular_ipa_passes): New.
	(all_ipa_passes): Rename to all_small_ipa_passes.
	* passes.c (all_lto_gen_passes): New.
	(init_optimization_passes): Initialize all_lto_gen_passes.
	(execute_ipa_summary_passes): Make non-static.
	(ipa_write_summaries_1): New.
	(ipa_write_summaries_2): New.
	(ipa_write_summaries): New.
	(ipa_write_summaries_of_cgraph_node_set): New.
	(ipa_read_summaries_1): New.
	(ipa_read_summaries): New.
	(execute_ipa_pass_list): Call cgraph_process_new_functions.
	(execute_regular_ipa_pass_list): Remove.
	(init_optimization_passes): Schedule
	pass_rebuild_cgraph_edges and pass_early_inline outside
	of pass_all_early_optimizations.  Document reason.
	(pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
	pass_ipa_lto_finish_out): New pass.
	(pass_ipa_summary_passes): Start and stop timers if the pass has them.
	(execute_all_ipa_transforms): New.
	(execute_one_pass): Don't call execute_one_ipa_transform_pass.
	(dump_properties, debug_properties): New.
	* tree-optimize.c (gate_all_early_local_passes): Return
	false if we are in lto1.
	(tree_rest_of_compilation): Call execute_all_ipa_transforms.
	* tree-pass.h (execute_all_ipa_transforms): Declare.
	(pass_ipa_function_and_variable_visibility): Declare.
	(pass_ipa_early_inline): Declare.
	(pass_ipa_lto_gimple_out): Declare.
	(pass_ipa_lto_wpa_fixup): Declare.
	(pass_ipa_lto_finish_out): Declare.
	(all_small_ipa_passes, all_regular_ipa_passes,
	all_lto_gen_passes): Declare.
	(execute_ipa_summary_passes): Declare.
	(execute_all_ipa_transforms): Declare.
	(ipa_write_summaries): Declare
	(ipa_write_summaries_of_cgraph_node_set): Declare.
	(ipa_read_summaries): Declare.

2009-10-03  Doug Kwan  <>
	    Ollie Wild  <>

	* ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.

	* collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
	(lto_mode): New variable.
	(maybe_run_lto_and_relink): Handle the -fwpa option.
	(main): Handle the -fwpa option.
	(maybe_unlink_list): New function.
	* gcc.c (link_lto_options): Replace -flto with -fwpa.
	* common.opt (flto): New flag.
	* toplev.c (flag_generate_lto): Declare.

2009-10-03  Simon Baldwin  <>

	* common.opt (flto-compression-level): New flag.

	* opts.c: Include lto-opts.h.
	(handle_option): Call lto_register_user_option for each
	valid option handled.
	(decode_options): Clear registered options before the options
	handling loop.

2009-10-03  Cary Coutant  <>

	* collect2.c (is_elf): New function.
	(scan_prog_file): Require LTO object to be in ELF format.

2009-10-03  Rafael Espindola  <>

	* gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
	libgcc to the linker.

	* ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.

	* collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
	(collect_execute): Add flags argument. Pass flags to pex_run. Update
	all callers.
	* collect2.h (collect_execute): Add flags argument.
	* tlink.c (tlink_execute): Update call to collect_execute.
	* gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
	(use_linker_plugin): New.
	(use_linker_plugin_spec_function): New.
	(LINK_COMMAND_SPEC): Pass plugin options to the linker.
	(linker_plugin_file_spec): New.
	(lto_wrapper_spec): New.
	(lto_gcc_spec): New.
	(static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
	(static_spec_functions): Add use-linker-plugin.
	(process_command): Handle -use-linker-plugin.
	(main): Use lto_wrapper_spec instead of lto_wrapper. Set
	linker_plugin_file_spec and lto_gcc_spec.
	(use_linker_plugin_spec_function): New.

2009-10-03  Richard Guenther  <>

	PR lto/41547
	PR lto/41548
	* tree.h (is_lang_specific): Include LANG_TYPE.
	* tree.c (find_decls_types_r): Manually add interesting parts

	* gimple.c (type_pair_hash): Make symmetric.
	(type_pair_eq): Likewise.
	(lookup_type_pair): Increase initial hashtable size.
	(gimple_force_type_merge): Rely on type-pair symmetry.
	(visit): Remove excessive checking code.
	(iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
	(gimple_register_type): Remove getenv calls, shrink initial
	hashtable size.

	PR middle-end/41502
	* cgraphunit.c (ipa_passes): Do not remove bodies of extern
	inline functions if not generating lto output.

	PR lto/41379
	* toplev.c (finalize): In WPA mode remove the asm file.

2009-10-03  Doug Kwan  <>

	* ipa-inline.c (cgraph_mark_inline): Check
	edge->call_stmt_cannot_inline_p instead of calling
	(cgraph_decide_inlining): Do nothing in WPA and LTRANS.
	(cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
	(inline_generate_summary): Do nothing in LTRANS.
	* cgraph.c (initialize_inline_failed): Make sure e->call_stmt
	exists before calling gimple_call_cannot_inline_p.
	(cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
	(cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
	Update new_edge->lto_stmt_uid.
	* cgraphbuild.c (reset_inline_failed): New.

	* common.opt (fwpa): New flag.
	(fltrans): New option.
	* gcc.c (gcc_lto_option_t): New type.
	(current_lto_option): New variable.
	(lto_single_spec_function): Remove and is replaced by ..
	(lto_option_spec_function): New function.
	(LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
	passing the -flto flag.
	(cc1_options): Separate non-LTO related parts into ..
	(cc1_non_lto_options): Non-LTO related options shared by all FEs.
	(lto1_options): New spec for lto FE.
	(link_lto_options): New spec for handling LTO flags in linker.
	(invoke_lto_single): Re-format to fit in 80 column.  Replace
	lto-single with lto-option.
	(static_specs): Add cc1_non_lto_options, lto1_options and
	(static_spec_function): Replace lto-single with lto-option.
	(process_command): Handle -flto, -fwpa and -fltran by setting
	current_lto_option and not passing it to subprocess unconditionally.

2009-10-03  Bill Maddox  <>

	Add `gcc' driver support for link-time code generation (LTO).

	* collect2.c (enum pass): Add new literal PASS_LTOINFO.
	(lto_flag, lto_objects, lto_o_file): New variables.
	(struct lto_object, struct lto_object_list): New structures.
	(collect_exit, handler): Remove LTO temporary output file on exit.
	(add_lto_object): New function.
	(maybe_run_lto_and_relink): New function. Perform link time code
	generation and relinking for object files containing LTO information.
	(main): Invoke maybe_run_lto_and_relink().
	(dump_argv): New function.  For debugging, currently disabled.
	(scan_prog_file): Add LTO information pass.
	* gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
	* toplev.c (compile_file): Emit assembler directive to create
	the `gnu_lto_v1' marker symbol when compiling with `-flto'.

2009-10-03  Diego Novillo  <>

	* c.opt: Add LTO to warn_abi and warn_psabi.

	* tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
	inline function.  Ignore language-specific nodes.  Update all users.
	(find_decls_types_r): Do not traverse the subtrees of
	language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
	* tree.h (is_lang_specific): New.
	* langhooks.h (struct lang_hooks_for_decls): Remove
	may_need_assembler_name_p.  Update all users.

	* c-common.c (set_builtin_user_assembler_name): Move ...
	* builtins.c (set_builtin_user_assembler_name): ... here.
	(is_builtin_name): Add comment
	(is_builtin_fn): New.
	* except.c (output_ttype): Only call
	lookup_type_for_runtime if TYPE is not a runtime type.

	* passes.c (register_pass): Call position_pass on
	all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
	* timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
	(TV_IPA_LTO_DECL_IO): Define.
	(TV_LTO): Define.
	(TV_WHOPR_WPA): Define.
	(TV_WHOPR_WPA_IO): Define.
	* tree-cfg.c (tree_node_can_be_shared): Make extern.
	* tree-flow.h (tree_node_can_be_shared): Declare.
	* tree-inline.c (tree_can_inline_p): Check that E has a
	statement associated with it.
	* tree.c (free_lang_data_in_binf): Factor out of ...
	(free_lang_data_in_type): ... here.
	(need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
	set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
	(free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
	(free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
	write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
	(gate_free_lang_data): Return true if flag_generate_lto is set.
	(walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
	* c-common.h (set_builtin_user_assembler_name): Move ...
	* tree.h (set_builtin_user_assembler_name): ... here.

	* common.opt (flto-report): New flag.
	* opts.c (complain_wrong_lang): Do not complain if running lto1.
	* collect2.c (scan_prog_file): Send the error output of

2009-10-03  Ollie Wild  <>

	* langhooks-def.h (lhd_begin_section): New function declaration.
	(lhd_write_section): New function declaration.
	(lhd_end_section): New function declaration.
	(LANG_HOOKS_LTO): New macro.
	* langhooks.c (output.h): Add include.
	(saved_section): New static variable.
	(lhd_begin_section): New function.
	(lhd_write_section_data): New function.
	(lhd_end_section): New function.
	* langhooks.h (struct lang_hooks_for_lto): New structure.
	(struct lang_hooks): Add member lto.
	* (langhooks.o): Add dependency on output.h.

	* c-opts.c (c_common_post_options): Handle -flto and -fwhopr.

2009-10-03  Richard Guenther  <>

	* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
	Handle LTO.

2009-10-03  Simon Baldwin  <>
	    Richard Guenther  <>
	    Janis Johnson  <>
	    Doug Kwan  <>
	    Diego Novillo  <>
	    Ramana Radhakrishnan  <>
	    Ollie Wild  <>

	* doc/install.texi: Add documentation for libelf and --enable-lto.
	* doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
	-flto-report, -flto-compression-level and -use-linker-plugin.
	* doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
	Add section for LTO Testing.

2009-10-02  Cary Coutant  <>

	Add support for comdat type sections for DWARF v4.
	Merge from dwarf4 branch.

	* dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
	(dw_die_ref): Define vector type.
	(enum dw_val_class): Add dw_val_class_data8.
	(struct dw_val_struct): Add v.val_data8.
	(comdat_type_node_ref): New type.
	(struct die_struct): Move die_symbol into a union; add new field
	die_type_node.  Change all uses.
	(comdat_type_node): New type.
	(skeleton_chain_node): New type.
	(comdat_type_list): New variable.
	(dwarf_tag_name): Add DW_TAG_type_unit.
	(dwarf_attr_name): Add DW_AT_signature.
	(add_AT_data8): New function.
	(replace_child): New function.
	(move_all_children): New function.
	(print_signature): New function.
	(print_die): Print signature information; add dw_val_class_data8.
	(attr_checksum): Support dw_val_class_data8.
	(CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
	(CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
	(checksum_sleb128, checksum_uleb128): New functions.
	(checksum_die_context): New function.
	(loc_checksum_ordered): New function.
	(attr_checksum_ordered): New function.
	(struct checksum_attributes): New structure.
	(collect_checksum_attributes): New function.
	(die_checksum_ordered): New function.
	(generate_type_signature): New function.
	(same_dw_val_p): Add dw_val_class_data8.
	(is_symbol_die): Use new is_declaration_die function.
	(is_declaration_die): New function.
	(should_move_die_to_comdat): New function.
	(clone_die): New function.
	(clone_tree): New function.
	(clone_as_declaration): New function.
	(copy_declaration_context): New function.
	(generate_skeleton_ancestor_tree): New function.
	(generate_skeleton_bottom_up): New function.
	(generate_skeleton): New function.
	(remove_child_or_replace_with_skeleton): New function.
	(break_out_comdat_types): New function.
	(struct decl_table_entry): New type.
	(htab_decl_hash): New function.
	(htab_decl_eq): New function.
	(htab_decl_del): New function.
	(copy_ancestor_tree): New function.
	(copy_decls_walk): New function.
	(copy_decls_for_unworthy_types): New function.
	(build_abbrev_table): Don't assert on missing die_symbol when doing
	comdat type sections.
	(size_of_die): Use DW_FORM_sig8 for external references.  Add
	(unmark_dies): Don't assert for unmarked dies when doing comdat
	type sections.
	(value_format): Support DW_FORM_sig8 and dw_val_class_data8.
	(output_signature): New function.
	(output_die): Likewise.
	(output_compilation_unit_header): Mark output as DWARF version 3
	even if generating DWARF 4.
	(output_comdat_type_unit): New function.
	(output_line_info): Mark output as DWARF version 3 even if generating
	(dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
	(dwarf2out_end_source_file): Likewise.
	(prune_unused_types_walk_attribs): Don't follow references into
	comdat type sections.
	(prune_unused_types_mark): When generating type units, do not mark
	children of non-defining declarations of types; do mark children of
	type entries.
	(prune_unused_types): Process comdat type sections.
	(htab_ct_hash): New function.
	(htab_ct_eq): New function.
	(dwarf2out_finish): Move types to comdat sections when using DWARF-4.
	Add a pointer to the line table from type unit entries so
	DW_AT_decl_file has meaning.
	* varasm.c (default_elf_asm_named_section): Use identifier name as
	comdat key instead of lang hook.

2009-10-02  Neil Vachharajani  <>

	* gcov-io.c (gcov_open): Open files read-only when MODE < 0.

2009-10-02  Uros Bizjak  <>

	* config/i386/ (SWIM248): New mode iterator.
	(divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
	divmodhi4 patterns using SWIM248 macro.
	(*divmod<mode>4): Macroize insn_and_split pattern from
	*divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
	and their corresponding splitters usign SWIM248 macro.  Split SImode
	insn to generate cltd and DImode insn to generate cqto instead of
	move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
	(*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
	(*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
	*divmodsi_noext patterns using SWIM248 macro.
	(udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
	udivmodhi4 patterns using SWIM248 macro.
	(*udivmod<mode>4): Macroize insn_and_split pattern from
	*udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
	corresponding splitters using SWIM248 macro.
	(*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
	*udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.

2009-10-02  Eric Botcazou  <>

	* stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
	of zero-sized element is zero-sized regardless of its extent.

2009-10-02  Jakub Jelinek  <>

	PR debug/40521
	* configure: Regenerated.
	* Regenerated.
	* dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
	!HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
	(dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
	not emitting .eh_frame, emit .cfi_sections .debug_frame

	PR debug/41404
	PR debug/41353
	* cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
	CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
	with '\0'.
	(expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
	vars use DECL_RTL with resetting it back to NULL afterwards.
	* dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
	rtx_equal_p instead of asserting it is a SYMBOL_REF.
	(value_format): For dw_val_class_addr only use DW_FORM_addr if
	the attribute type allows it, otherwise use DW_FORM_dataN.
	(mem_loc_descriptor): Handle CONST_STRING.
	(add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
	Handle MEM with CONST_STRING address using add_AT_string.
	(rtl_for_decl_init): Return MEM with CONST_STRING address instead of
	CONST_STRING for const arrays initialized with a string literal.
	(resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
	(dwarf2out_finish): Call resolve_addr.

2009-10-02  Andreas Schwab  <>
	    Maxim Kuvyrkov  <>

	* config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.

2009-10-02  Nick Clifton  <>

	* config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
	(ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.

2009-10-01  Jan Hubicka  <>

	* cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
	(cgraph_create_virtual_clone): Just pass redirect_callers
	* cgraph.h (cgraph_clone_node): Update prototype.
	* ipa-pure-const.c (self_recursive_p): New function.
	(propagate): Use it.
	* ipa-inline.c (cgraph_clone_inlined_nodes,
	cgraph_decide_recursive_inlining): Update.

2009-10-01  David Daney  <>

	* gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
	instructions for TARGET_OCTEON.

2009-10-01  Ramana Radhakrishnan  <>

	* config/arm/arm.c (arm_override_options): Turn off
	flag_dwarf2_cfi_asm for AAPCS variants.

2009-10-01  Martin Jambor  <>

	PR middle-end/12392
	* tree-sra.c (convert_callers): Do not call
	compute_inline_parameters on one caller more than once.

2009-10-01  Nick Clifton  <>

	* config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
	an empty string if not already defined.

2009-10-01  Martin Jambor  <>

	PR bootstrap/41395
	* tree-sra.c (is_va_list_type): New function.
	(find_var_candidates): Call is_va_list_type.
	(find_param_candidates): Check that the type or the type pointed
	to are not va_list types.

2009-10-01  Martin Jambor  <>

	PR c++/41503
	* cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
	DECL_ARTIFICIAL (param_decl) is true.

2009-09-30  Gabriel Dos Reis  <>

	* tree.h (tree_decl_common::lang_flag_8): New.
	* c-common.c (c_common_reswords): Include "constexpr" as C++0x
	* c-common.h (RID_CONSTEXPR): New.

2009-09-30  Uros Bizjak  <>

	* config/alpha/alpha.c (alpha_gimplify_va_arg_1):
	Use ref-all pointers.
	(alpha_gimplify_va_arg): Ditto.

2009-09-30  Jakub Jelinek  <>

	PR target/41279
	* cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
	before insn counting loop now that BB_END (bb) is counted.  Ensure
	the return value isn't zero.

2009-09-30  Nick Clifton  <>

	* config.gcc (sh-symbianelf): Replace definition of extra_objs
	with separate definitions of c_target_objs and cxx_target_objs.
	* config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
	and symbian-base.o.
	* config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
	* config/sh/sh-protos.h: Fix names of exported symbian functions.
	* config/sh/symbian.c: Delete, moving code into...
	* config/sh/symbian-base.c: ... here
	* config/sh/symbian-c.c: ... and here
	* config/sh/symbian-cxx.c: ... and here.

2009-09-30  Uros Bizjak  <>

	PR target/22093
	* config/alpha/ (unaligned_storehi_be): Force operand
	of plus RTX into register.

2009-09-30  Ralf Wildenhues  <>

	* doc/install.texi: Linguistic and markup fixes.
	(Configuration) <--disable-cpp>: Remove description.
	<--enable-maintainer-mode>: Autotools files are affected, too.
	<--with-sysroot>: Improve description.
	(Building): Bump required GNU make version.

2009-09-29  Harsha Jagasia  <>

	* config.gcc (i[34567]86-*-*): Include fma4intrin.h.
	(x86_64-*-*): Ditto.

	* config/i386/fma4intrin.h: New file, provide common x86 compiler
	intrinisics for FMA4.
	* config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
	* config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
	Add FMA4 check and fma4intrin.h.
	* config/i386/i386-c.c(ix86_target_macros_internal): Check
	* config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
	* config/i386/ (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
	constant for FMA4 support.
	* config/i386/i386.opt (-mfma4): New switch for FMA4 support.
	* config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
	(ix86_expand_fma4_multiple_memory): Ditto.
	* config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
	(OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
	(OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
	(ix86_handle_option): Handle -mfma4.
	(isa_opts): Handle -mfma4.
	(enum pta_flags): Add PTA_FMA4.
	(override_options): Add FMA4 support.
	(IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
	(enum multi_arg_type): New enum for describing the various FMA4
	intrinsic argument types.
	(bdesc_multi_arg): New table for FMA4 intrinsics.
	(ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
	(ix86_expand_multi_arg_builtin): New function for creating FMA4
	(ix86_expand_builtin): Add FMA4 intrinsic support.
	(ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
	operand instructions.
	(ix86_expand_fma4_multiple_memory): New function to split the
	second memory reference from FMA4 instructions.
	* config/i386/ (ssemodesuffixf4): New mode attribute for FMA4.
	(ssemodesuffixf2s): Ditto.
	(fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
	(fma4_fmsub<mode>4): Ditto.
	(fma4_fnmadd<mode>4): Ditto.
	(fma4_fnmsub<mode>4): Ditto.
	(fma4_vmfmadd<mode>4): Ditto.
	(fma4_vmfmsub<mode>4): Ditto.
	(fma4_vmfnmadd<mode>4): Ditto.
	(fma4_vmfnmsub<mode>4): Ditto.
	(fma4_fmadd<mode>4256): Ditto.
	(fma4_fmsub<mode>4256): Ditto.
	(fma4_fnmadd<mode>4256): Ditto.
	(fma4_fnmsub<mode>4256): Ditto.
	(fma4_fmaddsubv8sf4): Ditto.
	(fma4_fmaddsubv4sf4): Ditto.
	(fma4_fmaddsubv4df4): Ditto.
	(fma4_fmaddsubv2df4): Ditto.
	(fma4_fmsubaddv8sf4): Ditto.
	(fma4_fmsubaddv4sf4): Ditto.
	(fma4_fmsubaddv4df4): Ditto.
	(fma4_fmsubaddv2df4): Ditto.
	(fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
	instructions for intrinsics.
	(fma4i_fmsub<mode>4): Ditto.
	(fma4i_fnmadd<mode>4): Ditto.
	(fma4i_fnmsub<mode>4): Ditto.
	(fma4i_vmfmadd<mode>4): Ditto.
	(fma4i_vmfmsub<mode>4): Ditto.
	(fma4i_vmfnmadd<mode>4): Ditto.
	(fma4i_vmfnmsub<mode>4): Ditto.
	(fma4i_fmadd<mode>4256): Ditto.
	(fma4i_fmsub<mode>4256): Ditto.
	(fma4i_fnmadd<mode>4256): Ditto.
	(fma4i_fnmsub<mode>4256): Ditto.
	(fma4i_fmaddsubv8sf4): Ditto.
	(fma4i_fmaddsubv4sf4): Ditto.
	(fma4i_fmaddsubv4df4): Ditto.
	(fma4i_fmaddsubv2df4): Ditto.
	(fma4i_fmsubaddv8sf4): Ditto.
	(fma4i_fmsubaddv4sf4): Ditto.
	(fma4i_fmsubaddv4df4): Ditto.
	(fma4i_fmsubaddv2df4): Ditto.

	* doc/invoke.texi (-mfma4): Add documentation.
	* doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.

2009-09-29  Richard Henderson  <>

	* tree-eh.c (unsplit_eh): Do not unsplit if there's already
	an edge to the new destination block.

2009-09-29  John David Anglin  <>

	PR target/41393
	* pa.c (hppa_profile_hook): Use
	make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.

2009-09-29  Steve Ellcey  <>
	    Alexander Monakov  <>

	PR target/41365
	* config/ia64/ (not_postinc_destination_operand): New.
	(not_postinc_memory_operand): New.
	(not_postinc_move_operand): New.
	* config/ia64/ (*cmovdi_internal): Disallow autoincrement.
	(*cmovsi_internal): Ditto.

2009-09-29  Pat Haugen  <>

	* config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
	restrict issue_rate in first pass when scheduling for register

2009-09-29  Basile Starynkevitch  <>
	    Rafael Avila de Espindola  <>

	* gengtype.c (plugin_output): New.
	(get_output_file_with_visibility): Return plugin_output for plugins.
	(main): Parse and use the -P option.
	* gty.texi: Update the command line format.

2009-09-29  Jakub Jelinek  <>

	PR debug/41438
	* dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
	(mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
	out if !const_ok_for_output.

	PR debug/41474
	* dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
	case VAR_LOCATION>: Remove gcc_unreachable ().

2009-09-29  Harsha Jagasia  <>

	* config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
	(x86_64-*-*): Ditto.
	* config/i386/smmintrin.h: Move instructions in mmintrin-common.h
	back to smmintrin.h.
	* config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
	* config/i386/x86intrin.h: Remove SSE5.
	* config/i386/mmintrin-common.h: Delete file.
	* doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.

2009-09-29  Richard Guenther  <>

	* alias.c (ao_ref_from_mem): Properly deal with off decl accesses
	resulting from stack temporaries on STRICT_ALIGNMENT targets.

2009-09-29  Nick Clifton  <>

	* function.c (current_function_name): If there is no current
	function just return "<none>".

2009-09-28  Sriraman Tallam  <>

	* tree-pass.h (register_pass_info): New structure.
	(pass_positioning_ops): Move enum from gcc-plugin.h.
	(register_pass): New function.
	* gcc-plugin.h (plugin_pass): Delete structure.
	(pass_positioning_ops): Delete enum.
	* plugin.c (regsiter_pass): Delete function.
	(position_pass): Delete function.
	(added_pass_nodes): Delete variable.
	(prev_added_pass_nodes): Delete variable.
	(pass_list_node): Delete structure.
	* passes.c (make_pass_instance): New function.
	(next_pass_1): Change to call make_pass_instance.
	(pass_list_node): Move structure from gcc-plugin.h.
	(added_pass_nodes): Move variable from plugin.c.
	(prev_added_pass_nodes): Move variable from plugin.c.
	(position_pass): New function.
	(register_pass): New function.

2009-09-28  Easwaran Raman  <>

	* ifcvt.c (noce_try_abs): Recognize pattern and call
	* optabs.c (expand_one_cmpl_abs_nojump): New function.
	* optabs.h (expand_one_cmpl_abs_nojump): Declare.

2009-09-28  Ian Lance Taylor  <>

	PR middle-end/40500
	* c-opts.c (c_common_handle_option): Don't set
	warn_jump_misses_init for -Wall.
	* doc/invoke.texi (Warning Options): Update documentation.

2009-09-28  Ralf Wildenhues  <>

	* ($(out_object_file)): Depend on
	gt-$(basename $(notdir $(out_file))).h.

2009-09-28  Richard Henderson  <>

	* except.h (struct eh_region_d): Add use_cxa_end_cleanup.
	* except.c (gen_eh_region): Set it.
	(duplicate_eh_regions_1): Copy it.
	* tree-eh.c (lower_resx): Use it to determine which function
	to call to resume.

	* langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
	* langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
	* builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
	* tree.c (build_common_builtin_nodes): Remove parameter.  Build

	* c-common.c (c_define_builtins): Update call to

2009-09-28  Andrew Pinski  <>

	* spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.

2009-09-28  Michael Matz  <>

	* builtins.c (interclass_mathfn_icode): New helper.
	(expand_builtin_interclass_mathfn): Use it here, and split folding
	into ...
	(fold_builtin_interclass_mathfn): ... this new folder.
	(build_call_nofold_loc): New static helper.
	(build_call_nofold): New wrapper macro for above.
	(expand_builtin_int_roundingfn): Use it instead of build_call_expr.
	(expand_builtin_pow): Ditto.
	(expand_builtin_memset_args): Ditto.
	(expand_builtin_printf): Ditto.
	(expand_builtin_fprintf): Ditto.
	(expand_builtin_sprintf): Ditto.
	(expand_builtin_memory_chk): Ditto.
	(expand_builtin_mempcpy_args): Ditto and don't call folders.
	(expand_builtin_stpcpy): Ditto.
	(expand_builtin_strcmp): Ditto.
	(expand_builtin_strncmp): Ditto.
	(expand_builtin_strcpy): Remove FNDECL and MODE arguments.
	(expand_builtin_strcpy_args): Don't call folders.
	(expand_builtin_memcmp): Ditto.
	(expand_builtin_strncpy): Ditto, and use target.
	(expand_builtin_memcpy): Ditto.
	(expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
	expand_builtin_strpbrk, expand_builtin_memmove,
	expand_builtin_memmove_args, expand_builtin_bcopy,
	expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
	expand_builtin_strspn, expand_builtin_strcspn,
	expand_builtin_fputs): Remove these.
	(expand_builtin): Don't call the above, change calls to other
	expanders that changed prototype.
	(fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
	(fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
	(fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
	(fold_builtin_strcat): Add folding split from expand_builtin_strcat.

	* fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
	* passes.c (init_optimization_passes): Move pass_fold_builtins
	after last phiopt pass.
	* tree-inline.c (fold_marked_statements): When folding builtins
	iterate over all instruction potentially generated.
	* tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
	(fold_gimple_call): Use it to always fold calls (into potentially
	multiple instructions).
	* tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
	calls into zero at this time.
	* tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
	statements generated by builtin folding.

2009-09-28  Nick Clifton  <>

	* config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.

2009-09-28  Duncan Sands  <>

	* gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
	* plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
	(register_callback): Dispatch it.
	(invoke_plugin_callbacks): Incorporate in sanity check.
	* ggc.h (ggc_register_cache_tab): Add declaration.
	* ggc-common.c (ggc_register_root_tab): Simplify.
	(const_ggc_cache_tab_t): New typedef.
	(extra_cache_vec): New vector of dynamically added cache tables.
	(ggc_register_cache_tab): New function.
	(ggc_scan_cache_tab): New function.
	(ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
	* doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.

2009-09-27  Richard Henderson  <>

	* tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
	which we remove __builtin_stack_restore.

2009-09-27  Bernd Schmidt  <>

	* loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
	to test for GRD_INVARIANT.
	(simple_rhs_p): Anything that's function_invariant_p is fine.

2009-09-27  Rafael Avila de Espindola  <>

	* gengtype.c (main): Use plunge_files instead of plugin_output.

2009-09-27  Basile Starynkevitch  <>
	    Rafael Avila de Espindola  <>

	* gengtype.c (write_root, write_roots): Add a emit_pch argument.
	Don't print pch related info if it is false.
	(main): Don't print pch info in plugin mode.

2009-09-27  Eric Botcazou  <>

	* dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
	with dw_val_class_const_double.
	(struct dw_val_struct): Replace val_long_long with val_double and
	adjust for above change.
	(output_loc_operands): Likewise.
	(add_AT_long_long): Rename into...
	(add_AT_double): ...this.
	(print_die): Replace dw_val_class_long_long with
	dw_val_class_const_double and adjust.
	(attr_checksum): Likewise.
	(same_dw_val_p): Likewise.
	(size_of_die): Likewise.
	(value_format): Likewise.
	(output_die): Likewise.
	(loc_descriptor) <CONST_DOUBLE>: Likewise.
	(add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
	instead of add_AT_long_long.
	(add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
	value with the precision of its type.

2009-09-27  Andreas Schwab  <>

	PR c/41476
	* c-typeck.c (build_conditional_expr): Use the readonly and
	volatile flags of the operand types, not of the operands itself.

2009-09-27  Peter O'Gorman  <>

	* collect2.c (main): Look for -brtl before adding libraries.

2009-09-27  Jonathan Gray  <>

	* config.gcc: Update OpenBSD targets.
	* config/openbsd-stdint.h: New file.
	* config/openbsd-libpthread.h: New file.
	* config/openbsd.h: Update and break out LIB_SPEC definition.
	* config/alpha/openbsd.h: Overhaul to reflect ELF migration.
	* config/i386/openbsdelf.h: Correct types.
	* config/m68k/openbsd.h: Likewise.
	* config/mips/openbsd.h: Likewise.
	* config/vax/openbsd.h: Likewise.

2009-09-27  Eric Botcazou  <>

	* fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
	(extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
	* stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
	of the length and zero.

2009-09-27  Ralf Wildenhues  <>

	* (TOPLEV_H): Use $(INPUT_H) not input.h.
	(FLAGS_H): Add options.h $(REAL_H).
	(SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
	(EBITMAP_H): Renamed from EBIMAP_H.
	(c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
	(gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
	(tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
	(tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
	(gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
	(graphite-clast-to-gimple.o, graphite-dependences.o)
	(graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
	(graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
	(tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
	(tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
	(targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
	(gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
	(ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
	(haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
	(sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
	updated and fixed as per above changes and per output.

	PR bootstrap/40928
	* Use $LIBS for '-ldl', not $LDFLAGS.
	* configure: Regenerate.

2009-09-26  Kaveh R. Ghazi  <>

	* doc/install.texi: Update minimum MPC version to 0.7.

2009-09-26  Gerald Pfeifer  <>

	* doc/install.texi (Binaries): Remove reference to the binary
	distribution CD-ROM from the FSF.

2009-09-26  Michael Matz  <>

	PR lto/40758
	PR middle-end/41470
	* tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
	that are mentioned in the body.

2009-09-26  Michael Matz  <>

	PR tree-optimization/41454
	* tree-ssa-dom (stmts_to_rescan): Remove variable.
	(tree_ssa_dominator_optimize): Don't allocate and free it.
	(dom_opt_leave_block): Don't iterate over it.
	(eliminate_redundant_computations): Don't return a value.
	(cprop_operand, cprop_into_stmt): Ditto.
	(optimize_stmt): Don't defer updating stmts.

2009-09-25  Dodji Seketeli  <>

	* dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
	generic_parameter_die, template_parameter_pack_die,
	gen_formal_parameter_die, gen_subprogram_die): Adjust after
	renaming DW_TAG_formal_parameter_pack and
	DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
	and DW_TAG_GNU_template_parameter_pack.

2009-09-25  Anatoly Sokolov  <>

	* config/v850/v850.h (FUNCTION_VALUE): Remove.
	* config/v850/v850.c (v850_function_value): New function.

2009-09-25  Jakub Jelinek  <>

	* tree-vect-stmts.c (vectorizable_call): Call
	mark_symbols_for_renaming after vect_finish_stmt_generation.

	* dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
	to loc_descriptor_from_tree.
	(add_location_or_const_value_attribute): Pass 0 instead of 2
	for decl_by_reference_p decls.

2009-09-25  Richard Guenther  <>

	PR middle-end/41463
	* tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
	arrays again.

2009-09-25  Ben Elliston  <>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
	after `power7'.

2009-09-25  Alan Modra  <>

	* config/rs6000/ (load_toc_v4_PIC_3c): Correct POWER
	form of instruction.

2009-09-24  Kaveh R. Ghazi  <>

	PR middle-end/41435
	* fold-const.c (const_binop): Handle complex int division.
	* tree-complex.c (expand_complex_div_straight,
	expand_complex_div_wide): Update comments.

2009-09-24  DJ Delorie  <>

	PR target/41456
	* config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
	(reg_class): Likewise.
	(REG_CLASS_NAMES): Likewise.
	* config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
	(m32c_override_options): Disable -fivopts for M32C.

2009-09-24  Michael Meissner  <>

	* config/rs6000/ (indexed_or_indirect_operand):
	Delete VSX load/store with update support.
	* config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
	* config/rs6000/ (vsx_mov<mode>): Ditto.
	(vsx_movti): Ditto.
	(VSX_U): Delete.
	(VSbit): Ditto.
	(VStype_load_update): Ditto.
	(VStype_store_update): Ditto.
	(vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
	(vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.

	* config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
	load/store with update builtins.

2009-09-24  Kai Tietz  <>

	* libgcc2.c (L_trampoline): Prototype for getpagesize
	and mprotect in WINNT case.

2009-09-24  Anatoly Sokolov  <>

	* config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
	* config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
	* config/rs6000/rs6000.c (rs6000_function_value): Make static, add
	'outgoing' argument.

2009-09-24  Iain Sandoe  <>

	* config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.

2009-09-24  Iain Sandoe  <>

	PR bootstrap/41405
	* common.opt: Initialize dwarf_strict to -1.
	* toplev.c (process_options): Catch unset dwarf_strict
	and set to 0 for all targets not overriding.
	* config/darwin.c (darwin_override_options): Catch unset
	dwarf_strict and override to 1.

2009-09-24  Jeff Law  <>

	* tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.

2009-09-24  Richard Guenther  <>

	PR tree-optimization/36143
	PR tree-optimization/38747
	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
	create VIEW_CONVERT_EXPRs for TBAA compatible accesses.

2009-09-24  Jakub Jelinek  <>

	PR bootstrap/41457
	* dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
	return false instead of gcc_unreachable ().  For CONST return the
	value returned by recursive call instead of always returning true.
	(tree_add_const_value_attribute): Return the value returned by
	add_const_value_attribute instead of always returning true if rtl
	is non-NULL.

2009-09-23  Justin Seyster  <>

	* (PLUGIN_HEADERS): Include real.h.

2009-09-24  Jakub Jelinek  <>

	* cgraphunit.c (cgraph_lower_function): Revert last change.
	* targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
	* tree-cfg.c (verify_gimple_call): Likewise.
	* tree-nested.c (get_chain_decl, get_chain_field,
	convert_tramp_reference_op, convert_gimple_call): Likewise.
	(convert_all_function_calls): Likewise.  Always set or clear
	DECL_STATIC_CHAIN initially, for !n->outer clear it.
	(lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
	* c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
	if nested.
	* print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
	* config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
	(ix86_function_regparm, find_drap_reg): Likewise.  Don't test
	* varasm.c (initializer_constant_valid_p): Likewise.
	* tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
	(DECL_STATIC_CHAIN): ... this.
	* config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN

2009-09-23  Basile Starynkevitch  <>
	    Rafael Avila de Espindola  <>

	* gengtype.c (nb_plugin_files): Make it unsigned to match
	num_gt_files. Adjust other variables to avoid warnings.
	(main): Allocate an all zero lang_bitmap before each plugin file name
	to match regular file names.

2009-09-23  Richard Henderson  <>

	(TARGET_STATIC_CHAIN): Mention that this hook must be used for
	static chain passed in memory.
	* targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
	STATIC_CHAIN_INCOMING.  Issue a sorry if there's no

	* config/picochip/picochip-protos.h: s/class/klass/.
	* config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
	(picochip_static_chain): New.
	* config/picochip/picochip.h (STATIC_CHAIN): Remove.

	* config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
	(xtensa_static_chain): New.
	* config/xtensa/xtensa.h (STATIC_CHAIN): Remove.

2009-09-23  Anatoly Sokolov  <>

	* config/pa/pa.h (FUNCTION_VALUE): Remove macro.
	* config/pa/pa-protos.h (function_value): Remove.
	* config/pa/pa.c (pa_function_value): Rename from function_value.
	Make static, add 'outgoing' argument.

2009-09-23  Anatoly Sokolov  <>

	* config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
	instead of cfun->machine->is_leaf.
	* config/avr/avr.h (machine_function): Remove is_leaf field.

2009-09-23  Jakub Jelinek  <>

	PR debug/41439
	* dwarf2out.c (address_of_int_loc_descriptor): Don't emit
	DW_OP_piece after DW_OP_stack_value, adjust size calculations
	for it, when DW_OP_stack_value and DW_OP_implicit_value has
	the same size, prefer DW_OP_stack_value.
	(loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
	loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.

2009-09-23  Alexandre Oliva  <>

	PR debug/41353
	* var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.

2009-09-23  Alexandre Oliva  <>

	PR debug/41248
	* cfgexpand.c (convert_debug_memory_address): New.
	(expand_debug_expr): Convert base address and offset to the same
	mode.  Use it to convert addresses to other modes.  Accept
	ptr_mode addresses.

2009-09-23  Dodji Seketeli <>

	PR debug/41065
	* function.h (types_used_by_vars_hash): Declare new hash table.
	(types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
	equality and hash function for the hash table.
	(types_used_by_cur_var_decl): Declare a new global chained list.
	(types_used_by_var_decl_insert): Declare new function.
	* function.c (types_used_by_vars_hash): Define the hashtable ...
	(types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
	its equality and hash functions.
	(hash_types_used_by_vars_entry): New hash helper.
	(types_used_by_cur_var_decl): Define the global chained list.
	(used_types_insert): Update the list of types used by the global
	variable being parsed.
	(types_used_by_var_decl_insert): Define new function.
	* c-common.h (record_types_used_by_current_var_decl): Declare ...
	* c-common.c (record_types_used_by_current_var_decl): ... new
	* c-decl.c (finish_decl): Record the types used by the global
	variable declaration we've just parsed.
	* dwarf2out.c (premark_used_types): Insert a new line between
	comment and function.
	(premark_used_types_helper): Fix comment.
	premark_types_used_by_global_vars): New functions.
	(prune_unused_types): Do not prune types used by global variables.

2009-09-23  Richard Guenther  <>

	* alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
	produced for bigendian targets with promoted subregs.

2009-09-23  Richard Guenther  <>

	* value-prof.c (gimple_ic): Purge old EH edges only after building
	the new ones.

2009-09-23  Nick Clifton  <>

	* config/arc/arc.c (arc_trampoline_init): Fix typo.

2009-09-23  Jakub Jelinek  <>

	PR bootstrap/41405
	* doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.

	PR bootstrap/41436
	* cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
	on non-nested functions.

2009-09-23  Jakub Jelinek  <>
	    Jan Hubicka  <>

	* dwarf2out.c (loc_list_plus_const): Only define if
	(address_of_int_loc_descriptor): Likewise.

	PR debug/41411
	* dwarf2out.c (mem_loc_descriptor): Handle HIGH.

2009-09-23  Uros Bizjak  <>

	PR c/39779
	* c-typeck.c (build_binary_op) <short_shift>: Check that integer
	constant is more than zero.

2009-09-23  Alan Modra  <>

	PR target/40473
	* config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
	call final to emit non-scheduled prologue, instead insert at entry.

2009-09-22  Loren J. Rittle  <>
	    Joseph S. Myers  <>

	* doc/install.texi (*-*-freebsd*): Add proper format codes.

2009-09-22  Basile Starynkevitch  <>
	    Rafael Avila de Espindola  <>

	* gengtype.c (is_file_equal): New function.
	(close_output_files): Use is_file_equal. Free of->buf.

2009-09-22  Basile Starynkevitch  <>
	    Rafael Avila de Espindola  <>

	* gengtype.c (write_types, write_local): Add the output_header
	argument. Update all callers.

2009-09-22  Dodji Seketeli  <>

	* dwarf2out.c (template_parameter_pack_die,
	gen_formal_parameter_pack_die ): New functions.
	(make_ith_pack_parameter_name): Remove this function.
	(dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
	(gen_generic_params_dies): Represent each template parameter pack
	by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
	represented by usual DW_TAG_template_*_parameter DIEs that are
	children of the DW_TAG_template_parameter_pack element DIE.
	(generic_parameter_die): This doesn't deal with parameter pack
	names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
	of parameter pack DIEs.
	(gen_formal_parameter_die): Add a flag to not emit DW_AT_name
	in certain cases, e.g. for pack elements.
	(gen_formal_types_die, gen_decl_die): Adjust usage of
	(gen_subprogram_die): Represent each function parameter pack by a
	DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
	represented by usual DW_TAG_formal_parameter DIEs that are children
	of the DW_TAG_formal_parameter_pack DIE. Remove references to
	____builtin_va_alist decls as no part of the compiler uses those
	* langhooks.h (struct lang_hooks_for_decls): Add
	function_parm_expanded_from_pack_p, get_generic_function_decl
	and function_parameter_pack_p hooks.  Fix comment for
	get_innermost_generic_parms hook.
	macros and use them to initialize lang_hook.

2009-09-22  Richard Henderson  <>

	* target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
	(TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
	* targhooks.c (default_asm_trampoline_template): Remove.
	(default_trampoline_adjust_address): Remove.
	(default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
	* targhooks.h: Update decls.

2009-09-22  Dave Korn  <>

	* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
	* config/i386/cygwin.h (LIBGCJ_SONAME): Define.
	* config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.

2009-09-22  Alexandre Oliva  <>

	PR debug/41295
	* reload1.c (reload): Reset debug insns with pseudos without

2009-09-22  Janis Johnson  <>

	* config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
	unconditional true for decimal float modes.
	* config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
	* config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.

2009-09-22  Loren J. Rittle  <>

	* unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
	Enable a new case for __FreeBSD__ >= 7.
	* crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
	* config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
	* config/freebsd-spec.h: Conditionally define LINK_EH_SPEC

	* doc/install.texi (*-*-freebsd*): Update target information.

2009-09-22  Richard Guenther  <>

	PR middle-end/41395
	* tree-dfa.c (get_ref_base_and_extent): Handle trailing
	arrays really properly.

2009-09-22  Richard Henderson  <>

	PR target/41246
	* target.h (struct gcc_target): Add asm_out.trampoline_template,
	calls.static_chain, calls.trampoline_init,
	* builtins.c (expand_builtin_setjmp_receiver): Use
	targetm.calls.static_chain; only clobber registers.
	(expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
	set up memory attributes properly for the trampoline block.
	(expand_builtin_adjust_trampoline): Use
	* calls.c (prepare_call_address): Add fndecl argument.  Use
	* df-scan.c (df_need_static_chain_reg): Remove.
	(df_get_entry_block_def_set): Use targetm.calls.static_chain;
	consolodate static chain handling.
	* doc/tm.texi: Document new hooks.
	* emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
	(init_emit_regs): Don't initialize them.
	* expr.h (prepare_call_address): Update decl.
	* final.c (profile_function): Use targetm.calls.static_chain.
	* function.c (expand_function_start): Likewise.
	* rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
	* stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
	only clobber registers.
	* targhooks.c (default_static_chain): New.
	(default_asm_trampoline_template, default_trampoline_init): New.
	(default_trampoline_adjust_address): New.
	* targhooks.h: Declare them.
	* varasm.c (assemble_trampoline_template): Use
	targetm.asm_out.trampoline_template.  Make the memory block const
	and set its size.

	* config/alpha/alpha.c (alpha_trampoline_init): Rename from
	alpha_initialize_trampoline.  Make static.  Merge VMS parameter
	differences into the TARGET_ABI_OPEN_VMS code block.
	* config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
	* config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.

	* config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
	(TRAMPOLINE_TEMPLATE): Merge with ...
	(INITIALIZE_TRAMPOLINE): ... this and move ...
	* config/arc/arc.c (arc_trampoline_init): ... here.

	* config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(arm_asm_trampoline_template): New.
	(arm_trampoline_init, arm_trampoline_adjust_address): New.
	code to arm_asm_trampoline_template.
	(INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
	adjust for target hook parameters.


	* config/bfin/bfin-protos.h (initialize_trampoline): Remove.
	* config/bfin/bfin.c (bfin_asm_trampoline_template): New.
	(bfin_trampoline_init): Rename from initialize_trampoline;
	make static; update for target hook parameters.
	* config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to

	* config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
	TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
	cris_trampoline_init): New.
	* config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
	adjust for target hook parameters.

	* config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
	TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
	fr30_trampoline_init): New.
	* config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
	adjust for target hook parameters.

	* config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
	(frv_trampoline_init): Rename from frv_initialize_trampoline;
	make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
	* config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
	* config/frv/frv-protos.h (frv_initialize_trampoline): Remove.

	* config/h8300/h8300.c (h8300_trampoline_init): New.
	* config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
	to h8300_trampoline_init and adjust for hook parameters.

	* config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
	* config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
	(ia64_trampoline_init): Rename from ia64_initialize_trampoline;
	make static; adjust for hook parameters.
	* config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
	* config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.

	* config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
	* config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
	(m32c_trampoline_init): Rename from m32c_initialize_trampoline;
	adjust for hook parameters.
	* config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
	(m32r_trampoline_init): New.
	* config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to

	* config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
	(m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
	make static; update for hook parameters.
	* config/m68hc11/m68hc11-protos.h: Update.
	* config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(mcore_function_value): Fix typo.
	(mcore_asm_trampoline_template, mcore_trampoline_init): New.
	* config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
	to mcore_asm_trampoline_template.
	(INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.

	* config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
	* config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
	(mep_trampoline_init): Rename from mep_init_trampoline; make static;
	update for hook parameters.
	* config/mep/mep-protos.h (mep_init_trampoline): Remove.

	* config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
	mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
	mips_trampoline_init): New.
	* config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
	update for hook parameters.

	* gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(mmix_trampoline_size): Remove.
	(mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
	make static.  Remove out-of-date tetra vs octa comment.
	(mmix_trampoline_init): Rename from mmix_initialize_trampoline;
	make static; update for hook parameters.
	* config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
	(TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
	* gcc/config/mmix/mmix-protos.h: Update.

	* config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
	mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
	mn10300_trampoline_init): New.
	* config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.

	* config/moxie/moxie.c (moxie_static_chain,
	moxie_asm_trampoline_template, moxie_trampoline_init,
	* config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
	(TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.

	* gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
	pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
	pa_trampoline_adjust_address): New.
	* config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
	(TRAMPOLINE_CODE_SIZE): Move to pa.c.
	(INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
	adjust for hook parameters.
	(TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.

	* config/pdp11/pdp11.c (pdp11_trampoline_init): New.
	* config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
	(INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.

	* config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
	* config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
	(rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
	make static; adjust parameters for the hook.
	* config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/s390/s390.c (s390_asm_trampoline_template): Rename from
	s390_trampoline_template; make static.
	(s390_trampoline_init): Rename from s390_initialize_trampoline;
	make static; adjust for target hook.
	* config/s390/s390-protos.h: Remove trampoline decls.
	* config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/score/score-protos.h (score_initialize_trampoline): Remove.
	* config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(score_asm_trampoline_template): New.
	(score_trampoline_init): Rename from score_initialize_trampoline;
	make static; adjust for hook parameters.
	* config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
	* config/score/score3.c (score3_asm_trampoline_template): New.
	(score3_trampoline_init): Rename from score3_initialize_trampoline;
	adjust for target hook.
	* config/score/score7.c (score7_asm_trampoline_template): New.
	(score7_trampoline_init): Rename from score7_initialize_trampoline;
	adjust for target hook.
	* config/score/score3.h, config/score/score7.h: Update.

	* config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
	* config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
	(sh_trampoline_init): Rename from sh_initialize_trampoline;
	make static; adjust for target hook parameters.
	(sh_trampoline_adjust_address): New.
	* config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
	(TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.

	* config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
	(sparc32_initialize_trampoline): Rename from
	sparc_initialize_trampoline; make static; replace tramp parameter
	with m_tramp and update memory accesses.
	(sparc64_initialize_trampoline): Similarly.
	(sparc_trampoline_init): New.
	* config/sparc/sparc-protos.h: Remove trampoline decls.
	* config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
	* config/sparc/ (nonlocal_goto): Don't use static_chain_rtx.

	* config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
	(array_to_constant): Make ARR parameter const.
	(spu_trampoline_init): Rename from spu_initialize_trampoline;
	make static; update for hook parameters.
	* config/spu/spu-protos.h: Update decls.
	* config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
	from xstormy16_initialize_trampoline; make static; update for
	hook parameters.
	* config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.

	* config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(v850_can_eliminate): Make static.
	(v850_asm_trampoline_template, v850_trampoline_init): New.
	* config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
	and adjust for target hook parameters.

	* config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(vax_asm_trampoline_template, vax_trampoline_init): New.
	* config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
	(INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.

	* config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
	(xtensa_asm_trampoline_template): Rename from
	xtensa_trampoline_template; make static.
	(xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
	make static; update for hook parameters.
	* config/xtensa/xtensa-protos.h: Remove trampoline decls.
	* config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.

	* config/i386/i386.c (ix86_function_regparm): Do not issue an
	error for nested functions with regparm=3.
	(ix86_compute_frame_layout): Adjust frame pointer offset for
	(ix86_expand_prologue): Handle ix86_static_chain_on_stack.
	(ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
	don't reset to UNITS_PER_WORD.
	(ix86_emit_leave): Adjust ix86_cfa_state.
	(ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
	(ix86_static_chain): New.
	(ix86_trampoline_init): Rename from x86_initialize_trampoline;
	make static; update for target hook parameters; use ix86_static_chain.
	* config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
	(TRAMPOLINE_SIZE): Use 24 for 64-bit.
	(struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
	to the end.  Add static_chain_on_stack.
	(ix86_static_chain_on_stack): New.

	* config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
	(m68k_output_mi_thunk): Don't use static_chain_rtx.
	(m68k_trampoline_init): New.
	* config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
	m68k_trampoline_init and adjust for hook parameters.
	* config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.

2009-09-22  Jakub Jelinek  <>

	* config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
	for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.

	* reload1.c (reload): Call wrap_constant when substituting
	reg for equiv inside of DEBUG_INSNs.

	PR bootstrap/41405
	* dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
	add_call_src_coords_attributes, add_high_low_attributes,
	gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
	gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
	dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
	when -gdwarf-2 -gstrict-dwarf.
	(loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
	-gdwarf-[23] -gstrict-dwarf.
	(address_of_int_loc_descriptor, loc_descriptor,
	loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
	DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
	* common.opt (gno-strict-dwarf, gstrict-dwarf): New options.

2009-09-22  Richard Guenther  <>

	PR tree-optimization/41428
	* tree-ssa-ccp.c (ccp_fold_stmt): New function.
	(ccp_finalize): Pass it to substitute_and_fold.

2009-09-22  Richard Guenther  <>

	* tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
	(substitute_and_fold): Adjust prototype.
	* tree-vrp.c (vrp_evaluate_conditional): Make static.
	(simplify_stmt_using_ranges): Likewise.
	(fold_predicate_in): Move here from tree-ssa-propagate.c.
	(vrp_fold_stmt): New function.
	(vrp_finalize): Pass it to substitute_and_fold.
	* tree-flow.h (vrp_evaluate_conditional): Remove.
	(simplify_stmt_using_ranges): Likewise.
	* tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
	* tree-ssa-copy.c (fini_copy_prop): Likewise.
	* tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
	(fold_predicate_in): Move to tree-vrp.c.
	(substitute_and_fold): Use the callback instead of calling into
	tree-vrp.c functions directly.

2009-09-22  Jakub Jelinek  <>

	* dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
	comparison warning on rs6000.

	PR middle-end/41429
	* tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
	(verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.

2009-09-22  Jack Howarth  <>

	PR middle-end/41260
	* gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
	* gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
	LIB_SPEC for darwin10 and later since it always uses the unwinder in
	libSystem which is derived from the gcc 4.2.1 unwinder.

2009-09-22  Dave Korn  <>

	PR middle-end/41357
	* varasm.c (default_encode_section_info): Copy TLS model into
	sym_ref flags regardless of backend support for TLS, for all
	model types except TLS_MODEL_EMULATED.

2009-09-22  Dave Korn  <>

	PR bootstrap/41404
	* dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
	we can handle it correctly.

2009-09-21  Gerald Pfeifer  <>

	* doc/install.texi (os2): Remove section.

2009-09-21  Gerald Pfeifer  <>

	* doc/standards.texi (Objective-C): Adjust two URLs.

2009-09-21  Giuseppe Scrivano <>

	* tree-tailcall.c (process_assignment): Don't check if a
	multiplication or an addition are already present.
	(find_tail_calls): Combine multiple additions and multiplications.
	(adjust_accumulator_values): Emit accumulators.

2009-09-21  Kai Tietz  <>

	* config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
	xmm register restore.

2009-09-21  Jan Hubicka  <>

	* dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
	(dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
	restore at the end.

2009-09-21  Eric Botcazou  <>

	* stor-layout.c (layout_type): Remove obsolete code.

2009-09-20  H.J. Lu  <>

	PR middle-end/41395
	* opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.

2009-09-20  Kaveh R. Ghazi  <>

	PR middle-end/30789
	* builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
	(do_mpc_ckconv): Accept FORCE_CONVERT parameter.
	(fold_builtin_2, do_mpc_arg1): Update accordingly.
	* fold-const.c (const_binop): Likewise.
	* real.h (do_mpc_arg2): Update prototype.

2009-09-20  Jan Hubicka  <>

	* dwarf2out.c (add_const_value_attribute): Return true if successful.
	(add_location_or_const_value_attribute): Rewrite using
	(tree_add_const_value_attribute): Return true if successful.
	(tree_add_const_value_attribute_for_decl): Likewise.

	* dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
	(loc_descriptor): ... here;
	(loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
	(cst_pool_loc_descr): Break out from ...; do not reffer constant
	pool items that was not marked for output.
	(loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
	(loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
	(loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
	IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
	DW_OP_stack_value to get address of items that are not available
	as addresses.
	(dw_loc_list): Handle single element lists correctly.

2009-09-20  Kai Tietz  <>
	    Pascal Obry  <>

	* unwind-dw2-fde.c (classify_object_over_fdes):
	Cast the constant 1 to _Unwind_Ptr.
	(add_fdes): Likewise.
	(linear_search_fdes): Likewise.

2009-09-20  Eric Botcazou  <>

	* stor-layout.c (set_sizetype): Avoid useless type copy.

2009-09-20  Richard Sandiford  <>

	* (gcc_cv_ld_mips_personality_relaxation): New
	feature check.
	(HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
	* configure, Regenerate.
	* dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
	* config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
	for global data if the output could be used in a shared library.
	* config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm

2009-09-20  Paolo Bonzini <>

	PR rtl-optimization/39886
	* combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
	just when insn is equal to BB_END (bb).

2009-09-19  Adam Nemet  <>

	* config/mips/mips.opt (mrelax-pic-calls): New option.
	* config/mips/mips.c (mips_strip_unspec_address): Move it up in
	the file.
	(mips_unspec_call): Change "unspec_call" expander into this.
	(mips_strip_unspec_call): New function.
	(mips_got_load): Call mips_unspec_call instead of
	(mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
	(mips_cfg_in_reorg): New function.
	(mips16_lay_out_constants): Use it to decide whether to call
	CFG-aware insn splitting.
	(r10k_insert_cache_barriers): Move CFG set-up code from here to
	mips_reorg.  Move DF set-up code from here ...
	(mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
	from here.
	(mips_reorg): Call mips_df_reorg instead of
	r10k_insert_cache_barriers.  Move CFG set-up code here from
	(mips_call_expr_from_insn): New function.
	(mips_pic_call_symbol_from_set): Likewise.
	(mips_find_pic_call_symbol): Likewise.
	(mips_annotate_pic_call_expr): Likewise.
	(mips_get_pic_call_symbol): Likewise.
	(mips_annotate_pic_calls): Likewise.
	(mips_override_options): Disable -mrelax-pic-calls unless PIC
	calls are used.
	(mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
	* config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
	* config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
	* config/mips/ (UNSPEC_CALL_ATTR): New unspec.
	(unspec_call<mode>): Remove it.
	(sibcall_internal, sibcall_value_internal,
	sibcall_value_multiple_internal, call_internal, call_split,
	call_value_internal, call_value_split,
	call_value_multiple_internal, call_value_multiple_split): Pass
	(call_internal_direct, call_direct_split,
	call_value_internal_direct, call_value_direct_split): Pass -1 as
	* <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
	* configure: Regenerate.
	* doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
	and -mno-relax-pic-calls.
	(MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.

2009-09-19  Ralf Wildenhues  <>

	PR bootstrap/35619
	* (stmp-fixinc): Ensure `include-fixed' is created
	in the directory this rule is called from, rather than the
	toplevel 'gcc' directory, to fix in-tree build.

2009-09-19  Chris Demetriou  <>

	PR preprocessor/28435:
	* c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
	to cpplib that the preprocessor output is needed.

2009-09-19  Jakub Jelinek  <>

	* config/rs6000/ (*save_gpregs_<mode>, *save_fpregs_<mode>,
	*restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
	*return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.

	PR bootstrap/41397
	* dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
	instead of assuming it has always a REG inside of it.

2009-09-18  Gerald Pfeifer  <>

	* config/freebsd.h: Update comment on types.
	(WINT_TYPE): Define.

2009-09-18  Jason Merrill  <>

	* c.opt: Add -fno-deduce-init-list.

2009-09-18  Neil Vachharajani  <>

	* value-prof.c (interesting_stringop_to_profile_p): Added output
	argument to indicate which parameter is the size parameter.
	* value-prof.c (gimple_stringop_fixed_value): Use
	* value-prof.c (gimple_stringops_transform): Update call sites to
	INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.

2009-09-18  Uros Bizjak  <>

	PR target/38288
	From David Binderman <>:
	* gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
	local variable f.  Remove stale comments.
	(ix86_compute_frame_layout): Remove useless local variable total_size.
	Remove #if 0'd code.
	(legitimate_address_p): Remove useless local variables
	reason_rtx and reason.
	(ix86_split_copysign_const): Remove useless local variable op1.
	(scale_counter): Remove useless local variable piece_size_mask.

2009-09-18  Jakub Jelinek  <>

	* stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
	output decl.

2009-09-17  Michael Haubenwallner  <>

	PR target/40913
	* config/pa/t-hpux-shlib: Set soname in

2009-09-17  Jakub Jelinek  <>

	* c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of

2009-09-17  Alexandre Oliva  <>

	* dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
	DW_OP_implicit_value even without dwarf_version 4.

2009-09-17  Jan Hubicka  <>

	* dwarf2out.c: Include tree-pass.h and gimple.h.
	(loc_list_plus_const): New function.
	(loc_descriptor_from_tree_1): Rename to ...
	(loc_descriptor_from_tree): ... remove original.
	(loc_list_from_tree): New function.
	(add_AT_location_description): Accept location list.
	(tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
	(concatn_mem_loc_descriptor): Remove.
	(mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
	returning NULL.
	(secname_for_decl): Move up.
	(hidden_reference_p): New function; break out from ...
	(loc_by_refernece): ... here; move up.
	(dw_loc_list): New function.
	(single_element_loc_list): New function.
	(single_element_loc_list_p): New function.
	(add_loc_descr_to_each): New function.
	(add_loc_list): New function.
	(loc_descr_from_tree): Make wraper of loc_list_from_tree.
	(loc_list_from_tree): Reroganized from loc_descr_from_tree;
	add diagnostics why expansion failed.
	(add_location_or_const_value_attribute): Support location lists.
	(add_bound_info): Likewise.
	(descr_info_loc): Update call of loc_descriptor_from_tree.
	(gen_variable_die): Work on location lists.
	* final.c (pass_final): Add dump file.
	* (dwarf2out.o): Add new dependencies.

2009-09-17  Janis Johnson  <>

	PR c/41049
	* real.c decimal_from_integer, decimal_integer_string): New.
	(real_from_integer): Use them as special case for decimal float.
	* config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
	(_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
	Do not append zero after the decimal point in string to convert.

2009-09-17  Alexander Monakov  <>

	* graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
	for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.

2009-09-17  Martin Jambor  <>

	* common.opt (fipa-sra): New switch.
	* opts.c (decode_options): Turn flag_ipa_sra on for opt2.
	* timevar.def (TV_IPA_SRA): New timevar.
	* params.def (ipa-sra-ptr-growth-factor): New parameter.
	* doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
	* tree-sra.c: Include cgraph.c.
	(enum sra_mode): Added SRA_MODE_EARLY_IPA.
	(struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
	and grp_not_necessarilly_dereferenced.
	(func_param_count): New variable.
	(encountered_apply_args): New variable.
	(bb_dereferences): New variable.
	(final_bbs): New variable.
	(no_accesses_representant): New variable.
	(no_accesses_p): New function.
	(dump_access): Dump the new fields.
	(sra_initialize): Set encountered_apply_args to false.
	(get_ssa_base_param): New function.
	(mark_parm_dereference): New function.
	(create_access): Caring for INIDRECT_REFs and different handling of
	varialble length accesses in early IPA SRA.  Store the stmt - a new
	parameter - to the new access.
	(build_access_from_expr_1): New parameter stmt, passed to
	create_access.  Handle INDIRECT_REFs.
	(build_access_from_expr): Pass the current statement to
	(disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
	(build_accesses_from_assign): Pass the current statement to
	build_access_from_expr_1.  Do not create assign links in IPA-SRA.
	(scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
	final_bbs when necessary.  Check for calls to __builtin_apply_args.
	Fixup EH info if anythng was changed.
	(is_unused_scalar_param): New function.
	(ptr_parm_has_direct_uses): New function.
	(find_param_candidates): New function.
	(mark_maybe_modified): New function.
	(analyze_modified_params): New function.
	(propagate_dereference_distances): New function.
	(dump_dereferences_table): New function.
	(analyze_caller_dereference_legality): New function.
	(unmodified_by_ref_scalar_representative): New function.
	(splice_param_accesses): New function.
	(decide_one_param_reduction): New function.
	(enum ipa_splicing_result): New type.
	(splice_all_param_accesses): New function.
	(get_param_index): New function.
	(turn_representatives_into_adjustments): New function.
	(analyze_all_param_acesses): New function.
	(get_replaced_param_substitute): New function.
	(get_adjustment_for_base): New function.
	(replace_removed_params_ssa_names): New function.
	(sra_ipa_reset_debug_stmts): New function.
	(sra_ipa_modify_expr): New function.
	(sra_ipa_modify_assign): New function.
	(convert_callers): New function.
	(modify_function): New function.
	(ipa_sra_preliminary_function_checks): New function.
	(ipa_early_sra): New function.
	(ipa_early_sra_gate): New function.
	(pass_early_ipa_sra): New variable.
	* (tree-sra.o): Add cgraph.h to dependencies.

2009-09-17  Michael Matz  <>

	PR middle-end/41347
	* tree.c (build_type_attribute_qual_variant): Export.
	* tree.h (build_type_attribute_qual_variant): Declare.
	* tree-inline.c (remap_type_1): Use it to build variants with
	the original qualifiers and attributes.

2009-09-17  Andreas Krebbel  <>

	* cfglayout.c (fixup_reorder_chain): Accept conditional jumps
	without a fallthrough edge.

2009-09-16  DJ Delorie  <>

	* config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
	chip and ignore the "fast_interrupt" attribute if so.

2009-09-16  Richard Henderson  <>

	PR middle-end/41360
	* cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
	barrier fix.

2009-09-16  Richard Henderson  <>

	PR target/41246
	* tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
	is set only if DECL_NO_STATIC_CHAIN is unset.
	* tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
	(walk_all_functions): Use it.
	(finalize_nesting_tree): Likewise.
	(unnest_nesting_tree): Likewise.
	(free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
	(get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
	(convert_gimple_call): Early out if gimple_call_chain already set.
	(convert_all_function_calls): Iterate until no new functions
	require a static chain.
	(finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
	when building a trampoline.  Use dump_function_to_file instead
	of dump_function.
	(lower_nested_functions): Open dump_file.  Validate that decls
	that have DECL_NO_STATIC_CHAIN from the front end don't have that
	bit reset by this pass.

2009-09-16  Michael Matz  <>

	PR fortran/41212
	* tree.h (struct tree_decl_common): Add decl_restricted_flag,
	shorten decl_common_unused.
	(DECL_RESTRICTED_P): New accessor.
	* tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
	to disambiguate marked decls and restrict pointers.

2009-09-16  Richard Henderson  <>

	PR middle-end/41360
	* cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.

2009-09-16  Jakub Jelinek  <>

	* integrate.c (set_block_abstract_flags): Call
	set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.

2009-09-16  Richard Guenther  <>

	PR middle-end/34011
	* tree-flow-inline.h (may_be_aliased): Compute readonly variables
	as non-aliased.

2009-09-16  DJ Delorie  <>
	    Kaz Kojima  <>

	* config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
	(sh_expand_prologue): Update calls to output_stack_adjust.
	(sh_expand_epilogue): Likewise.

2009-09-15  Adam Nemet  <>

	PR bootstrap/41349
	* reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
	trying to limit the extent of searches in the insn stream.

2009-09-15  Nathan Froyd  <>
	    Jakub Jelinek  <>

	PR target/41175
	PR target/40677
	* config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
	(rs6000_savres_strategy): Always save FP registers inline if the
	target doesn't support hardware double-precision.  Set the above
	bits in return value when needed.
	(rs6000_savres_routine_sym): Fix computation for cache selector.
	Mark the generated symbol as a function.  Rename exitp argument to
	lr.  Move code for determining the name of the symbol...
	(rs6000_savres_routine_name):  New function.  Add cases for
	getting the names right on AIX and 64-bit Linux.
	(savres_routine_name): New variable.
	(rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
	lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
	on what the target routine uses as a base register.  If savep && lr
	describe saving of r0 into memory slot.
	(rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
	line calls for AIX ABI.
	(rs6000_output_function_prologue): Use rs6000_savres_routine_name to
	determine FP save/restore functions.
	(rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
	frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
	(rs6000_emit_epilogue): Adjust computation of restore_lr.
	Duplicate restoration of LR and execute the appropriate one
	depending on whether GPRs are being restored inline.  Set r11 from
	offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
	r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
	Fix out of line calls for AIX ABI.
	* config/rs6000/ (*return_and_restore_fpregs_aix_<mode>):
	New insn.
	* config/rs6000/ (*save_gpregs_spe): Use explicit match for
	register 11.
	(*restore_gpregs_spe): Likewise.
	(*return_and_restore_gpregs_spe): Likewise.
	* config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
	Define to empty string unconditionally.
	* config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
	Define to empty string unconditionally.

2009-09-15  Jan Hubicka  <>

	* doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
	* params.def (inline-insns-auto): Likewise.

2009-09-15  Martin Jambor  <>

	* ipa-inline.c (estimate_function_body_sizes): Dump info about
	individual statements only at TDF_DETAILS dump level.  Format
	source for 80 characters per line.

2009-09-15  Christian Bruel  <>

	* regrename.c (do_replace): Update REG_DEAD notes.

2009-09-15  Revital Eres  <>

	* targhooks.c (default_builtin_support_vector_misalignment):
	New builtin function.
	* targhooks.h (default_builtin_support_vector_misalignment):
	* target.h (builtin_support_vector_misalignment):
	New field in struct gcc_target.
	* tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
	new builtin function.
	* config/rs6000/rs6000.c
	(rs6000_builtin_support_vector_misalignment): New function.

2009-09-15  Jie Zhang  <>

	* config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
	instead of INSN_P.
	(bfin_optimize_loop): Likewise.
	(bfin_gen_bundles): Likewise.
	(workaround_speculation): Likewise.
	(find_load): Return NULL_RTX for debug_insn.

2009-09-15  Uros Bizjak  <>

	* config/alpha/ (smaxsf3): Disable for IEEE mode.
	(sminsf3): Ditto.

2009-09-14  DJ Delorie  <>

	* config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
	* config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
	VLIW mode.

2009-09-14  Richard Henderson  <>
	    Jakub Jelinek  <>

	* builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
	* cfgbuild.c (make_edges): Handle asm goto.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	* cfgrtl.c (patch_jump_insn): Likewise.
	* gimple-pretty-print.c (dump_gimple_asm): Likewise.
	* gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
	(gimple_build_asm_vec): Add and use labels parameter.
	(gimple_build_asm): Remove.
	(walk_gimple_asm): Walk labels too.
	* gimple.def (GIMPLE_ASM): Update docs.
	* gimple.h: Update decls.
	(struct gimple_statement_asm): Change nc to use unsigned char;
	add nl member.
	(gimple_asm_nlabels): New.
	(gimple_asm_label_op, gimple_asm_set_label_op): New.
	* gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
	into gimple_build_asm_vec.
	* jump.c (mark_jump_label_asm): New.
	(mark_jump_label): Use it.
	(redirect_jump_1): Handle asm goto.
	(invert_jump_1): Soft fail if X is null.
	* recog.c (extract_asm_operands): New.
	(asm_noperands): Use it; handle asm labels.
	(decode_asm_operands): Use extract_asm_operands.
	(asm_operand_ok): Properly handle empty string.
	* reg-stack.c (get_asm_operands_in_out): Rename from
	get_asm_operand_n_inputs; use extract_asm_operands; return both
	inputs and outputs by reference; update all callers.
	* rtl.def (ASM_OPERANDS): Add label vector as operand 6.
	(extract_asm_operands): Declare.
	* stmt.c (expand_asm_operands): Add and use labels parameter.
	(check_unique_operand_names): Likewise.
	(resolve_asm_operand_names, resolve_operand_name_1): Likewise.
	(expand_asm_stmt): Handle asm labels.
	* tree-cfg.c (make_gimple_asm_edges): New.
	(make_edges): Use it.
	(cleanup_dead_labels): Handle asm labels.
	(is_ctrl_altering_stmt): Likewise.
	(gimple_redirect_edge_and_branch): Likewise.
	* tree.def (ASM_EXPR): Add 5th operand.
	* tree.h (ASM_LABELS): New.
	(resolve_asm_operand_names): Update decl.

	* c-parser.c (c_parser_asm_statement): Parse asm goto.
	(c_parser_asm_goto_operands): New.
	* c-tree.h (build_asm_expr): Update decl.
	* c-typeck.c (build_asm_expr): Add and use labels parameter.
	* doc/extend.texi: Document asm goto.

2009-09-14  Richard Henderson  <>

	* except.h: Update declarations.
	(struct pointer_map_t): Forward declare.
	(struct eh_landing_pad_d, eh_landing_pad): New.
	(struct eh_catch_d, eh_catch): New.
	(struct eh_region_d): Remove next_region_sharing_label, aka,
	label, tree_label, landing_pad, post_landing_pad, resume,
	may_contain_throw.  Rename region_number to index.  Remove
	u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
	Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
	(VEC(eh_landing_pad,gc)): New.
	(struct eh_status): Remove last_region_number.  Add lp_array,
	throw_stmt_table, ttype_data, ehspec_data.
	(ehr_next, FOR_ALL_EH_REGION_AT): New.
	* except.c (lang_protect_cleanup_actions): Return tree.
	(struct ehl_map_entry): Remove.
	(init_eh_for_function): Push zero entries for region and lp_array.
	(gen_eh_region): Add to region_array immediately.
	(gen_eh_region_catch): Operate on eh_catch objects.
	(gen_eh_landing_pad): New.
	(get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
	(get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
	(get_eh_region_from_number, get_eh_region_from_number_fn): New.
	(get_eh_landing_pad_from_number_fn): New.
	(get_eh_landing_pad_from_number): New.
	(get_eh_region_from_lp_number_fn): New.
	(get_eh_region_from_lp_number): New.
	(expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
	(get_exception_pointer, get_exception_filter): Remove.
	(collect_eh_region_array, can_be_reached_by_runtime): Remove.
	(current_function_has_exception_handlers): Simplify.
	(bring_to_root, eh_region_replaceable_by_p): Remove.
	(replace_region, hash_type_list, hash_eh_region): Remove.
	(eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
	(label_to_region_map, num_eh_regions): Remove.
	(get_next_region_sharing_label, must_not_throw_labels): Remove.
	(find_exception_handler_labels): Remove.
	(duplicate_eh_regions_0, find_prev_try): Remove.
	(struct duplicate_eh_regions_data): New.
	(duplicate_eh_regions_1): Rewrite.
	(duplicate_eh_regions): Return a pointer map instead of an
	integer offset.
	(copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
	(redirect_eh_edge_to_label): Remove.
	(eh_region_outermost): Rewrite using eh_region pointers
	instead of integers.
	(add_ttypes_entry): Update for ttype_data move to eh_status.
	(add_ehspec_entry): Rewrite with VEC instead of varray.
	(assign_filter_values): Likewise.  Export.
	(build_post_landing_pads, connect_post_landing_pads): Remove.
	(dw2_build_landing_pads): Rewrite to use lp_array.
	(struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
	(sjlj_assign_call_site_values): Rewrite to use lp_array.
	(sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
	(sjlj_mark_call_sites): Update for landing pad numbers.
	(finish_eh_generation): Rewrite.
	(gate_handle_eh): Do nothing for no eh tree.
	(pass_rtl_eh): Move up near finish_eh_generation.
	(remove_eh_landing_pad): New.
	(remove_eh_handler): Export.
	(remove_eh_region, remove_eh_handler_and_replace): Remove.
	(for_each_eh_label): Rewrite to use lp_array.
	(make_reg_eh_region_note): New.
	(make_reg_eh_region_note_nothrow_nononlocal): New.
	(insn_could_throw_p): New.
	(copy_reg_eh_region_note_forward): New.
	(copy_reg_eh_region_note_backward): New.
	(check_handled, add_reachable_handler): Remove.
	(reachable_next_level, foreach_reachable_handler): Remove.
	(arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
	(get_eh_region_and_lp_from_rtx): New.
	(get_eh_region_from_rtx): New.
	(can_throw_internal_1, can_throw_external_1): Remove.
	(can_throw_internal): Use get_eh_region_from_rtx.
	(can_throw_external): Use get_eh_region_and_lp_from_rtx.
	(insn_nothrow_p, can_nonlocal_goto): New.
	(expand_builtin_eh_common, expand_builtin_eh_pointer): New.
	(expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
	(add_action_record): Use VEC not varray.
	(collect_one_action_chain): Update for eh_region changes.
	(convert_to_eh_region_ranges): Make static.  Use VEC not varray.
	Use get_eh_region_and_lp_from_rtx.
	(gate_convert_to_eh_region_ranges): New.
	(pass_convert_to_eh_region_ranges): Use it.
	(push_uleb128, push_sleb128): Use VEC not varray.
	(output_one_function_exception_table): Likewise.
	(dump_eh_tree): Update for eh_region changes.
	(verify_eh_tree): Likewise.
	(verify_eh_region, default_init_unwind_resume_libfunc): Remove.
	* tree-eh.c: Include target.h.
	(add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
	Don't disallow GIMPLE_RESX; adjust argument check.
	(add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
	(record_stmt_eh_region): Update for landing pad numbers;
	generate a landing pad if necessary.
	(remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
	(remove_stmt_from_eh_lp_fn): Similarly.
	(lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
	Update for lp numbers; don't special case missing throw_stmt_table.
	(lookup_expr_eh_lp): Similarly.
	(lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
	(eh_seq, eh_region_may_contain_throw): New.
	(struct leh_state): Add ehp_region.
	(struct leh_tf_state): Remove eh_label.
	(emit_post_landing_pad): New.
	(emit_resx, emit_eh_dispatch): New.
	(note_eh_region_may_contain_throw): New.
	(frob_into_branch_around): Take eh_region not eh label;
	emit eh code into eh_seq.
	(honor_protect_cleanup_actions): Early exit for no actions.  Don't
	handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
	lower_eh_must_not_throw.  Emit code to eh_seq.
	(lower_try_finally_nofallthru): Emit eh code to eh_seq.
	(lower_try_finally_onedest): Likewise.
	(lower_try_finally_copy): Likewise.
	(lower_try_finally_switch): Likewise.
	(lower_try_finally): Initialize ehp_region.
	(lower_catch): Update for eh_catch objects.
	(lower_eh_filter): Don't handle must_not_throw.
	(lower_eh_must_not_throw): New.
	(lower_cleanup): Don't set eh_label.
	(lower_eh_constructs_2): Resolve eh builtins.
	(lower_eh_constructs): Initialize eh_region_may_contain_throw.
	Add eh_seq to the end of the function body.
	(make_eh_dispatch_edges): New.
	(make_eh_edge): Remove.
	(make_eh_edges): Simplify for landing pads.
	(redirect_eh_edge_1): New.
	(redirect_eh_edge): Use it.
	(redirect_eh_dispatch_edge): New.
	(stmt_could_throw_p): Use a switch.  Allow RESX.
	(stmt_can_throw_external): Use lookup_stmt_eh_lp.
	(stmt_can_throw_internal): Likewise.
	(maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
	(maybe_clean_or_replace_eh_stmt): Update for landing pads.
	(maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
	(gate_refactor_eh): New.
	(pass_refactor_eh): Use it.
	(lower_resx, execute_lower_resx, pass_lower_resx): New.
	(lower_eh_dispatch, execute_lower_eh_dispatch): New.
	(gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
	(remove_unreachable_handlers): Rename from
	tree_remove_unreachable_handlers; rewrite for landing pads;
	call remove_eh_handler directly.
	(remove_unreachable_handlers_no_lp): New.
	(unsplit_eh, unsplit_all_eh): New.
	(tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
	(cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
	(cleanup_empty_eh_unsplit): New.
	(cleanup_empty_eh): Rewrite.
	(cleanup_all_empty_eh): New.
	(execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
	handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
	(gate_cleanup_eh): New.
	(pass_cleanup_eh): Use it.
	(verify_eh_edges): Move later in file.  Expect one EH edge.
	(verify_eh_dispatch_edge): New.

	* (FUNCTION_H): Use vecprim.h, not varray.h.
	(gtype-desc.o): Add TARGET_H.
	(tree.o): Use EXCEPT_H, not except.h.
	(cfgbuild.o): Add EXPR_H.
	(GTFILES): Add vecprim.h.
	* builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
	* calls.c (emit_call_1): Use make_reg_eh_region_note.
	* cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
	calls to can_throw_internal.
	(rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
	(make_edges): Don't handle RESX; use can_nonlocal_goto.
	* cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
	(expand_gimple_stmt): Use make_reg_eh_region_note.
	(expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
	(gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
	or find_exception_handler_labels.
	* cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
	there is exacly one EH edge.  Use can_nonlocal_goto and
	* cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
	(cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
	* combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
	* cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
	* dce.c (deletable_insn_p_1): Don't test may_trap_p.
	(deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
	* dse.c (scan_insn): Use insn_could_throw_p.
	* emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
	* expr.c (expand_expr_real): Use make_reg_eh_region_note.
	(expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
	* fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
	(tree_expr_nonzero_warnv_p): Likewise.
	* function.h: Include vecprim.h, not varray.h
	(struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
	move ttype_data and ehspec_data members to struct eh_status; change
	action_record_data member to a VEC.
	* gcse.c (hash_scan_set): Use can_throw_internal.
	* gengtype.c (open_base_files): Add target.h to gtype-desc.c.
	* gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
	* gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
	(block_may_fallthru): Don't handle RESX_EXPR.
	* gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
	(dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
	(dump_gimple_stmt): Dump landing pad information with TDF_EH;
	* gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
	(gimple_size): Likewise.
	(gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
	(gimple_build_resx): Use gimple_build_with_ops.
	(is_gimple_val): Likewise.
	(is_gimple_stmt): Remove RESX_EXPR.
	(GIMPLE_RESX): Reorder with other EH constructs.
	* gimple.h (struct gimple_statement_eh_mnt): New.
	(struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
	(gimple_eh_filter_must_not_throw): Remove.
	(gimple_eh_filter_set_must_not_throw): Remove.
	(gimple_eh_must_not_throw_fndecl): New.
	(gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
	(is_gimple_resx): New.
	* gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
	* gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
	* ipa-inline.c (estimate_function_body_sizes): Don't try to
	handle must_not_throw_labels specially.
	* ipa-pure-const.c (check_call): Update debug statement for LP.
	* ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
	* ipa-utils.c (get_base_var): Likewise.
	* libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
	* lower-subreg.c (move_eh_region_note): Remove.
	(resolve_simple_move): Use copy_reg_eh_region_note_forward.
	* omp-low.c (new_omp_context): Update for eh_lp_nr.
	(create_task_copyfn): Likewise.
	(maybe_catch_exception): Use gimple_build_eh_filter.
	* optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
	REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
	* passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
	and pass_lower_resx.
	* print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
	* recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
	can_throw_internal, can_nonlocal_goto.
	* reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
	(emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
	(emit_output_reload_insns): Likewise.
	(copy_eh_notes): Remove.
	* rtl.def (RESX): Remove.
	* rtl.h: Update declarations.
	* sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
	* tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
	(update_eh_label): Remove.
	(cleanup_dead_labels_eh): New.
	(cleanup_deal_labels): Use it instead of update_eh_label.
	(gimple_merge_blocks): Update landing pad data structure when
	removing a landing pad label.
	(remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
	(is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
	(verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
	(verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
	(verify_stmt): Likewise.  Verify landing pads.
	(gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
	(gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
	(struct move_stmt_d): Add eh_map.
	(move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
	(move_stmt_r): Remap eh region numbers in builtin calls,
	resx and eh_dispatch.
	(move_block_to_fn): Remove eh_offset parameter.  Use
	(find_outermost_region_in_block): Operate on eh_region pointers
	instead of region numbers.
	(move_sese_region_to_fn): Expect eh_map instead of eh_offset from
	* tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
	test earlier.  Disallow EH landing pads.
	* tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
	* tree-flow.h: Update declarations.
	(struct tree_ann_common_d): Replace rn with lp_nr.
	* tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
	(remap_eh_region_nr, remap_eh_region_tree_nr): New.
	(remap_gimple_stmt): Remap eh region numbers in builtin calls,
	resx and eh_dispatch.
	(copy_bb): Use maybe_duplicate_eh_stmt_fn.
	(copy_edges_for_bb): Use make_eh_dispatch_edges.
	(copy_cfg_body): Expect eh_map instead of eh_region_offset
	from duplicate_eh_regions.
	(estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
	update RESX; handle EH_DISPATCH.
	(expand_call_inline): Set eh_lp_nr, not eh_region.
	(maybe_inline_call_in_expr): Likewise.
	* tree-inline.h (struct copy_body_data): Replace eh_region with
	eh_lp_nr, eh_region_offset with eh_map.
	* tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
	* tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
	* tree-pretty-print.c (dump_generic_node): Don't handle
	* tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
	(ao_ref_init_from_vn_reference): Likewise.
	* tree-ssa-sink.c (statement_sink_location): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	(mark_virtual_phi_result_for_renaming): Export.  Tidy.
	* tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
	(is_exception_related): Remove.
	(compute_avail): Don't call it.
	* tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
	* tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
	(find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
	(build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
	Build EH builtins.
	(build_resx): Remove.
	* tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
	* tree.h: Update declarations.
	(struct tree_label_decl): Add eh_landing_pad_nr.
	* value-prof.c (gimple_ic): Tidy variable names.  Update for
	landing pad numbers.
	(gimple_stringop_fixed_value): Tidy variable names.  Assert
	that neither call stmt can throw.
	* vecprim.h (uchar): New.
	(VEC(uchar,heap), VEC(uchar,gc)): New.

	* c-common.c (c_define_builtins): Update call to
	* c-parser.c (c_parse_file): Don't call

2009-09-14  Richard Sandiford  <>

	* config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
	(mips_cprestore_address_p): Likewise.
	(mips_save_gp_to_cprestore_slot): Likewise.
	(mips_restore_gp): Rename to...
	(mips_restore_gp_from_cprestore_slot): ...this.
	(mips_must_initialize_gp_p): Declare.
	(mips_emit_save_slot_move): Likewise.
	(mips_output_load_label): Return nothing.
	(mips_eh_uses): Declare.
	* config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
	(EH_USES): Likewise.
	(FIRST_PSEUDO_REGISTER): Update comment.
	(MIPS_ABSOLUTE_JUMP): New macro, extracted from...
	(REGISTER_NAMES): Add $cprestore.
	* config/mips/mips.c (machine_function): Remove has_gp_insn_p.
	Add load_label_length, has_inflexible_gp_insn_p,
	has_flexible_gp_insn_p, must_initialize_gp_p and
	(mips_expand_call): Don't generate split instructions here.
	(mips_split_call): Update the call to mips_restore_gp after
	the above name change.
	(mips16_cfun_returns_in_fpr_p): Move earlier in file.
	(mips_find_gp_ref): New function.
	(mips_insn_has_inflexible_gp_ref_p): Likewise.
	(mips_cfun_has_inflexible_gp_ref_p): Likewise.
	(mips_insn_has_flexible_gp_ref_p): Likewise.
	(mips_cfun_has_flexible_gp_ref_p): Likewise.
	(mips_function_has_gp_insn): Delete.
	(mips_global_pointer): Drop the df_regs_ever_live_p check.
	Use the new functions above.  Only return INVALID_REGNUM
	(mips_must_initialize_gp_p): New function.
	(mips_get_cprestore_base_and_offset): New function, extracted from...
	(mips_cprestore_slot):  Take a bool parameter.
	(mips_cfun_has_cprestore_slot_p): New function.
	(mips_cprestore_address_p): Likewise.
	(mips_save_gp_to_cprestore_slot): Likewise.
	(mips_restore_gp): Rename to...
	(mips_restore_gp_from_cprestore_slot): ...this.  Assert
	epilogue_completed.  Update the call to mips_cprestore_slot.
	Test cfun->machine->must_restore_gp_when_clobbered_p.
	(mips_direct_save_slot_move_p): New function.
	(mips_emit_save_slot_move): Likewise.
	(mips_output_cplocal): Test mips_must_initialize_gp_p () instead
	of cfun->machine->global_pointer.
	(mips_output_function_prologue): Check mips_must_initialize_gp_p ().
	(mips_save_reg): Use mips_emit_save_slot_move.
	(mips_expand_prologue): Set must_initialize_gp_p.
	Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
	for all cprestore saves.  Emit a use_cprestore instruction after
	setting up the cprestore slot.
	(mips_restore_reg): Use mips_emit_save_slot_move.
	(mips_process_load_label): New function.
	(mips_load_label_length): Likewise.
	(mips_output_load_label): Don't return asm: output it here instead.
	Use mips_process_load_label.
	(mips_adjust_insn_length): Adjust the length of branch instructions
	that have length MAX_PIC_BRANCH_LENGTH.
	(mips_output_conditional_branch): Update the call to
	mips_output_load_label.  Assume the branch target is OPERANDS[0]
	rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
	(mips_output_order_conditional_branch): Swap the meaning of
	(mips_variable_issue): Don't count ghost instructions.
	(mips_expand_ghost_gp_insns): New function.
	(mips_reorg): Rerun mips_reorg_process_insns if it returns true.
	(mips_output_mi_thunk): Set must_initialize_gp_p.
	(mips_eh_uses): New function.
	* config/mips/ (cprestore_save_slot_operand)
	(cprestore_load_slot_operand): New predicates.
	* config/mips/ (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
	(UNSPEC_MOVE_GP): Likewise.
	(MAX_PIC_BRANCH_LENGTH): New constant.
	(jal_macro): Use MIPS_ABSOLUTE_JUMPS.
	(length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
	branches.  Fix commentary.
	(loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
	Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
	Change type to "ghost".
	(loadgp_absolute_<mode>): Likewise.
	(loadgp_rtp_<mode>): Likewise.
	(copygp_mips16): Likewise.
	(loadgp_blockage): Remove redundant mode attribute.
	(potential_cprestore): New instruction.
	(cprestore): Turn into an unspec set.
	(use_cprestore): New instruction.
	(*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
	(*branch_fp_inverted): Likewise.
	(*branch_order<mode>): Likewise.
	(*branch_order<mode>_inverted): Likewise.
	(*branch_equality<mode>): Likewise.
	(*branch_equality<mode>_inverted): Likewise.
	(*branch_bit<bbv><mode>): Likewise.
	(*branch_bit<bbv><mode>_inverted): Likewise.
	(*branch_equality<mode>_mips16): Remove redundant mode.
	(jump): Turn into a define_expand.
	(*jump_absolute): New instruction.
	(*jump_pic): Likewise.
	(*jump_mips16): Rename previously-unnamed pattern.  Remove
	redundant mode attribute.
	(restore_gp): Split on epilogue_completed rather than
	reload_completed.  Change type to "ghost".
	(move_gp<mode>): New instruction.
	* config/mips/ (mips_bposge): Swap operands 0 and 1.
	Remove redundant mode attribute.
	* config/mips/ (bc1any4t): Likewise.
	(bc1any4f, bc1any2t, bc1any2f): Likewise.
	(*branch_upper_lower, *branch_upper_lower_inverted): Likewise.

2009-09-14  Michael Meissner  <>

	PR target/41210
	* config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
	are returned in the same register (vs34 or v2) that Altivec vector
	types are returned in.
	(rs6000_libcall_value): Ditto.

	PR target/41331
	* config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
	instead of explicit addsi3/adddi3 calls.
	(rs6000_split_multireg_move): Ditto.
	(rs6000_emit_allocate_stack): Ditto.
	(rs6000_emit_prologue): Ditto.
	(rs6000_output_mi_thunk): Ditto.

	* config/rs6000/ (bswapdi*): Don't assume the pointer
	size is 64 bits if we can use 64-bit registers.

2009-09-14  Bernd Schmidt  <>

	* config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak

	From Jie Zhang <>:
	* config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
	save FP and RETS with saveall attribute.
	(bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
	with saveall attribute.

	* config/bfin/bfin.c (bfin_expand_builtin,
	case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the

	From Jie Zhang <>:
	* config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
	before use in two places.
	* config/bfin/ (AREG): Define mode iterator.
	(reload_in, reload_out): Use mode iterator AREG.

2009-09-14  Richard Guenther  <>

	PR middle-end/41350
	* dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
	EH personality path.

2009-09-13  Richard Guenther  <>
	    Rafael Avila de Espindola  <>

	* langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
	(lhd_pass_through_t): Declare.
	* langhooks.h (struct lang_hooks): Add eh_runtime_type and
	* langhooks.c (lhd_pass_through_t): New function.
	* dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
	dwarf2out_begin_prologue): Use personality from current_function_decl.
	* expr.h (get_personality_function): Declare.
	* expr.c (get_personality_function): New function.
	(build_personality_function): Likewise.
	* libfuncs.h (libfunc_index): Remove LTI_eh_personality.
	(eh_personality_libfunc): Remove.
	* optabs.c (build_libfunc_function): New function split out from ...
	(init_one_libfunc): ... here.
	(tree_function_decl): Add personality.
	(lhd_gcc_personality): Declare.
	(build_personality_function): Likewise.
	* tree.c (gcc_eh_personality_decl): New.
	(lhd_gcc_personality): New function.
	* except.h (lang_eh_runtime_type): Remove.
	(enum eh_personality_kind): New.
	(build_personality_function): Declare.
	(function_needs_eh_personality): Declare.
	* except.c (lang_eh_runtime_type): Remove.
	(function_needs_eh_personality): New function.
	(add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
	(sjlj_emit_function_enter, output_function_exception_table):
	Use personality from current_function_decl.
	* tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
	* tree-inline.c (tree_can_inline_p): Do not inline across different
	EH personalities.
	(expand_call_inline): Likewise.  Adjust the callers EH personality.
	(tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
	* cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
	* (cgraph.o): Add $(EXCEPT_H) dependency.
	(c-parser.o): Likewise
	* c-tree.h (c_eh_initialized_p): Remove.
	(c_maybe_initialize_eh): Likewise.
	* c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
	(finish_decl): Don't call c_maybe_initialize_eh.
	(c_eh_initialized_p): Remove.
	(c_maybe_initialize_eh): Likewise.
	* c-parser.c (c_parser_omp_construct): Likewise.
	(c_parse_file): Initialize exception handling.

2009-09-13  Kai Tietz  <>

	* config.gcc (tm_file): Remove i386/biarch32.h
	for i?86-w64-mingw* case.
	(i?86-*-mingw* andx86_64-*-mingw*): Add multilib
	* Set for x64 mingw the option
	use_long_long_for_widest_fast_int to yes.

2009-09-13  Eric Botcazou  <>

	* tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
	* dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
	(dbxout_begin_function): Likewise.
	* final.c (dwarf2_debug_info_emitted_p): New predicate.
	(final_start_function): Do not emit debug info if DECL_IGNORED_P is
	set on the function.
	(final_end_function): Likewise.
	(final_scan_insn): Likewise.
	(rest_of_handle_final): Likewise.
	* varasm.c (assemble_start_function): Likewise.
	* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.

2009-09-12  Jason Merrill  <>

	* dbgcnt.c (dbg_cnt_process_single_pair): constify.
	* opts.c (common_handle_option): constify.

2009-09-12  Gerald Pfeifer  <>

	* doc/install.texi (avr): Remove obsolete reference site.

2009-09-12  Gerald Pfeifer  <>

	* doc/install.texi (Binaries): Adjust AIX link.

2009-09-12  Akim Demaille  <>

	* doc/invoke.texi (-fstrict-aliasing): Correct two examples.
	Use an imperative sentence.

2009-09-11  Richard Henderson  <>

	* gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
	structure-name and has-tree-operands arguments; update all entries.
	* gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
	update all entries.
	* gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
	(gsstruct_code_size): New.
	(gss_for_code_): New.
	(gss_for_code): Remove.
	(gimple_size): Rewrite using gsstruct_code_size.
	(gimple_statement_structure): Move to gimple.h.
	* gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
	(gss_for_code, gimple_statement_structure): New.
	(gimple_ops): Use new arrays; tidy.

2009-09-11  John David Anglin  <>

	* config/pa/ (symbolic_operand): Require a CONST symbolic
	operand to be a PLUS expression.
	* config/pa/pa.c (pa_secondary_reload): Likewise.

2009-09-11  Jakub Jelinek  <>

	* combine.c (propagate_for_debug_subst): Call wrap_constant on top.

	* print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
	XEXP (in_rtx, 8).

2009-09-11  Bernd Schmidt  <>

	From Jie Zhang <>:
	* doc/extend.texi (node Function Attributes): Document l2
	function attribute.
	(node Blackfin Variable Attributes): Document l2 variable attributes.

2009-09-11  Loren J. Rittle  <>

	* config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
	to match the system compiler's configuration at inflection point.
	Add comment to remark a remaining difference with system compiler.

	* (*-*-freebsd*): Enable check for __stack_chk_fail.
	* configure: Regenerate.

2009-09-11  Bernd Schmidt  <>

	From Jie Zhang <>:
	* config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
	(bfin_handle_l2_attribute): New.
	(bfin_attribute_table): Add l2 attribute.

2009-09-11  Michael Matz  <>

	PR middle-end/41275
	* tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
	on the local_decls list.

2009-09-11  Alexandre Oliva  <>

	PR debug/41276
	PR debug/41307
	* cselib.c (cselib_expand_value_rtx_cb): Document callback
	(cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
	for VALUEs, to implement the documented interface.
	* var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
	Adjust for VALUEs and anything else, to implement the
	documented interface.

2009-09-10  Nathan Froyd  <>

	* config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
	with actual SPE/paired vector modes before using 64-bit alignment.
	Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.

2009-09-10  DJ Delorie  <>

	* config/mep/ (eh_epilogue): Defer until after epilogue is

	* config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
	* config/mep/mep.c (mep_legitimate_constant_p): New.
	* config/mep/mep-protos.h: Prototype it.

2009-09-10  Richard Henderson  <>

	* print-rtl.c (print_rtx): Fix JUMP_LABEL index.

2009-09-10  Jason Merrill  <>

	* tree.c (chain_index): New fn.
	* tree.h: Declare it.

2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* config/sol2-c.c (cmn_err_length_specs): Initialize

2009-09-10  Richard Henderson  <>

	* tree.h (struct tree_decl_common): Move align member earlier;
	move label_decl_uid member ...
	(struct tree_label_decl): ... here.
	(LABEL_DECL_UID): Update to match.

	* tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,

	* tree-cfg.c (gimple_redirect_edge_and_branch): Do
	gimple_try_redirect_by_replacing_jump test after no-op and EH tests.

	* tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
	dest_prev if the edge is complex.

	* tree-cfg.c (is_ctrl_stmt): Use a switch.

	* tree-cfg.c (gimple_can_merge_blocks_p): Move label and
	loop latch tests earlier.

	* gimple-iterator.c (gimple_find_edge_insert_loc): Insert
	before GIMPLE_RETURN, not after its predecessor; insert
	before GIMPLE_RESX.

	* gimple-iterator.c (gimple_find_edge_insert_loc): Use
	gimple_seq_empty_p to test for no PHI nodes.
	* tree-cfg.c (split_critical_edges): Likewise.

	* c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.

2009-09-10  Hariharan Sandanagobalane  <>

	* final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
	introduced by the VTA branch merge.

2009-09-10  Uros Bizjak  <>

	* ira-conflicts.c: Use fputs or putc instead of fprintf
	where appropriate.
	* cfg.c: Ditto.
	* toplev.c: Ditto.
	* tree-switch-conversion.c: Ditto.

2009-09-10  Hariharan Sandanagobalane  <>

	* config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
	introduced by the VTA branch merge.

2009-09-10  Uros Bizjak  <>

	2009-09-09  Uros Bizjak  <>

	PR rtl-optimization/39779
	* expr.c (convert_modes): Return when mode == oldmode after
	CONST_INTs are processed.

2009-09-10  Nick Clifton  <>

	* config/mep/mep.c (mep_encode_section_info): Copy weakness
	attribute and referring decl when creating renamed symbol.

2009-09-10  Richard Guenther  <>

	PR middle-end/41257
	* cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
	reachable nodes.
	(cgraph_finalize_compilation_unit): Compute reachability
	before emitting thunks.  Properly process aliases before
	possibly removing unreachable nodes.

2009-09-10  Richard Guenther  <>

	PR middle-end/41254
	* tree.c (struct free_lang_data_d): Add worklist member.
	(find_decls_types_r): Push onto the worklist instead of recursing.
	Handle TREE_BINFOs properly.
	(find_decls_types): New function wrapped around find_decls_types_r
	to process the worklist.
	(find_decls_types_in_eh_region): Use it.
	(find_decls_types_in_node): Likewise.
	(find_decls_types_in_var): Likewise.
	(free_lang_data_in_cgraph): Likewise.  Free the worklist.
	* tree.h (RECORD_OR_UNION_TYPE_P): New.

2009-09-09  Jason Merrill  <>

	* Check glibc version even if we have an in-tree

2009-09-09  Anthony Green  <>

	* config/moxie/ (*movsi, *movhi, *movqi): Use xor to load
	the constant 0 when appropriate.
	* config/moxie/ Add constraint O.

	* config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
	to pass up to 6 32-bit argument values in registers.
	(moxie_function_arg): Ditto.
	(moxie_arg_partial_bytes): Ditto.
	* config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.

	* config/moxie/moxie.c (moxie_expand_prologue): Use dec
	instruction to allocate stack space.

2009-09-09  Segher Boessenkool  <>

	* config/rs6000/ (bswapdi2_64bit): Fix
	unnecessarily stringent constraints.  Fix address
	calculation in the splitters.

2009-09-09  Uros Bizjak  <>

	PR rtl-optimization/39779
	* expr.c (convert_modes): Return when mode == oldmode after
	CONST_INTs are processed.

2009-09-09  Kai Tietz  <>

	* config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
	(ix86_expand_prologue): Take frame.padding0 into logic of
	to_allocate checks.
	(ix86_expand_epilogue): Likewise.

2009-09-09  Jakub Jelinek  <>

	* config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
	New variables.
	* config/t-slibgcc-libgcc: New file.
	* config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.

2009-09-09  Martin Jambor  <>

	PR tree-optimization/41089
	* tree-sra.c (find_var_candidates): Do not consider va_lists in
	early SRA.

2009-09-09  Richard Henderson  <>

	* gimple.h (CASE_GIMPLE_OMP): New.
	(is_gimple_omp): Use it.
	* tree-cfg.c (is_ctrl_altering_stmt): Likewise.
	(verify_gimple_debug): Likewise.

2009-09-09  Richard Guenther  <>

	PR tree-optimization/41101
	* tree-ssa-pre.c (maximal_set): Remove.
	(compute_antic_aux): Treat the maximal set as implicitly all ones.
	Defer all blocks we didn't visit at least one successor.
	(add_to_exp_gen): Do not add to the maximal set.
	(make_values_for_phi): Likewise.
	(compute_avail): Likewise.
	(init_pre): Do not allocate the maximal set.
	(execute_pre): Do not dump it.

2009-09-09  Martin Jambor  <>

	* tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
	an SSA_NAME rather than a is_gimple_variable.

2009-09-09  Richard Guenther  <>

	PR middle-end/41317
	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
	code dealing with plain pointer bases.
	(maybe_fold_offset_to_reference): Likewise.
	(maybe_fold_stmt_addition): Adjust.

2009-09-09  Richard Guenther  <>

	* tree.c (free_lang_data_in_type): Do not free the type variant
	(free_lang_data): Merge char_type_node with its properly signed
	(pass_ipa_free): Collect after freeing language specific data.

2009-09-09  Michael Matz  <>

	PR middle-end/41268
	* cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
	SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
	* rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
	to reflect reality.

2009-09-08  DJ Delorie  <>

	* config/mep/mep.c (conversions[]): Add "ml" pattern.

2009-09-04  Jason Merrill  <>

	* tree.c (tree_find_value): Remove.
	* tree.h: Remove prototype.
	* varasm.c (assemble_external): Use value_member instead.

2009-09-08  Alexandre Oliva  <>

	* toplev.c (process_options): Choose default debugging type when
	gtoggle enables debug info and type is unset.

2009-09-08  Alexandre Oliva  <>

	PR debug/41276
	PR debug/41307
	* cselib.c (cselib_expand_value_rtx_1): Don't return copy of
	invalid subreg.

2009-09-08  Alexandre Oliva  <>

	* configure: Rebuilt with modified libtool.m4.

2009-09-08  Alexandre Oliva  <>

	PR debug/41229
	PR debug/41291
	PR debug/41300
	* tree-ssa.c (execute_update_addresses_taken): Update debug insns.

2009-09-08  Alexandre Oliva  <>

	* tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
	(remove_statement): Likewise.
	(rewrite_use_nonlinear_expr): Adjust.
	(remove_unused_ivs): Collect SSA NAMEs to remove and call...
	* tree-ssa.c (release_defs_bitset): ... this.  New.
	* tree-flow.h (release_defs_bitset): Declare.

2009-09-08  Alexandre Oliva  <>

	PR debug/41232
	* tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
	in the middle block.

2009-09-08  Kai Tietz  <>

	* tree-ssa-reassoc.c (find_operand_rank): Cast pointer
	via intptr_t to long type.
	(insert_operand_rank): Cast long type via intptr_t to
	pointer type.
	* genattrtab.c (RTL_HASH): Use intptr_t to cast from
	pointer to scalar.
	* c-pretty-print.c (pp_c_tree_decl_identifier): Cast
	from pointer to unsigned via uintptr_t.

	* (GCC_STDINT_TYPES): Initialize intptr_t,
	* configure: Regenerated.
	* Regenerated
	* system.h (stdint.h): Add include.
	(inttypes.h): Likewise.
	* (aclocal): Add config/stdint.m4.
	* aclocal.m4: Regenerated.

2009-09-08  Bernd Schmidt  <>

	* config/bfin/bfin.c (np_check_regno, np_after_branch): New static
	(note_np_check_stores): New function.
	(harmless_null_pointer_p): New function.
	(trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
	changed.  Take into account whether we're in the shadow of a condjump
	that tested NP_REG for NULL.
	Lose all code that tested for SEQUENCEs.
	(workaround_speculation): Avoid inserting NOPs for loads that are
	either always executed or a NULL pointer.

2009-09-08  Jan Hubicka  <>

	* doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
	* params.def (early-inlining-insns): Likewise.

2009-09-08  Jakub Jelinek  <>

	PR rtl-optimization/41239
	* sched-int.h (struct deps): Add last_function_call_may_noreturn field.
	* sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
	* sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
	across calls, as the calls might not always return normally.
	(call_may_noreturn_p): New function.
	(deps_analyze_insn): Update last_function_call_may_noreturn list.
	(init_deps): Initialize it.
	(remove_from_deps): Also remove calls from
	last_function_call_may_noreturn list.

2009-09-07  Richard Henderson  <>

	* tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
	more VR->OPERANDS than LHS operands.  Free LHS before returning.

2009-09-07  Bernd Schmidt  <>

	* config/bfin/ (UNSPEC_VOLATILE_STALL): New constant.
	(attr "addrtype"): New member "spreg".
	Use it if mem_spfp_address_operand is true for the address.
	(attr "type"): New entry "stall".
	(cpu_unit "load"): New.
	(insn_reservations "load32", "loadp", "loadi"): Add reservation of
	(insn_reservation "loadsp"): New.
	(insn_reservation "load_stall1"): New.
	(insn_reservation "load_stall3"): New.
	(stall): New insn.
	* config/bfin/ (const1_operand, const3_operand): New.
	(mem_p_address_operand): Exclude stack and frame pointer based
	(mem_spfp_address_operand): New; match them here.
	* config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
	(bfin_reorg): Call it if scheduling insns.
	(bfin_gen_bundles): Remove dummy insns created by

	From Jie Zhang <>:
	* config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
	bfin_si_revision, bfin_workarounds): Move these ...
	* config/bfin/bfin.h: ... here.

	From Mike Frysinger  <>
	* config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
	* config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
	bf547m, bf548m, and bf549m.
	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
	for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
	__ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
	BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
	* config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
	bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
	* config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
	* config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
	* doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
	bf542m, bf544m, bf547m, bf548m, and bf549m.

	From Jie Zhang <>:
	* config/bfin/ (p_register_operand): New predicate.
	(dp_register_operand): New predicate.
	* config/bfin/bfin-protos.h (WA_05000074): Define.
	(ENABLE_WA_05000074): Define.
	* config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
	(bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
	* config/bfin/ (define_attr type): Add dsp32shiftimm.
	(define_attr addrtype): Allow load/store register to be P register.
	(define_attr storereg): New.
	(define_cpu_unit anomaly_05000074): New.
	(define_insn_reservation dsp32shiftimm): New.
	(define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
	(define_insn_reservation loadp): Cannot use slot2.
	(define_insn_reservation loadsp): Cannot use slot2.
	(define_insn_reservation storep): Cannot use slot2. Does not
	apply when working around 05000074.
	(define_insn_reservation storep_anomaly_05000074): New.
	(define_insn_reservation storei): Does not apply when working
	around 05000074.
	(define_insn_reservation storei_anomaly_05000074): New.
	(define_attr length): Add dsp32shiftimm case.
	(define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
	ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
	movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
	ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
	Set type as dsp32shiftimm for dsp32shiftimm alternatives.

2009-09-07  Martin Jambor  <>

	PR middle-end/41282
	* tree-sra.c (create_artificial_child_access): Return NULL if
	build_ref_for_offset fails.
	(propagate_subacesses_accross_link): Allow build_ref_for_offset
	and create_artificial_child_access to fail.

2009-09-06  Dmitry Gorbachev  <>

	PR c++/41214
	* unwind-dw2.c (uw_init_context_1): Mark noinline.
	* config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
	* config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.

2009-09-07  Bernd Schmidt  <>

	* config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
	block, ensure it has an exit edge.  Emit a barrier after a jump.

2009-09-07  Nick Clifton  <>

	* gcc.c (this_is_linker_script): New variable.  Like
	this_is_library_file but for the %T constructor.
	(end_going_arg): If this_is_linker_script is set then locate the
	script and insert a --script switch before it
	(do_spec_2): Initialise this_is_linker_script.
	(do_spec_1): Likewise.  Handle %T construct.
	(eval_spec_function): Preserve this_is_linker_script.
	* doc/invoke.texi: Document %T construct in spec files.
	* config/m32c/m32c.h (LIB_SPEC): Use it.

2009-09-07  Andreas Krebbel  <>

	* rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
	* sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
	when volatile flag is set.
	* doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.

2009-09-06  Eric Botcazou  <>

	PR bootstrap/41241
	* combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
	(combine_stack_adjustments_for_block): Allow insns between stack
	adjustments and stores with corresponding pre-(dec|inc)rement or
	pre-modify operation.

2009-09-06  Jakub Jelinek  <>

	PR bootstrap/41241
	* combine-stack-adj.c (struct csa_memlist): Rename to...
	(struct csa_reflist): ... this.  Rename mem field to ref.
	(free_csa_memlist): Rename to...
	(free_csa_reflist): ... this.
	(record_one_stack_memref): Rename to...
	(record_one_stack_ref): ... this.  Handle also REG_P.
	(try_apply_stack_adjustment): Handle also REG_P.
	(struct record_stack_memrefs_data): Rename to...
	(struct record_stack_refs_data): ... this.  Rename memlist field to
	(record_stack_memrefs): Rename to...
	(record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
	subexpressions instead of failing when a MEM contains SP references.
	For SP itself in DEBUG_INSNs queue it also onto reflist chain.
	(combine_stack_adjustments_for_block): Adjust for mem to ref renaming.

2009-09-06  Richard Guenther  <>

	PR middle-end/41144
	* tree.c (build_array_type): Do not record types marked
	with structural equality in the canonical type hashtable.

2009-09-06  Richard Guenther  <>

	PR middle-end/41261
	* tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.

2009-09-05  Richard Guenther  <>

	PR middle-end/41181
	* tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.

2009-09-05  Richard Guenther  <>

	PR debug/41273
	* tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.

2009-09-05  Richard Guenther  <>

	PR middle-end/41271
	* tree-ssa.c (useless_type_conversion_p): Drop qualifiers
	before comparing function argument types.

2009-09-05  Francois-Xavier Coudert  <>

	PR target/41024
	* config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
	the assembler.

2009-09-04  Uros Bizjak  <>

	2009-08-18  Uros Bizjak  <>

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
	locators before emit_insn is called.

2009-09-04  Vladimir Makarov  <>

	PR bootstrap/41241
	* ira.c (update_equiv_reg): Revert my previous patch for the PR.
	* reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
	(reginfo_init): Don't call allocate_reg_info.

2009-09-04  Uros Bizjak  <>

	PR target/41262
	* config/alpha/alpha.c (alpha_does_function_need_gp): Use

2009-09-04  Alexandre Oliva  <>

	PR debug/41225
	* tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.

2009-09-04  Alexandre Oliva  <>

	PR target/41252
	* config/arm/ (*cmpdf_split_vfp): Fix src mode in the second
	pattern of the split.

2009-09-04  Alexandre Oliva  <>

	* toplev.c (process_options): Move setter of flag_var_tracking
	before other tests that depend on it.  Move down setter of
	flag_rename_registers.  Don't enable var-tracking-assignments
	by default if selective scheduling is enabled.  Warn if both
	are enabled.

2009-09-04  Alexandre Oliva  <>

	* var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
	comment.  Use switch statement to catch overlaps between rtx
	and tree codes.  Accept FUNCTION_DECLs in addition to those in...
	(IS_DECL_CODE): ... here. Remove.
	(check_value_is_not_decl): Remove.
	(dv_from_decl, dv_from_value): Check after conversion.

2009-09-04  Richard Guenther  <>

	PR middle-end/41257
	* (cgraph_finalize_compilation_unit): Move finalizing aliases
	after emitting tunks.  Move emitting thunks and ctors from ...
	(cgraph_optimize): ... here.  Remove redundant
	* varasm.c (find_decl_and_mark_needed): Remove no longer
	necessary check.
	(finish_aliases_1): Adjust check for thunk aliases.

2009-09-04  Daniel Gutson  <>

	* config/arm/ (ctzsi2): Added braces
	to avoid warning that broke booststrap.

2009-09-04  Martin Jambor  <>

	PR tree-optimization/41112
	* tree-sra.c (build_ref_for_offset_1): Signal that we cannot
	handle variable-bounded arrays.
	(expr_with_var_bounded_array_refs_p): New function.
	(analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.

2009-09-04  Wolfgang Gellerich  <>

	* config/s390/ Removed two incorrect bypasses.
	(z10_fsimpdf): Fixed latency.
	(z10_fhex): New insn_reservation.
	(z10_floaddf): Fixed latency.
	(z10_floadsf): Fixed latency.
	(z10_ftrunctf): Fixed latency.
	(z10_ftruncdf): Fixed latency.
	* config/s390/s390.c (z10_cost): Fixed values.
	(s390_adjust_priority): Added z10 path.
	* config/s390/ (type): Added fhex.
	(*mov<mode>_64dfp): Updated type attribute.
	(*mov<mode>_64): Updated type attribute.
	(*mov<mode>_31): Updated type attribute.
	(*mov<mode>"): Likewise.
	* config/s390/ (x_fsimpdf): Updated condition.

2009-09-04  Andreas Krebbel  <>

	* config/s390/ ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
	RTXs in the predicate for operand 1.

2009-09-03  Daniel Gutson  <>

	* config/arm/ (UNSPEC_RBIT): New constant.
	(rbitsi2): New insn.
	(ctzsi2): New expand.
	* config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.

2009-09-03  Martin Jambor  <>

	* tree-sra.c (duplicate_expr_for_different_base): Removed.
	(create_artificial_child_access): Use build_ref_for_offset instead
	of duplicate_expr_for_different_base.
	(propagate_subacesses_accross_link): Likewise.

2009-09-03  Richard Sandiford  <>

	* config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
	of INSN_P.
	(mips16e_collect_argument_saves): Skip debug instructions.
	(mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
	(mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
	(r10k_insert_cache_barriers): Likewise.
	(mips_reorg_process_insns): Likewise.

2009-09-03  Vladimir Makarov  <>

	PR bootstrap/41241
	* ira.c (update_equiv_reg): Remove check on class likely spill.

2009-09-03  Jakub Jelinek  <>

	PR debug/41236
	* dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
	SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
	it or SUBREG.

	PR debug/41238
	* function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
	the stack slot if it is passed by invisible reference.
	* var-tracking.c (vt_add_function_parameters): Handle arguments passed
	by invisible reference.

2009-09-03  Bernd Schmidt  <>

	* config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
	* config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
	* config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
	* config/bfin/ New file.
	* config/bfin/ Include it.
	(UNSPEC_ONES): Provide a unique number.

	From Jie Zhang <>:
	* config/bfin/bfin.c (ret_regs): New.
	(must_save_fp_p): Don't return true because of frame_pointer_needed.
	(must_save_rets_p): New.
	(n_regs_saved_by_prologue): Use must_save_rets_p instead of
	(do_link): Likewise.
	(do_unlink): Likewise.
	(expand_interrupt_handler_prologue): Use ret_regs array.
	(expand_interrupt_handler_epilogue): Use ret_regs array and
	pass return register to gen_return_internal.
	(bfin_expand_epilogue): Pass return register to
	(bfin_expand_call): Explicitly clobber RETS.
	* config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
	* config/bfin/ (call_symbol_fdpic, call_value_symbol_fdpic,
	call_insn_fdpic, call_value_insn_fdpic, call_symbol,
	call_value_symbol, call_insn, call_value_insn): Explicitly clobber
	(return_internal): Take a reg rtx rather than the register number.

2009-09-03  H.J. Lu  <>

	* tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
	when comparing against estimated_loop_iterations_int return.

2009-09-03  Richard Guenther  <>

	* dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of

2009-09-03  Razya Ladelsky  <>

	* tree-parloops.c (separate_decls_in_region): Add space.

2009-09-03  Razya Ladelsky  <>

	* tree-parloops.c (separate_decls_in_region): Change the condition
	checking if there are reductions in the loop.

2009-09-03  Razya Ladelsky  <>

	PR tree-optimization/38275
	* tree-parloops.c (parallelize_loops): Replace profitability condition
	for expected number of iterations.

2009-09-03  Alexandre Oliva  <>

	* doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
	(bootstrap-debug): Explain conditions in which it becomes default.
	(bootstrap-debug-big): Rather than duplicate bootstrap-debug,
	make it add to it.

2009-09-03  Namhyung Kim  <>

	* doc/invoke.texi (Optimize Options): Move
	-finline-small-functions to the -O2 list.

2009-09-03  Alexandre Oliva  <>

	* toplev.c (process_options): Enable var-tracking-assignments
	by default if var-tracking is enabled.

2009-09-02  David Daney  <>

	* cfgbuild.c (find_bb_boundaries): Split blocks containing a
	* emit-rtl.c (prev_nonnote_insn_bb): New function.
	* rtl.h (prev_nonnote_insn_bb): Declare it.

2009-09-03  Diego Novillo  <>

	* cgraph.c (cgraph_node_for_decl): New.
	* cgraph.h (cgraph_node_for_decl): Declare.
	* tree.c (host_integerp): Return 0 if T is NULL.

2009-09-03  Diego Novillo  <>

	* tree.h (struct alias_pair): Move from varasm.c.
	(alias_pairs): Likewise.
	(TYPE_MAXVAL): Define.
	(TYPE_MINVAL): Define.
	(iterative_hash_host_wide_int): Declare.
	(remove_unreachable_alias_pairs): Declare.
	* tree-pass.h (pass_ipa_free_lang_data): Declare.
	* diagnostic.c (default_diagnostic_starter): Make extern.
	(default_diagnostic_finalizer): Make extern.
	* diagnostic.h (default_diagnostic_starter): Declare.
	(default_diagnostic_finalizer): Declare.
	(default_tree_printer): Declare.
	* toplev.c (default_tree_printer): Make extern.

2009-09-03  Richard Guenther  <>
	    Diego Novillo  <>

	* cgraph.c (cgraph_add_new_function): Remove gimplification.
	* cgraphunit.c (cgraph_expand_function): Do not emit
	associated thunks from here.
	(cgraph_emit_thunks): New.
	(cgraph_optimize): Call it.
	Return if any IPA pass finds an error.
	* varasm.c (finish_aliases_1): Ignore errorneous aliases used
	by thunks.

2009-09-03  Simon Baldwin  <>
	    Rafael Espindola  <>
	    Richard Guenther  <>
	    Doug Kwan  <>
	    Diego Novillo  <>

	* tree.c: Include tree-pass.h, langhooks-def.h,
	diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
	(free_lang_data_in_type): New.
	(need_assembler_name_p): New.
	(free_lang_data_in_block): New.
	(free_lang_data_in_decl): New.
	(struct free_lang_data_d): New.
	(add_tree_to_fld_list): New.
	(find_decls_types_r): New.
	(get_eh_types_for_runtime): New.
	(find_decls_types_in_eh_region): New.
	(find_decls_types_in_node): New.
	(find_decls_types_in_var): New.
	(free_lang_data_in_cgraph): New.
	(free_lang_data): New.
	(gate_free_lang_data): New.
	(pass_ipa_free_lang_data): New.

2009-09-03  Diego Novillo  <>

	* timevar.def (TV_IPA_FREE_LANG_DATA): Define.
	* langhooks.h (struct lang_hooks): Add field free_lang_data.
	(lang_hooks): Remove const qualifier.
	* ipa.c (cgraph_remove_unreachable_nodes): Call
	* except.c (add_type_for_runtime): Check if TYPE has
	already been converted.
	(lookup_type_for_runtime): Likewise.
	(check_handled): Handle converted types.
	* varasm.c (remove_unreachable_alias_pairs): New.
	* gimple.c: Include demangle.h.
	(gimple_decl_printable_name): New.
	(gimple_fold_obj_type_ref): New.
	* gimple.h (gimple_decl_printable_name): Declare.
	(gimple_fold_obj_type_ref): Declare.
	* passes.c (init_optimization_passes): Add pass
	* langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.

2009-09-03  Diego Novillo  <>

	* c-lang.c (lang_hooks): Remove const qualifier.

2009-09-02  Loren James Rittle  <>

	* doc/install.texi (*-*-freebsd*): Update target information.

2009-09-02  Anatoly Sokolov  <>

	* hard-reg-set.h (call_fixed_regs): Remove.
	* reginfo.c (call_fixed_regs): Remove.
	(init_reg_sets_1): Remove initialization of call_fixed_regs.
	(globalize_reg): Don't use call_fixed_regs.
	* caller-save.c (init_caller_save): Use call_fixed_reg_set instead of

2009-09-01  Michael Matz  <>

	* expr.h (emit_storent_insn, expand_expr_real_1,
	expand_expr_real_2): Declare.
	* expr.c (emit_storent_insn, expand_expr_real_1,
	expand_expr_real_2): Export.
	(store_expr): Setting and evaluating dont_return_target is useless.
	(expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
	LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
	* except.c (expand_resx_expr): Rename to ...
	(expand_resx_stmt): ... this.  Rewrite to take gimple statement.
	* except.h (expand_resx_stmt): Declare.
	* stmt.c: Add include gimple.h
	(expand_asm_expr): Rename to ...
	(expand_asm_stmt): ... this. Rewrite to take gimple statement.
	(expand_case): Rewrite to take gimple statement.
	* tree.h (expand_asm_stmt): Declare.
	(expand_case): Change prototype.
	* (stmt.o): Depend on gimple.h.
	* builtins.c (expand_builtin_synchronize): Build gimple asm
	statement, not an ASM_EXPR.
	* cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
	gimple_to_tree, release_stmt_tree): Remove.
	(expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
	ggc_free, but hold comparison code and operands separately.
	Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
	(expand_call_stmt, expand_gimple_stmt_1,
	expand_gimple_stmt): New helpers.
	(expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
	release_stmt_tree.  Call expand_gimple_stmt instead.
	(expand_gimple_basic_block): Ditto.

	* calls.c (emit_call_1): Don't look at EH regions here, make
	fntree parameter useless.
	(expand_call): New local rettype for TREE_TYPE(exp), use it
	throughout.  Remove local p, use addr instead.
	Don't look at EH regions here.

2009-09-02  Vladimir Makarov  <>

	* doc/invoke.texi (-fsched-pressure): Document it.
	(-fsched-reg-pressure-heuristic): Remove it.

	* reload.c (ira.h): Include.
	(find_reloads): Add choosing reload on number of small spilled

	* haifa-sched.c (ira.h): Include.
	(sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
	saved_reg_pressure, curr_reg_live, saved_reg_live,
	region_ref_regs): New variables.
	(sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
	initiate_reg_pressure_info, setup_ref_regs,
	initiate_bb_reg_pressure_info, save_reg_pressure,
	restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
	(setup_insn_reg_pressure_info): New function.
	(rank_for_schedule): Add pressure checking and insn issue time.
	Remove comparison of insn reg weights.
	(ready_sort): Set insn reg pressure info.
	(update_register_pressure, setup_insn_max_reg_pressure,
	sched_setup_bb_reg_pressure_info): New functions.
	(schedule_insn): Add code for printing and updating reg pressure info.
	(find_set_reg_weight, find_insn_reg_weight): Remove.
	(ok_for_early_queue_removal): Do nothing if pressure_only_p.
	(debug_ready_list): Print reg pressure info.
	(schedule_block): Ditto.  Check insn issue time.
	(sched_init): Set up sched_pressure_p.  Allocate and set up some
	reg pressure related info.
	(sched_finish): Free some reg pressure related info.
	(fix_tick_ready): Make insn always ready if pressure_p.
	(init_h_i_d): Don't call find_insn_reg_weight.
	(haifa_finish_h_i_d): Free insn reg pressure info.

	* ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
	ira_memory_move_cost, ira_class_hard_regs,
	ira_class_hard_regs_num, ira_no_alloc_regs,
	ira_available_class_regs, ira_reg_class_cover_size,
	ira_reg_class_cover, ira_class_translate): Move to ira.h.

	* ira-lives.c (single_reg_class): Check mode to find how many
	registers are necessary for operand.
	(ira_implicitly_set_insn_hard_regs): New.

	* common.opt (fsched-pressure): New options.
	(fsched-reg-pressure-heuristic): Remove.

	* ira.c (setup_eliminable_regset): Rename to
	ira_setup_eliminable_regset.  Make it external.
	(expand_reg_info): Pass cover class to setup_reg_classes.
	(ira): Call resize_reg_info instead of allocate_reg_info.

	* sched-deps.c: Include ira.h.
	(implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
	(create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
	reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
	mark_insn_hard_regno_birth, mark_insn_reg_birth,
	mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
	mark_insn_reg_store, mark_insn_reg_clobber,
	setup_insn_reg_pressure_info): New.
	(sched_analyze_1): Update implicit_reg_pending_uses.
	(sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
	Use them to create dependencies.  Set insn reg uses and pressure
	info.  Process reg_pending_uses in one place.
	(free_deps): Free implicit sets.
	(remove_from_deps): Remove implicit sets if necessary.  Check
	implicit sets when clearing reg_last_in_use.
	(init_deps_global): Clear implicit_reg_pending_clobbers and

	* ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
	ira_memory_move_cost, ira_class_hard_regs,
	ira_class_hard_regs_num, ira_no_alloc_regs,
	ira_available_class_regs, ira_reg_class_cover_size,
	ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
	(ira_setup_eliminable_regset, ira_set_pseudo_classes,
	ira_implicitly_set_insn_hard_regs): New prototypes.

	* ira-costs.c (pseudo_classes_defined_p, allocno_p,
	cost_elements_num): New variables.
	(allocno_costs, total_costs): Rename to costs and
	(allocno_pref): Rename to pref.
	(allocno_pref_buffer): Rename to pref_buffer.
	(common_classes): Rename to regno_cover_class.
	(record_reg_classes): Set allocno attributes only if allocno_p.
	(record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
	(scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
	(print_costs): Rename to print_allocno_costs.
	(print_pseudo_costs): New.
	(process_bb_node_for_costs): Split into 2 functions with new
	function process_bb_for_costs.  Pass BB to process_bb_for_costs.
	(find_allocno_class_costs): Rename to find_costs_and_classes.  Add
	new parameter dump_file.  Use cost_elements_num instead of
	ira_allocnos_num.  Make one iteration if preferred classes were
	already calculated for scheduler.  Make 2 versions of code
	depending on allocno_p.
	(setup_allocno_cover_class_and_costs): Check allocno_p.  Use
	regno_cover_class and COSTS instead of common_classes and
	(init_costs, finish_costs): New.
	(ira_costs): Set up allocno_p and cost_elements_num.  Call
	init_costs and finish_costs.
	(ira_set_pseudo_classes): New.

	* rtl.h (allocate_reg_info): Remove.
	(resize_reg_info): Change return type.
	(reg_cover_class): New.
	(setup_reg_classes): Add new parameter.

	* sched-int.h (struct deps_reg): New member implicit_sets.
	(sched_pressure_p, sched_regno_cover_class): New external definitions.
	(INCREASE_BITS): New macro.
	(struct reg_pressure_data, struct reg_use_data): New.
	(struct _haifa_insn_data): Remove reg_weight.  Add members
	reg_pressure, reg_use_list, reg_set_list, and
	(struct deps): New member implicit_sets.
	(pressure_p): New variable.
	(struct reg_pressure_data, struct reg_use_data): New.
	sched_setup_bb_reg_pressure_info): New prototypes.

	* reginfo.c (struct reg_pref): New member coverclass.
	(reg_cover_class): New function.
	(reginfo_init, pass_reginfo_init): Move after free_reg_info.
	(reg_info_size): New variable.
	(allocate_reg_info): Make static.  Setup reg_info_size.
	(resize_reg_info): Use reg_info_size.  Return flag of resizing.
	(setup_reg_classes): Add a new parameter.  Setup cover class too.

	* (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
	the dependencies.

	* sched-rgn.c (deps_join): Set up implicit_sets.
	(schedule_region): Set up region and basic blocks pressure
	relative info.

	* passes.c (init_optimization_passes): Move
	pass_subregs_of_mode_init before pass_sched.

2009-09-02  Martin Jambor  <>

	* tree-sra.c (struct access): New field grp_hint.
	(dump_access): Dump grp_hint.
	(sort_and_splice_var_accesses): Set grp_hint if a group is read
	multiple times.
	(analyze_access_subtree): Only scalarize accesses with grp_hint set or
	those which have been specifically read and somehow written to.
	(propagate_subacesses_accross_link): Set grp_hint of right child and
	also possibly of the left child.

2009-09-02  Jakub Jelinek  <>

	* tree-object-size.c (addr_object_size): Always use object_size_type
	0 or 2 when determining the pointer pointed object size.

2009-09-02  Richard Guenther  <>

	2009-08-31  Richard Guenther  <>

	* builtins.c (fold_builtin_memory_op): Use the alias oracle
	to query if the memory regions for memmove overlap.
	* tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
	asserts on pointers, instead deal with odd trees.
	(ptr_derefs_may_alias_p): Likewise.
	(refs_may_alias_p_1): Constructor bases also never alias.

2009-08-01  Christian Bruel  <>

	2009-07-31  Christian Bruel  <>
	* gcc/config.gcc (sh*-*-elf): test with_libgloss.

2009-09-01  Alexandre Oliva  <>

	* doc/invoke.texi (-fvar-tracking-assignments): New.
	(-fvar-tracking-assignments-toggle): New.
	(-fdump-final-insns=file): Mark filename as optional.
	(--param min-nondebug-insn-uid): New.
	(-gdwarf-@{version}): Mention version 4.
	* opts.c (common_handle_option): Accept it.
	* tree-vrp.c (find_assert_locations_1): Skip debug stmts.
	* regrename.c (regrename_optimize): Drop last.  Don't count debug
	insns as uses.  Don't reject change because of debug insn.
	(do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
	from the chain starter, and check for inexact matches in DEBUG_INSNS.
	(scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
	(build_def_use): Simplify and fix the marking of DEBUG_INSNs.
	* sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
	* fwprop.c (forward_propagate_and_simplify): ...into debug insns.
	* doc/gimple.texi (is_gimple_debug): New.
	(gimple_debug_bind_p): New.
	(is_gimple_call, gimple_assign_cast_p): End sentence with period.
	* doc/install.texi (bootstrap-debug): More details.
	(bootstrap-debug-big, bootstrap-debug-lean): Document.
	(bootstrap-debug-lib): More details.
	(bootstrap-debug-ckovw): Update.
	(bootstrap-time): New.
	* tree-into-ssa.c (mark_def_sites): Skip debug stmts.
	(insert_phi_nodes_for): Insert debug stmts.
	(rewrite_stmt): Take iterator.  Insert debug stmts.
	(rewrite_enter_block): Adjust.
	(maybe_replace_use_in_debug_stmt): New.
	(rewrite_update_stmt): Use it.
	(mark_use_interesting): Return early for debug stmts.
	* tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
	stmts before replacing stmt.
	(move_computations_stmt): Likewise.
	* ira-conflicts.c (add_copies): Skip debug insns.
	* regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
	(regstat_bb_compute_ri): Skip debug insns.
	* tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
	check_loop_closed_ssa_stmt): Skip debug stmts.
	* tree-tailcall.c (find_tail_calls): Likewise.
	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
	* tree.h (MAY_HAVE_DEBUG_STMTS): New.
	(build_var_debug_value_stat): Declare.
	(build_var_debug_value): Define.
	(target_for_debug_bind): Declare.
	* reload.c (find_equiv_reg): Skip debug insns.
	* rtlanal.c (reg_used_between_p): Skip debug insns.
	(side_effects_p): Likewise.
	(canonicalize_condition): Likewise.
	* ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
	insns never depend on debug insns.
	(create_ddg_dep_no_link): Likewise.
	(add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
	Don't add inter-loop dependencies for debug insns.
	(build_intra_loop_deps): Likewise.
	(create_ddg): Count debug insns.
	* ddg.h (struct ddg::num_debug): New.
	(num_backargs): Pair up with previous int field.
	* diagnostic.c (diagnostic_report_diagnostic): Skip notes on
	* final.c (get_attr_length_1): Skip debug insns.
	(rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
	* gcc.c (invoke_as): Call compare-debug-dump-opt.
	(driver_self_specs): Map -fdump-final-insns to
	(get_local_tick): New.
	(compare_debug_dump_opt_spec_function): Test for . argument and
	compute output name.  Compute temp output spec without flag name.
	Compute -frandom-seed.
	(OPT): Undef after use.
	* cfgloopanal.c (num_loop_insns): Skip debug insns.
	(average_num_loop_insns): Likewise.
	* params.h (MIN_NONDEBUG_INSN_UID): New.
	* gimple.def (GIMPLE_DEBUG): New.
	* ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
	* auto-inc-dec.c (merge_in_block): Skip debug insns.
	(merge_in_block): Fix whitespace.
	* toplev.c (flag_var_tracking): Update comment.
	(flag_var_tracking_assignments): New.
	(flag_var_tracking_assignments_toggle): New.
	(process_options): Don't open final insns dump file if we're not
	going to write to it.  Compute defaults for var_tracking.
	* df-scan.c (df_insn_rescan_debug_internal): New.
	(df_uses_record): Handle debug insns.
	* haifa-sched.c (ready): Initialize n_debug.
	(contributes_to_priority): Skip debug insns.
	(dep_list_size): New.
	(priority): Use it.
	(rank_for_schedule): Likewise.  Schedule debug insns as soon as
	they're ready.  Disregard previous debug insns to make decisions.
	(queue_insn): Never queue debug insns.
	(ready_add, ready_remove_first, ready_remove): Count debug insns.
	(schedule_insn): Don't reject debug insns because of issue rate.
	(get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
	(queue_to_ready): Skip and discount debug insns.
	(choose_ready): Let debug insns through.
	(schedule_block): Check boundary debug insns.  Discount debug
	insns, schedule them early.  Adjust whitespace.
	(set_priorities): Check for boundary debug insns.
	(add_jump_dependencies): Use dep_list_size.
	(prev_non_location_insn): New.
	(check_cfg): Use it.
	* tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
	(remove_unused_ivs): Reset debug stmts.
	* modulo-sched.c (const_iteration_count): Skip debug insns.
	(res_MII): Discount debug insns.
	(loop_single_full_bb_p): Skip debug insns.
	(sms_schedule): Likewise.
	(sms_schedule_by_order): Likewise.
	(ps_has_conflicts): Likewise.
	* caller-save.c (refmarker_fn): New.
	(save_call_clobbered_regs): Replace regs with saved mem in
	debug insns.
	(mark_referenced_regs): Take pointer, mark and arg.  Adjust.
	Call refmarker_fn mark for hardregnos.
	(mark_reg_as_referenced): New.
	(replace_reg_with_saved_mem): New.
	* ipa-pure-const.c (check_stmt): Skip debug stmts.
	* cse.c (cse_insn): Canonicalize debug insns.  Skip them when
	searching back.
	(cse_extended_basic_block): Skip debug insns.
	(count_reg_usage): Likewise.
	(is_dead_reg): New, split out of...
	(set_live_p): ... here.
	(insn_live_p): Use it for debug insns.
	* tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
	(execute_optimize_stdarg): Likewise.
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
	* tree-ssa-propagate.c (substitute_and_fold): Don't regard
	changes in debug stmts as changes.
	* sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
	(moveup_expr): Don't move across debug insns.  Don't move
	debug insn if it would create a bookkeeping block.
	(moveup_expr_cached): Don't use cache for debug insns that
	are heads of blocks.
	(compute_av_set_inside_bb): Skip debug insns.
	(sel_rank_for_schedule): Schedule debug insns first.  Remove
	dead code.
	(block_valid_for_bookkeeping_p); Support lax searches.
	(create_block_for_bookkeeping): Adjust block numbers when
	encountering debug-only blocks.
	(find_place_for_bookkeeping): Deal with debug-only blocks.
	(generate_bookkeeping_insn): Accept no place to insert.
	(remove_temp_moveop_nops): New argument full_tidying.
	(prepare_place_to_insert): Deal with debug insns.
	(advance_state_on_fence): Debug insns don't start cycles.
	(update_boundaries): Take fence as argument.  Deal with
	debug insns.
	(schedule_expr_on_boundary): No full_tidying on debug insns.
	(fill_insns): Deal with debug insns.
	(track_scheduled_insns_and_blocks): Don't count debug insns.
	(need_nop_to_preserve_insn_bb): New, split out of...
	(remove_insn_from_stream): ... this.
	(fur_orig_expr_not_found): Skip debug insns.
	* rtl.def (VALUE): Move up.
	* tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
	(nearest_common_dominator_of_uses): Take debug_stmts argument.
	Set it if debug stmts are found.
	(statement_sink_location): Skip debug stmts.  Propagate
	moving defs into debug stmts.
	* ifcvt.c (first_active_insn): Skip debug insns.
	(last_active_insns): Likewise.
	(cond_exec_process_insns): Likewise.
	(noce_process_if_block): Likewise.
	(check_cond_move_block): Likewise.
	(cond_move_convert_if_block): Likewise.
	(block_jumps_and_fallthru_p): Likewise.
	(dead_or_predicable): Likewise.
	* dwarf2out.c (debug_str_hash_forced): New.
	(find_AT_string): Add comment.
	(gen_label_for_indirect_string): New.
	(get_debug_string_label): New.
	(AT_string_form): Use it.
	(mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
	several operations that cannot be represented with DWARF opcodes.
	(loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
	dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
	(dwarf2out_var_location): Take during-call mark into account.
	(output_indirect_string): Update comment.  Output if there are
	label and references.
	(prune_indirect_string): New.
	(prune_unused_types): Call it if debug_str_hash_forced.
	More in dwarf2out.c, from Jakub Jelinek <>:
	(dw_long_long_const): Remove.
	(struct dw_val_struct): Change val_long_long type to rtx.
	(print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
	val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
	(output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
	component instead of HOST_BITS_PER_LONG.
	(output_loc_operands): Likewise.  For const8* assert
	(output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
	rather than HOST_BITS_PER_LONG is >= 64.
	(add_AT_long_long): Remove val_hi and val_lo arguments, add
	(size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
	HOST_BITS_PER_LONG for dw_val_class_long_long.
	(add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
	handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
	(dwarf_stack_op_name): Handle DW_OP_implicit_value and
	(size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
	Handle DW_OP_implicit_value.
	(extract_int): Move prototype earlier.
	(mem_loc_descriptor): For SUBREG punt if inner
	mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
	and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
	(loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
	instead of Pmode size.
	(loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
	attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
	(concat_loc_descriptor, concatn_loc_descriptor,
	loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
	(add_location_or_const_value_attribute): Likewise.  For single
	location loc_lists attempt to use add_const_value_attribute
	for constant decls.  Add DW_AT_const_value even if
	in its expression.
	* cfgbuild.c (inside_basic_block_p): Handle debug insns.
	(control_flow_insn_p): Likewise.
	* tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
	(separate_decls_in_region_debug_bind): New.
	(separate_decls_in_region): Process debug bind stmts afterwards.
	* recog.c (verify_changes): Handle debug insns.
	(extract_insn): Likewise.
	(peephole2_optimize): Skip debug insns.
	* dse.c (scan_insn): Skip debug insns.
	* sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
	Pass it on.
	(setup_id_for_insn): Handle debug insns.
	(maybe_tidy_empty_bb): Adjust whitespace.
	(tidy_control_flow): Skip debug insns.
	(sel_remove_insn): Adjust for debug insns.
	(sel_estimate_number_of_insns): Skip debug insns.
	(create_insn_rtx_from_pattern): Handle debug insns.
	(create_copy_of_insn_rtx): Likewise.
	* sel-sched-.h (sel_bb_end): Declare.
	(sel_bb_empty_or_nop_p): New.
	(get_all_loop_exits): Use it.
	(_eligible_successor_edge_p): Likewise.
	(return_nop_to_pool): Adjust.
	* tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
	* ira-lives.c (process_bb_node_lives): Skip debug insns.
	* gimple-pretty-print.c (dump_gimple_debug): New.
	(dump_gimple_stmt): Use it.
	(dump_bb_header): Skip gimple debug stmts.
	* regmove.c (optimize_reg_copy_1): Discount debug insns.
	(fixup_match_2): Likewise.
	(regmove_backward_pass): Likewise.  Simplify combined
	replacement.  Handle debug insns.
	* function.c (instantiate_virtual_regs): Handle debug insns.
	* function.h (struct emit_status): Add x_cur_debug_insn_uid.
	* print-rtl.h: Include cselib.h.
	(print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
	* df.h (df_inns_rescan_debug_internal): Declare.
	* gcse.c (alloc_hash_table): Estimate n_insns.
	(cprop_insn): Don't regard debug insns as changes.
	(bypass_conditional_jumps): Skip debug insns.
	(one_pre_gcse_pass): Adjust.
	(one_code_hoisting_pass): Likewise.
	(compute_ld_motion_mems): Skip debug insns.
	(one_cprop_pass): Adjust.
	* tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
	(if_convertible_stmt_p): Handle debug stmts.
	* init-regs.c (initialize_uninitialized_regs): Skip debug insns.
	* tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
	* ira-build.c (create_bb_allocnos): Skip debug insns.
	* tree-flow-inline.h (has_zero_uses): Discount debug stmts.
	(has_single_use): Likewise.
	(single_imm_use): Likewise.
	(num_imm_uses): Likewise.
	* tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
	* tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
	(create_outofssa_var_map): Likewise.
	* lower-subreg.c (adjust_decomposed_uses): New.
	(resolve_debug): New.
	(decompose_multiword_subregs): Use it.
	* tree-dfa.c (find_referenced_vars): Skip debug stmts.
	* emit-rtl.c: Include params.h.
	(cur_debug_insn_uid): Define.
	(set_new_first_and_last_insn): Set cur_debug_insn_uid too.
	(copy_rtx_if_shared_1): Handle debug insns.
	(reset_used_flags): Likewise.
	(set_used_flags): LIkewise.
	(get_max_insn_count): New.
	(next_nondebug_insn): New.
	(prev_nondebug_insn): New.
	(make_debug_insn_raw): New.
	(emit_insn_before_noloc): Handle debug insns.
	(emit_jump_insn_before_noloc): Likewise.
	(emit_call_insn_before_noloc): Likewise.
	(emit_debug_insn_before_noloc): New.
	(emit_insn_after_noloc): Handle debug insns.
	(emit_jump_insn_after_noloc): Likewise.
	(emit_call_insn_after_noloc): Likewise.
	(emit_debug_insn_after_noloc): Likewise.
	(emit_insn_after): Take loc from earlier non-debug insn.
	(emit_jump_insn_after): Likewise.
	(emit_call_insn_after): Likewise.
	(emit_debug_insn_after_setloc): New.
	(emit_debug_insn_after): New.
	(emit_insn_before): Take loc from later non-debug insn.
	(emit_jump_insn_before): Likewise.
	(emit_call_insn_before): Likewise.
	(emit_debug_insn_before_setloc): New.
	(emit_debug_insn_before): New.
	(emit_insn): Handle debug insns.
	(emit_debug_insn): New.
	(emit_jump_insn): Handle debug insns.
	(emit_call_insn): Likewise.
	(emit): Likewise.
	(init_emit): Take min-nondebug-insn-uid into account.
	Initialize cur_debug_insn_uid.
	(emit_copy_of_insn_after): Handle debug insns.
	* cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
	location of single rhs in place.
	(maybe_dump_rtl_for_gimple_stmt): Dump lineno.
	(floor_sdiv_adjust): New.
	(cell_sdiv_adjust): New.
	(cell_udiv_adjust): New.
	(round_sdiv_adjust): New.
	(round_udiv_adjust): New.
	(wrap_constant): Moved from cselib.
	(unwrap_constant): New.
	(expand_debug_expr): New.
	(expand_debug_locations): New.
	(expand_gimple_basic_block): Drop hiding redeclaration.  Expand
	debug bind stmts.
	(gimple_expand_cfg): Expand debug locations.
	* cselib.c: Include tree-pass.h.
	(struct expand_value_data): New.
	(cselib_record_sets_hook): New.
	(cselib_clear_table): Move, and implemnet in terms of...
	(cselib_reset_table_with_next_value): ... this.
	(cselib_get_next_unknown_value): New.
	(discard_useless_locs): Don't discard preserved values.
	(cselib_preserve_value): New.
	(cselib_preserved_value_p): New.
	(cselib_preserve_definitely): New.
	(cselib_clear_preserve): New.
	(cselib_preserve_only_values): New.
	(new_cselib_val): Take rtx argument.  Dump it in details.
	(cselib_lookup_mem): Adjust.
	(expand_loc): Take regs_active in struct.  Adjust.  Silence
	dumps unless details are requested.
	(cselib_expand_value_rtx_cb): New.
	(cselib_expand_value_rtx): Rename and reimplment in terms of...
	(cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
	without details.  Copy more subregs.  Try to resolve values
	using a callback.  Wrap constants.
	(cselib_subst_to_values): Adjust.
	(cselib_log_lookup): New.
	(cselib_lookup): Call it.
	(cselib_invalidate_regno): Don't count preserved values as useless.
	(cselib_invalidate_mem): Likewise.
	(cselib_record_set): Likewise.
	(struct set): Renamed to cselib_set, moved to cselib.h.
	(cselib_record_sets): Adjust.  Call hook.
	(cselib_process_insn): Reset table when it would be cleared.
	(dump_cselib_val): New.
	(dump_cselib_table): New.
	* tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
	(remove_forwarder_block): Support moving debug stmts.
	* cselib.h (cselib_record_sets_hook): Declare.
	(cselib_expand_callback): New type.
	(cselib_expand_value_rtx_cb): Declare.
	(cselib_reset_table_with_next_value): Declare.
	(cselib_get_next_unknown_value): Declare.
	(cselib_preserve_value): Declare.
	(cselib_preserved_value_p): Declare.
	(cselib_preserve_only_values): Declare.
	(dump_cselib_table): Declare.
	* cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
	(try_crossjump_to_edge): Likewise.
	(delete_unreachable_blocks): Remove dominant GIMPLE blocks after
	dominated blocks when debug stmts are present.
	* simplify-rtx.c (delegitimize_mem_from_attrs): New.
	* tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
	(set_var_live_on_entry): Likewise.
	* loop-invariant.c (find_invariants_bb): Skip debug insns.
	* cfglayout.c (curr_location, last_location): Make static.
	(set_curr_insn_source_location): Don't avoid bouncing.
	(get_curr_insn_source_location): New.
	(get_curr_insn_block): New.
	(duplicate_insn_chain): Handle debug insns.
	* tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
	into debug stmts.
	* common.opt (fcompare-debug): Move to sort order.
	(fdump-unnumbered-links): Likewise.
	(fvar-tracking-assignments): New.
	(fvar-tracking-assignments-toggle): New.
	* tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
	because of debug stmts.
	(mark_stmt_if_obviously_necessary): Mark debug stmts.
	(eliminate_unnecessary_stmts): Walk dominated blocks before
	* tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
	* ira.c (memref_used_between_p): Skip debug insns.
	(update_equiv_regs): Likewise.
	* sched-deps.c (sd_lists_size): Accept empty list.
	(sd_init_insn): Mark debug insns.
	(sd_finish_insn): Unmark them.
	(sd_add_dep): Reject non-debug deps on debug insns.
	(fixup_sched_groups): Give debug insns group treatment.
	Skip debug insns.
	(sched_analyze_reg): Don't mark debug insns for sched before call.
	(sched_analyze_2): Handle debug insns.
	(sched_analyze_insn): Compute next non-debug insn.  Handle debug
	(deps_analyze_insn): Handle debug insns.
	(deps_start_bb): Skip debug insns.
	(init_deps): Initialize last_debug_insn.
	* tree-ssa.c (target_for_debug_bind): New.
	(find_released_ssa_name): New.
	(propagate_var_def_into_debug_stmts): New.
	(propagate_defs_into_debug_stmts): New.
	(verify_ssa): Skip debug bind stmts without values.
	(warn_uninialized_vars): Skip debug stmts.
	* target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
	* rtl.c (rtx_equal_p_cb): Handle VALUEs.
	(rtx_equal_p): Likewise.
	* ira-costs.c (scan_one_insn): Skip debug insns.
	(process_bb_node_for_hard_reg_moves): Likewise.
	* rtl.h (DEBUG_INSN_P): New.
	(INSN_P): Accept debug insns.
	(INSN_DELETED_P): Likewise
	(gen_rtx_UNKNOWN_VAR_LOC): New.
	(SCHED_GROUP_P): Accept debug insns.
	(emit_debug_insn_before): Declare.
	(emit_debug_insn_before_noloc): Declare.
	(emit_debug_insn_beore_setloc): Declare.
	(emit_debug_insn_after): Declare.
	(emit_debug_insn_after_noloc): Declare.
	(emit_debug_insn_after_setloc): Declare.
	(emit_debug_insn): Declare.
	(make_debug_insn_raw): Declare.
	(prev_nondebug_insn): Declare.
	(next_nondebug_insn): Declare.
	(delegitimize_mem_from_attrs): Declare.
	(get_max_insn_count): Declare.
	(wrap_constant): Declare.
	(unwrap_constant): Declare.
	(get_curr_insn_source_location): Declare.
	(get_curr_insn_block): Declare.
	* tree-inline.c (insert_debug_decl_map): New.
	(processing_debug_stmt): New.
	(remap_decl): Don't create new mappings in debug stmts.
	(remap_gimple_op_r): Don't add references in debug stmts.
	(copy_tree_body_r): Likewise.
	(remap_gimple_stmt): Handle debug bind stmts.
	(copy_bb): Skip debug stmts.
	(copy_edges_for_bb): Likewise.
	(copy_debug_stmt): New.
	(copy_debug_stmts): New.
	(copy_body): Copy debug stmts at the end.
	(insert_init_debug_bind): New.
	(insert_init_stmt): Take id.  Skip and emit debug stmts.
	(setup_one_parameter): Remap variable earlier, register debug mapping.
	(estimate_num_insns): Skip debug stmts.
	(expand_call_inline): Preserve debug_map.
	(optimize_inline_calls): Check for no debug_stmts left-overs.
	(unsave_expr_now): Preserve debug_map.
	(copy_gimple_seq_and_replace_locals): Likewise.
	(tree_function_versioning): Check for no debug_stmts left-overs.
	Init and destroy debug_map as needed.  Split edges unconditionally.
	(build_duplicate_type): Init and destroy debug_map as needed.
	* tree-inline.h: Include gimple.h instead of pointer-set.h.
	(struct copy_body_data): Add debug_stmts and debug_map.
	* sched-int.h (struct ready_list): Add n_debug.
	(struct deps): Add last_debug_insn.
	(sd_iterator_cond): Accept empty list.
	* combine.c (create_log_links): Skip debug insns.
	(combine_instructions): Likewise.
	(cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
	return value is always unshared.
	(struct rtx_subst_pair): New.
	(auto_adjust_pair): New.
	(propagate_for_debug_subst): New.
	(propagate_for_debug): New.
	(try_combine): Skip debug insns.  Propagate removed defs into
	debug insns.
	(next_nonnote_nondebug_insn): New.
	(distribute_notes): Use it.  Skip debug insns.
	(distribute_links): Skip debug insns.
	* tree-outof-ssa.c (set_location_for_edge): Likewise.
	* resource.c (mark_target_live_regs): Likewise.
	* var-tracking.c: Include cselib.h and target.h.
	(enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
	(micro_operation_type_name): New.
	(enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
	(struct micro_operation_def): Update comments.
	(decl_or_value): New type.  Use instead of decls.
	(struct emit_note_data_def): Add vars.
	(struct attrs_def): Use decl_or_value.
	(struct variable_tracking_info_def): Add permp, flooded.
	(struct location_chain_def): Update comment.
	(struct variable_part_def): Use decl_or_value.
	(struct variable_def): Make var_part a variable length array.
	(valvar_pool): New.
	(scratch_regs): New.
	(cselib_hook_called): New.
	(dv_is_decl_p): New.
	(dv_is_value_p): New.
	(dv_as_decl): New.
	(dv_as_value): New.
	(dv_as_opaque): New.
	(dv_onepart_p): New.
	(dv_pool): New.
	(check_value_is_not_decl): New.
	(dv_from_decl): New.
	(dv_from_value): New.
	(dv_htab_hash): New.
	(variable_htab_hash): Use it.
	(variable_htab_eq): Support values.
	(variable_htab_free): Free from the right pool.
	(attrs_list_member, attrs_list_insert): Use decl_or_value.
	(attrs_list_union): Adjust.
	(attrs_list_mpdv_union): New.
	(tie_break_pointers): New.
	(canon_value_cmp): New.
	(unshare_variable): Return possibly-modified slot.
	(vars_copy_1): Adjust.
	(var_reg_decl_set): Adjust.  Split out of...
	(var_reg_set): ... this.
	(get_init_value): Adjust.
	(var_reg_delete_and_set): Adjust.
	(var_reg_delete): Adjust.
	(var_regno_delete): Adjust.
	(var_mem_decl_set): Split out of...
	(var_mem_set): ... this.
	(var_mem_delete_and_set): Adjust.
	(var_mem_delete): Adjust.
	(val_store): New.
	(val_reset): New.
	(val_resolve): New.
	(variable_union): Adjust.  Speed up merge of 1-part vars.
	(variable_canonicalize): Use unshared slot.
	(find_loc_in_1pdv): New.
	(struct dfset_merge): New.
	(insert_into_intersection): New.
	(intersect_loc_chains): New.
	(loc_cmp): New.
	(canonicalize_loc_order_check): New.
	(canonicalize_values_mark): New.
	(canonicalize_values_star): New.
	(variable_merge_over_cur): New.
	(variable_merge_over_src): New.
	(dataflow_set_merge): New.
	(dataflow_set_equiv_regs): New.
	(remove_duplicate_values): New.
	(struct dfset_post_merge): New.
	(variable_post_merge_new_vals): New.
	(variable_post_merge_perm_vals): New.
	(dataflow_post_merge_adjust): New.
	(find_mem_expr_in_1pdv): New.
	(dataflow_set_preserve_mem_locs): New.
	(dataflow_set_remove_mem_locs): New.
	(dataflow_set_clear_at_call): New.
	(onepart_variable_different_p): New.
	(variable_different_p): Use it.
	(dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
	(track_expr_p): Add need_rtl parameter.  Don't generate rtl
	if not needed.
	(track_loc_p): Pass it true.
	(struct count_use_info): New.
	(find_use_val): New.
	(replace_expr_with_values): New.
	(log_op_type): New.
	(use_type): New, partially split out of...
	(count_uses): ... this.  Count new micro-ops.
	(count_uses_1): Adjust.
	(count_stores): Adjust.
	(count_with_sets): New.
	(add_uses): Adjust.  Generate new micro-ops.
	(add_uses_1): Adjust.
	(add_stores): Generate new micro-ops.
	(add_with_sets): New.
	(find_src_status): Adjust.
	(find_src_set_src): Adjust.
	(compute_bb_dataflow): Use dataflow_set_clear_at_call.
	Handle new micro-ops.  Canonicalize value equivalances.
	(vt_find_locations): Compute total size of hash tables for
	dumping.  Perform merge for var-tracking-assignments.  Don't
	disregard single-block loops.
	(dump_attrs_list): Handle decl_or_value.
	(dump_variable): Take variable.  Deal with decl_or_value.
	(dump_variable_slot): New.
	(dump_vars): Use it.
	(dump_dataflow_sets): Adjust.
	(set_slot_part): New, extended to support one-part variables
	after splitting out of...
	(set_variable_part): ... this.
	(clobber_slot_part): New, split out of...
	(clobber_variable_part): ... this.
	(delete_slot_part): New, split out of...
	(delete_variable_part): .... this.
	(check_wrap_constant): New.
	(vt_expand_loc_callback): New.
	(vt_expand_loc): New.
	(emit_note_insn_var_location): Adjust.  Handle values.  Handle
	(emit_notes_for_differences_1): Adjust.  Handle values.
	(emit_notes_for_differences_2): Likewise.
	(emit_notes_for_differences): Adjust.
	(emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
	Adjust.  Handle new micro-ops.
	(vt_add_function_parameters): Adjust.  Create and bind values.
	(vt_initialize): Adjust.  Initialize scratch_regs and
	valvar_pool, flooded and perm..  Initialize and use cselib.  Log
	operations.  Move some code to count_with_sets and add_with_sets.
	(delete_debug_insns): New.
	(vt_debug_insns_local): New.
	(vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
	(var_tracking_main): If var-tracking-assignments is enabled
	but var-tracking isn't, delete debug insns and leave.  Likewise
	if we exceed limits or fail the stack adjustments tests, and
	after all var-tracking processing.
	More in var-tracking, from Jakub Jelinek <>:
	(dataflow_set): Add traversed_vars.
	(value_chain, const_value_chain): New typedefs.
	(value_chain_pool, value_chains): New variables.
	(value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
	add_value_chains, add_cselib_value_chains, remove_value_chain,
	remove_value_chains, remove_cselib_value_chains): New functions.
	(shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
	shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
	static inlines.
	(shared_hash_find_slot_unshare, shared_hash_find_slot,
	shared_hash_find_slot_noinsert, shared_hash_find): Update.
	(dst_can_be_shared): New variable.
	(unshare_variable): Unshare set->vars if shared, use shared_hash_*.
	Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
	different from set->vars, look up slot again instead of using the
	passed in slot.
	(dataflow_set_init): Initialize traversed_vars.
	(variable_union): Use shared_hash_*.  Use initially NO_INSERT
	lookup if set->vars is shared.  Don't keep slot cleared before
	calling unshare_variable.  Unshare set->vars if needed.  Adjust
	unshare_variable callers.  Clear dst_can_be_shared if needed.
	Even ->refcount == 1 vars must be unshared if set->vars is shared
	and var needs to be modified.
	(dataflow_set_union): Set traversed_vars during canonicalization.
	(set_dv_changed, dv_changed_p): New static inlines.
	(track_expr_p): Clear DECL_CHANGED.
	(dump_dataflow_sets): Set it.
	(variable_was_changed): Call set_dv_changed.
	(emit_note_insn_var_location): Likewise.
	(changed_variables_stack): New variable.
	(check_changed_vars_1, check_changed_vars_2): New functions.
	(emit_notes_for_changes): Do nothing if changed_variables is
	empty.  Traverse changed_variables with check_changed_vars_1,
	call check_changed_vars_2 on each changed_variables_stack entry.
	(emit_notes_in_bb): Add SET argument.  Just clear it at the
	beginning, use it instead of local &set, don't destroy it at the end.
	(vt_emit_notes): Call dataflow_set_clear early on all
	VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
	computed set, dataflow_set_clear also VTI(bb)->in when we are
	done with the basic block.  Initialize changed_variables_stack,
	free it afterwards.  If ENABLE_CHECKING verify that after noting
	differences to an empty set value_chains hash table is empty.
	(vt_initialize): Initialize value_chains and value_chain_pool.
	(vt_finalize): Delete value_chains htab, free value_chain_pool.
	(variable_tracking_main): Call dump_dataflow_sets before calling
	vt_emit_notes, not after it.
	* tree-flow.h (propagate_defs_into_debug_stmts): Declare.
	(propagate_var_def_into_debug_stmts): Declare.
	* df-problems.c (df_lr_bb_local_compute): Skip debug insns.
	(df_set_note): Reject debug insns.
	(df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
	add notes to debug insns.
	(df_note_bb_compute): Adjust.  Likewise.
	(df_simulate_uses): Skip debug insns.
	(df_simulate_initialize_backwards): Likewise.
	* reg-stack.c (subst_stack_regs_in_debug_insn): New.
	(subst_stack_regs_pat): Reject debug insns.
	(convert_regs_1): Handle debug insns.
	* (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
	(print-rtl.o): Depend on cselib.h.
	(cselib.o): Depend on TREE_PASS_H.
	(var-tracking.o): Depend on cselib.h and TARGET_H.
	* sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
	(init_ready_list): Skip boundary debug insns.
	(add_branch_dependences): Skip debug insns.
	(free_block_dependencies): Check for blocks with only debug insns.
	(compute_priorities): Likewise.
	* gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
	(gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
	all callers.
	(gimple_build_debug_bind_stat): New.
	(empty_body_p): Skip debug stmts.
	(gimple_has_side_effects): Likewise.
	(gimple_rhs_has_side_effects): Likewise.
	* gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
	(gimple_build_debug_bind_stat): Declare.
	(gimple_build_debug_bind): Define.
	(is_gimple_debug): New.
	(gimple_debug_bind_p): New.
	(gimple_debug_bind_get_var): New.
	(gimple_debug_bind_get_value): New.
	(gimple_debug_bind_get_value_ptr): New.
	(gimple_debug_bind_set_var): New.
	(gimple_debug_bind_set_value): New.
	(GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
	(gimple_debug_bind_reset_value): New.
	(gimple_debug_bind_has_value_p): New.
	(gsi_next_nondebug): New.
	(gsi_prev_nondebug): New.
	(gsi_start_nondebug_bb): New.
	(gsi_last_nondebug_bb): New.
	* sched-vis.c (print_pattern): Handle VAR_LOCATION.
	(print_insn): Handle DEBUG_INSN.
	* tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
	of first insn prevail.
	(first_stmt): Skip debug stmts.
	(first_non_label_stmt): Likewise.
	(last_stmt): Likewise.
	(has_zero_uses_1): New.
	(single_imm_use_1): New.
	(verify_gimple_debug): New.
	(verify_types_in_gimple_stmt): Handle debug stmts.
	(verify_stmt): Likewise.
	(debug_loop_num): Skip debug stmts.
	(remove_edge_and_dominated_blocks): Remove dominators last.
	* tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
	(linearize_expr): Likewise.
	* config/i386/i386.c (ix86_delegitimize_address): Call
	default implementation.
	* config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
	(group_barrier_needed): Skip debug insns.
	(emit_insn_group_barriers): Likewise.
	(emit_all_insn_group_barriers): Likewise.
	(ia64_variable_issue): Handle debug insns.
	(ia64_dfa_new_cycle): Likewise.
	(final_emit_insn_group_barriers): Skip debug insns.
	(ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
	def cfa without frame.
	(process_set): Likewise.
	(process_for_unwind_directive): Pass frame on.
	* config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
	(rs6000_delegitimize_address): New.
	(rs6000_debug_adjust_cost): Handle debug insns.
	(is_microcoded_insn): Likewise.
	(is_cracked_insn): Likewise.
	(is_nonpipeline_insn): Likewise.
	(insn_must_be_first_in_group): Likewise.
	(insn_must_be_last_in_group): Likewise.
	(force_new_group): Likewise.
	* cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
	contains only debug insns.
	(rtl_merge_blocks): Skip debug insns.
	(purge_dead_edges): Likewise.
	(rtl_block_ends_with_call_p): Skip debug insns.
	* dce.c (deletable_insn_p): Handle VAR_LOCATION.
	(mark_reg_dependencies): Skip debug insns.
	* params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
	* tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
	* tree-ssa-threadedge.c
	(record_temporary_equivalences_from_stmts): Skip debug stmts.
	* regcprop.c (replace_oldest_value_addr): Skip debug insns.
	(replace_oldest_value_mem): Use ALL_REGS for debug insns.
	(copyprop_hardreg_forward_1): Handle debug insns.
	* reload1.c (reload): Skip debug insns.  Replace unassigned
	pseudos in debug insns with their equivalences.
	(eliminate_regs_in_insn): Skip debug insns.
	(emit_input_reload_insns): Skip debug insns at first, adjust
	them later.
	* tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
	(get_indirect_ref_operands): Pass opf_no_vops on.
	(get_expr_operands): Likewise.  Skip debug stmts.
	(parse_ssa_operands): Scan debug insns with opf_no_vops.

2009-09-01  Richard Henderson  <>

	* tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
	stmt_ends_pp_p statements at least once.
	* tree-vrp.c (vrp_initialize): Likewise.
	(vrp_visit_stmt): Be prepared for non-interesting stmts.

2009-09-01  Dodji Seketeli  <>

	PR bootstrap/41205
	Fix AIX bootstrap after PR debug/30161
	* dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
	that is a GNU extension.
	(tmpl_value_parm_die_table): Move the definition of this global
	outside #ifdef DWARF2_DEBUGGING_INFO region.

2009-09-01  Richard Guenther  <>

	* tree.c (tree_expr_size): New function.
	* tree.h (tree_expr_size): Declare.
	* rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
	* builtins.c (fold_builtin_memory_op): Use tree_expr_size.
	* langhooks.c (lhd_expr_size): Remove.
	* langhooks.h (struct lang_hooks): Remove expr_size.
	* explow.c (expr_size): Use tree_expr_size.
	(int_expr_size): Likewise.
	* langhooks-def.h (lhd_expr_size): Remove.

2009-09-01  Richard Guenther  <>

	* tree-flow.h (mark_addressable): Move declaration ...
	* tree.h (mark_addressable): ... here.
	* stmt.c (expand_asm_operands): Use mark_addressable, not
	* langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
	* langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
	* c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.

2009-08-31  Chris Demetriou  <>

	* config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
	vectorize if not TARGET_SSE2.

2009-08-31  DJ Delorie  <>

	* config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
	registers if no coprocessor is enabled.

2009-08-31  Dodji Seketeli  <>

	PR debug/30161
	* cgraph.h (cgraph_get_node): Declare ...
	* cgraph.c (cgraph_get_node): ... new function.
	* dwarf2out.c (gen_generic_params_dies,
	generic_parameter_die, tree_add_const_value_attribute_for_decl,
	gen_remaining_tmpl_value_param_die_attribute): New functions.
	(gen_subprogram_die): Generate debug info for template parameters
	if debug info level is higher than DINFO_LEVEL_TERSE.
	Use tree_add_const_value_attribute_for_decl instead of
	(gen_const_die): Use tree_add_const_value_attribute_for_decl
	instead of tree_add_const_value_attribute.
	(gen_struct_or_union_type_die): Generate debug
	info for template parameters if debug info level is higher than
	(tree_add_const_value_attribute): Handle integral and pointer
	constants. Update comment.
	(dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
	(dwarf_attr_name): Support DW_AT_GNU_template_name.
	(reference_to_unused): Fix thinko. Remove redundant predicates from
	(tree_add_const_value_attribute): Make this work for constant
	expressions only.
	tree_add_const_value_attribute_for_decl is to be used for variable
	DECLs now.
	(add_location_or_const_value_attribute): Use
	tree_add_const_value_attribute_for_decl now.
	(dwarf2out_finish): Emit the DW_AT_const_value attribute of
	DW_TAG_template_value_param DIEs after function DIEs have been
	* langhooks.h (lang_hooks_for_types): Add
	(lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
	(lang_hooks): Added get_innermost_generic_parms,

2009-08-31  DJ Delorie  <>

	* config/mep/mep.c (machine_function): Add frame_locked flag.  Set
	it once we start generating the prologue or epilogue.
	(mep_call_saves_register): If the frame is locked, re-use
	cached values.
	(mep_assign_save_slots): New, broken out from mep_expand_prologue.
	(mep_expand_prologue): Call it.
	(mep_expand_epilogue): Likewise.
	(mep_start_function): Use the same logic as mep_expand_prologue.
	(mep_pass_by_reference): Make logic more readable.
	(mep_return_in_memory): Zero-sized objects are passed in memory.
	(mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.

2009-08-31  Richard Guenther  <>

	* builtins.c (fold_builtin_memory_op): Use the alias oracle
	to query if the memory regions for memmove overlap.
	* tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
	asserts on pointers, instead deal with odd trees.
	(ptr_derefs_may_alias_p): Likewise.
	(refs_may_alias_p_1): Constructor bases also never alias.

2009-08-31  Gerald Pfeifer  <>

	* doc/install.texi (Final install): Adjust reference on where to
	order printed manuals.

2009-08-30  Olivier Hainque  <>

	* dwarf2out.c (switch_to_frame_table_section): Move
	definition prior to first use.

2009-08-30  Richard Guenther  <>

	PR tree-optimization/41186
	* tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
	(ao_ref_init_from_ptr_and_size): New function.
	(ref_maybe_used_by_call_p_1): Be more precise tracking
	used ranges for builtin functions.
	(ref_maybe_used_by_call_p): Adjust.
	(call_may_clobber_ref_p_1): Be more precise tracking clobbered
	ranges for builtin functions.
	* tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.

2009-08-30  Alan Modra  <>

	PR target/41081
	* fwprop.c (get_reg_use_in): Delete.
	(free_load_extend): New function.
	(forward_propagate_subreg): Use it.

2009-08-29  Kaz Kojima  <>

	* config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.

2009-08-29  Kai Tietz<>

	* config/i386.c (ix86_expand_epilogue): Correct stack adjustment for

2009-08-29  Douglas B Rupp  <>

	* crtstuff.c (__do_global_dtors_aux): Use atexit if no
	fini or fini_array section.

2009-08-28  Sebastian Pop  <>

	* graphite-dependences.c (graphite_legal_transform_bb): Call
	* graphite-poly.c (can_collapse_pdr): Removed.
	(pdr_find_duplicate): Removed.
	(can_collapse_pdrs): New.
	(pbb_remove_duplicate_pdrs): New.
	(new_poly_dr): Do not look for duplicates.
	* graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
	(pbb_remove_duplicate_pdrs): Declared.

2009-08-28  Sebastian Pop  <>

	* graphite-interchange.c (pbb_interchange_profitable_p): Adjust
	the strides by multiplying by PDR_NB_REFS.
	* graphite-poly.c (can_collapse_pdr): New.
	(pdr_find_duplicate): New.
	(new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
	Initialize PDR_NB_REFS.
	* graphite-poly.h (struct poly_dr): Add field nb_refs.
	(PDR_NB_REFS): New.
	(new_poly_dr): Number of subscripts is a graphite_dim_t.

2009-08-28  Sebastian Pop  <>

	PR middle-end/40965
	* graphite-poly.c (apply_poly_transforms): Remove legality test before
	any transform.

2009-08-28  Sebastian Pop  <>

	* graphite-dependences.c (pddr_original_scattering): Return NULL
	for read-read dependence relations.
	* graphite-poly.h (enum poly_dr_type): Fix comment.
	(pdr_read_p): New.
	(pdr_write_p): New.
	(pdr_may_write_p): New.

2009-08-28  Sebastian Pop  <>

	* graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
	(struct poly_dr): Same.
	(new_poly_dr): Same.
	* graphite-poly.c (new_poly_dr): Same.
	* graphite-dependences.c (dot_deps): Disable call to system.

2009-08-28  Cary Coutant  <>

	PR debug/41063
	* dwarf2out.c (gen_type_die_with_usage): Use proper context for
	struct/union/enum types local to a function.

2009-08-28  Konrad Trifunovic  <>
	    Sebastian Pop  <>

	* graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
	pbb_strip_mine_time_depth.  Changed the implementation so that
	transformation is expressed as a transformation on
	time (scatttering) dimensions.  Also, ensures that the 2d+1
	scheduling format is preserved.
	(pbb_strip_mine_profitable_p): Profitability is based on the
	iteration number of a given time (scattering) dimension,
	and not on a original loop depth dimension.
	(pbb_strip_mine): Call pbb_number_of_iterations_at_time.
	(pbb_do_strip_mine): Call psct_dynamic_dim.
	* graphite-poly.c (pbb_number_of_iterations_at_time): New.
	* graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
	(pbb_nb_dynamic_scattering_transform): New.
	(psct_dynamic_dim): New.

2009-08-28  Konrad Trifunovic  <>

	* graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
	* graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
	* graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
	* graphite-interchange.c (build_linearized_memory_access): Same.
	(memory_stride_in_loop): Same.

2009-08-28  Sebastian Pop  <>

	* graphite-dependences.c (pddr_original_scattering): New.
	(graphite_legal_transform_dr): Call pddr_original_scattering.
	(dot_deps_1): New.
	(dot_deps): New.
	* graphite-dependences.h (dot_deps): Declared.
	* graphite-poly.c (new_poly_dr): Initialize PDR_ID.
	(print_pdr): Print PDR_ID.
	* graphite-poly.h (struct poly_dr): Add field id.
	(PDR_ID): New.
	(pbb_index): New.
	* graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.

2009-08-28  Sebastian Pop  <>

	* graphite-dependences.c (graphite_carried_dependence_level_k): Do
	not delete the original dependence relation.

2009-08-28  Sebastian Pop  <>

	* graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
	(eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
	(hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
	(free_poly_ddr): New.
	(pddr_is_empty): New.
	(dependence_polyhedron_1): Now returns a poly_ddr_p.
	(dependence_polyhedron): Same.  Remove useless gcc_assert.
	Remove fprintfs.
	(graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
	(graphite_carried_dependence_level_k): Call pddr_is_empty.
	* graphite-dependences.h (enum poly_dependence_kind): New.
	(poly_dr_pair): Renamed poly_ddr.  Added a field kind.
	(PDRP_DDP): Renamed PDDR_DDP.
	(PDDR_KIND): New.
	(free_poly_ddr): Declared.
	* graphite-poly.c (new_scop): Use the new hash function names.
	* graphite-poly.h (struct scop): Renamed field original_pdr_pairs
	into original_pddrs.

2009-08-28  Sebastian Pop  <>

	* cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
	bounds with LT_EXPR to make niter analysis more precise on code
	generated by Graphite.

2009-08-28  Sebastian Pop  <>

	* graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
	(graphite_legal_transform_bb): Same.
	(poly_drs_may_alias_p): Same.

2009-08-28  Richard Guenther  <>

	* tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.

2009-08-28  Jan Beulich  <>

	* config/i386/netware.c: Include langhooks.h.
	(i386_nlm_encode_section_info): Simplify.
	(netware_override_options): Delete.
	* config/i386/netware.h (netware_override_options): Delete
	(OVERRIDE_OPTIONS): Delete definition.
	* config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.

2009-08-28  Jan Beulich  <>

	* For in-tree ld, do a plain version check to
	determine whether comdat groups are supported.
	* configure: Regenerate.

2009-08-28  Olivier Hainque  <>

	* collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
	always defined.  Reflect definition or absence of such for
	COLLECT_EXPORT_LIST.  Readability helper.
	(scanfilter): New enum, to help control what symbols
	are to be considered or ignored by scan_prog_file.
	(enum pass): Rename as "scanpass", moved together with scanfilter
	prior to scan_prog_file's prototype.
	(scan_prog_file): Accept and honor scanpass and scanfilter arguments.
	Group prototype with the scanpass/scanfilter definitions, factorize
	head comments for the several implementations at the prototype.
	(main): Reorganize the first pass link control to let AIX
	drag only the needed frame tables in executables.  Prevent
	frame tables collection during the scan aimed at static ctors.
	Pre-link and scan for frame tables later to compensate.
	* doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
	A C statement to issue assembly directives that create a reference
	to the given DWARF table identifier label from the current function
	* dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
	to differentiate first time section entry.  Only emit a .data
	tables start identifier label the first time around.
	(switch_to_frame_table_section): New function.  Helper for
	output_call_frame_info to switch possibly BACK into the eh_frame
	or the debug_frame section depending on FOR_EH.
	(output_call_frame_info): Use helper to first enter the proper
	frame section.
	(output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
	emit a link to the frame table start label from each function
	* config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
	New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
	* config/rs6000/rs6000-protos.h: Declare it.
	* config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.

2009-08-27  Kaz Kojima  <>

	* config/sh/sh.c (split_branches): Check the result of

2009-08-27  Steve Ellcey  <>

	* config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
	using -pthread -fopenmp

2009-08-27  Gerald Pfeifer  <>

	* doc/service.texi (service directory): Update URL.

2009-08-27  Uros Bizjak  <>

	PR rtl-optimization/40861
	* simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
	extract word from a multi-word subreg for negative byte positions.

2009-08-27  Tristan Gingold  <>
	    Douglas B Rupp  <>

	* config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
	(ia64_vms_common_object_attribute): Added.  Handle the "common_object"
	(ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
	for common_object.
	(ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
	common_object declarations.
	(ia64_section_type_flags): Set section flag for common_object.
	* config/ia64/ia64-protos.h
	(ia64_vms_output_aligned_decl_common): Declare.
	(ia64_vms_elf_asm_named_section): Declare.

2009-08-27  Michael Matz  <>

	* expr.c (expand_expr_real_2): New function taking exploded
	unary or binary expression, split out from ...
	(expand_expr_real_1): ... here.  Move over all unary/binary
	switch parts to above function, in particular these codes:
	(<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
	full expression.

2009-08-27  Richard Guenther  <>