+2009-05-13 Brad Hards <bradh@kde.org>
+
+ * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
+
+2009-05-13 Jakub Jelinek <jakub@redhat.com>
+ Ben Elliston <bje@au.ibm.com>
+
+ PR middle-end/40035
+ * dse.c (check_mem_read_rtx): Guard against width == -1.
+
+2009-05-13 Michael Matz <matz@suse.de>
+
+ PR middle-end/39976
+ * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
+ (trivially_conflicts_p): New function.
+ (insert_backedge_copies): Use it.
+
+2009-05-13 Janis Johnson <janis187@us.ibm.com>
+
+ * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
+ (handle_stdc_pragma): Use new enum constant names.
+ (handle_pragma_float_const_decimal64): Ditto.
+
+2009-05-13 Ian Lance Taylor <iant@google.com>
+
+ * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
+ tree.def.
+
+2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
+ * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
+ multilibs.
+ * config/m68k/m68k.h (FL_UCLINUX): Define.
+
+2009-05-13 Jan Hubicka <jh@suse.cz>
+
+ * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
+
+2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
+ unless -fschedule-insns is specified.
+
+2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/39561
+ * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
+ TARGET_EXPAND_CBRANCHDI4.
+ * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
+ * config/sh/sh.opt (mexpand-cbranchdi): Remove.
+ (cmpeqdi): Fix comment.
+
+2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
+ (sh_legitimate_address_p): Likewise.
+ * config/sh/sh.c (sh_legitimate_index_p): New.
+ (sh_legitimate_address_p): Likewise.
+ * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
+ (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
+ (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
+ (MAYBE_BASE_REGISTER_RTX_P): New macro.
+ (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
+ (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
+ (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
+ (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
+ (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
+
+2009-05-12 Jan Hubicka <jh@suse.cz>
+
+ * tree-inline.c (estimate_operator_cost): Add operands;
+ when division happens by constant, it is cheap.
+ (estimate_num_insns): Loads and stores are not having cost of 0;
+ EH magic stuff is cheap; when computing runtime cost of switch,
+ use log2 base of amount of its cases; builtin_expect has cost of 0;
+ compute cost for moving return value of call.
+ (init_inline_once): Initialize time_based flags.
+ * tree-inline.h (eni_weights_d): Add time_based flag.
+
+2009-05-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * df-core.c: Update head documentation.
+
+2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR bootstrap/40118
+ * rs6000.c (rs6000_generate_compare): Use op1b instead of
+ shadowing exisiting variable op1.
+
+2009-05-12 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/37179
+ * config/i386/driver-i386.c (processor_signatures): New enum.
+ (SIG_GEODE): Move from vendor_signatures to processor_signatures.
+ (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
+ processor signature to detect geode processor.
+
+2009-05-12 Paolo Bonzini <bonzini@gnu.org>
+
+ Revert:
+
+ 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * optabs.c (prepare_cmp_insn): Temporarily disable test that
+ causes spurious differences between trunk and cond-optab branch.
+
+2009-05-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * dojump.c (compare_from_rtx): Delete.
+ * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
+ any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
+ if the comparison does not satisfy the predicate; test predicates for
+ operands 2 and 3 of a cstore pattern. Don't try cstore optab
+ further if one existing pattern fails.
+ * expr.h (compare_from_rtx): Delete.
+ (prepare_operand): Declare it.
+ * optabs.c: Change "lib call" to "libcall" throughout.
+ (bcc_gen_fctn, setcc_gen_code, trap_rtx,
+ HAVE_conditional_trap, emit_cmp_insn): Delete.
+ (can_compare_p): Delete cmp_optab case.
+ (prepare_float_lib_cmp): Return an rtx and a machine mode.
+ Accept other parameters by value.
+ (prepare_operand): Make non-static.
+ (prepare_cmp_insn): Return an rtx and a machine mode. Accept
+ other parameters by value. Try to widen operands here based on
+ an optab_methods argument and looking at cbranch_optab.
+ (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
+ loop. Use cbranch_optab directly.
+ (emit_cmp_and_jump_insns): Fix comment. Adjust call to
+ prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
+ assertion.
+ (emit_conditional_move, emit_conditional_add): Inline what's needed
+ of compare_from_rtx, using new prepare_cmp_insn for the rest.
+ (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
+ with COMPARE. Move cmov_optab and cstore_optab above
+ with cbranch_optab, move cmp_optab down with ucmp_optab,
+ remove tst_otpab. Do not initialize trap_rtx.
+ (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
+ for trap code. Do not check HAVE_conditional_trap. Use
+ prepare_cmp_insn. Accept no predicate for operand 3.
+ * optabs.h (OTI_cmp): Mark as used only for libcalls.
+ (OTI_ctrap, ctrap_optab): New.
+ (tst_optab): Delete.
+ (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
+ * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
+ with lookup of ctrap_optab.
+ * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
+ setcc_gen_code): Delete.
+ (ctrap_optab): New.
+
+ * combine.c (combine_simplify_rtx, simplify_set): Do not
+ special case comparing against zero for cc0 machines.
+ * simplify-rtx.c (simplify_binary_operation_1): Never remove
+ COMPARE on cc0 machines.
+ (simplify_relational_operation): Return a new expression when
+ a COMPARE could be removed.
+ * final.c (final_scan_insn): Compare cc_status values
+ against LHS of a (compare FOO (const_int 0)) cc0 source.
+ Also check if cc_status.value is the full compare.
+
+ * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
+ (cstoreMM4): Document.
+ (conditional_trap): Document ctrapMM4 instead.
+ (sync_compare_and_swapMM): Refer to cbranchcc4.
+ (Dependent Patterns): Eliminate obsolete information referring to
+ the old jump optimization phase.
+ (Canonicalization): Include cbranchcc4 case, omit canonicalization
+ of compares with 0 on cc0 machines.
+ (Jump Patterns): Refer to MODE_CC jump patterns preferably,
+ avoiding references to cc0. Remove text about storing operands
+ in cmpMM.
+ * doc/tm.texi (Condition Codes): Include blurb on different
+ condition code representations, separate into subsections for
+ CC0, MODE_CC and conditional execution.
+
+ * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
+ alpha_emit_setcc): Accept operands and a machine mode.
+ * config/alpha/alpha.c (alpha_emit_conditional_branch):
+ Get code/op0/op1 from operands, use machine mode argument
+ instead of alpha_compare.fp_p. Emit the branch here.
+ (alpha_emit_setcc): Likewise, and return boolean.
+ (alpha_emit_conditional_move): Likewise. Assert that
+ cmp_op_mode == cmp_mode, and simplify accordingly.
+ * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
+ * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
+ (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
+ Delete.
+ (stack probe test): Use cbranchdi4.
+ * config/alpha/predicates.md (alpha_cbranch_operator): New.
+
+ * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
+ * config/arc/arc.h (movsicc, movsfcc): Use it.
+ (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
+ (cbranchsi4, cstoresi4): New.
+ (cmpsi, bCC and sCC expanders): Remove.
+
+ * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
+ * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
+ * config/arm/predicates.md (arm_comparison_operator): Only include
+ floating-point operators if there is a hardware floating-point unit.
+ * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
+ deferring to cbranch_cc and cstore_cc respectively.
+ (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
+ cbranch_cc, cstore_cc): New.
+ (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
+ arm_compare_op1.
+ (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
+
+ * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
+ * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
+ as an argument.
+ (adjust_insn_length): Adjust calls.
+ (avr_reorg): Handle (compare (foo) (const_int 0)).
+ * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
+ (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
+ (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
+ (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
+ (bCC): Remove.
+ (cbranchqi4, cbranchhi4, cbranchsi4): New.
+ (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
+
+ * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
+ (cbranchsi4, cstorebi4, cstoresi4): New.
+ (movbisi): This insn is duplicate, split it to zero_extend.
+ * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
+ (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
+ (bfin_optimize_loop): Use cbranch expander.
+ * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
+ * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
+ (bfin_bimode_comparison_operator): ... this.
+ (bfin_direct_comparison_operator): New.
+
+ * config/cris/cris.c (cris_normal_notice_update_cc): Look
+ inside (compare FOO (const_int 0)).
+ (cris_rtx_costs): Handle ZERO_EXTRACT.
+ * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
+ (*tstdi_non_v32): Fold in *cmpdi_non_v32.
+ (*tstdi_v32): Delete.
+ (*cmpdi_non_v32): Add M alternative for operand 1.
+ (cmpsi, cmp<mode>): Make private.
+ (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
+ with COMPARE.
+ (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
+
+ * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
+ (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
+ (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
+ (cc_reg_operand): New.
+ (any_cond): Delete.
+ * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
+ crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
+ * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
+ * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
+ crx_expand_scond): Delete.
+
+ * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
+ (cbranchsi4): New.
+ * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
+ * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
+
+ * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
+ cstoresi4, cstoresf4, cstoredf4): New.
+ (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
+ * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
+ Receive the entire operands array.
+ * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
+ * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
+ * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
+ Get test/op0/op1 from the operands array.
+ (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
+
+ * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
+ (h8300_expand_store): New.
+ * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
+ (const_int 0)).
+ (h8300_expand_branch): Emit compare here. Adjust for new arguments.
+ (h8300_expand_store): New.
+ * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
+ or do not try to produce (set (cc0) REG).
+ (peepholes): Wrap arguments with COMPARE. Add a peephole to
+ change a compare into a move to a scratch register. Disable some
+ peepholes when comparing with zero.
+ (tstsi, tsthi, tstsi, cmpqi): Make private.
+ (cmphi): Delete.
+ (bCC, sCC): Delete.
+ (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
+ cstoresi4): New.
+
+ * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
+ ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
+ (ix86_emit_i387_log1p): Use gen_cbranchxf4.
+ (ix86_emit_i387_log1p): Use cbranchxf2.
+ (ix86_expand_setcc): Return void.
+ * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
+ * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
+ cmp<MODEF>, cmpcc): Remove.
+ (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
+ cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
+ cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
+ (sCC and bCC expanders): Remove.
+ (stack_protect_test): Use cbranchcc4.
+
+ * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
+ Delete.
+ (ia64_expand_compare): Accept three rtx by reference and return void.
+ * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
+ (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
+ from *expr. Update *expr with the BImode comparison to do.
+ * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
+ cmptf, bCC, sCC, conditional_trap): Delete.
+ (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
+ cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
+ cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
+ ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
+ * config/ia64/predicates.md (ia64_cbranch_operator): New.
+
+ * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
+ type of last argument.
+ * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
+ (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
+ use machine mode argument instead of branch_type. Remove dead
+ code for floating-point comparisons.
+ * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
+ * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
+ Remove.
+ (cbranchsi4, cstoresi4): New.
+ * config/iq2000/predicates.md (reg_or_const_operand): New.
+
+ * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
+ * config/m32c/m32c.md (any_cond, gl_cond): Delete.
+ (b<code>_op): Rewrite to...
+ (bcc_op): ... this, using match_operator.
+ (s<code>_op): Rewrite to...
+ (scc_op): ... this, using match_operator.
+ (s<code>_24_op): Rewrite to...
+ (scc_op_24): ... this, using match_operator.
+ (s<code>_<mode>): Rewrite to...
+ (cstore<mode>4): ... this, using match_operator.
+ (s<code>_<mode>_24): Rewrite to...
+ (cstore<mode>4_24): ... this, using match_operator.
+ * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
+ m32c_unpend_compare, m32c_expand_scc): Delete.
+ * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
+ m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
+ (m32c_expand_movcc): Change NE to EQ if necessary.
+ (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
+
+ * config/m32r/m32r-protos.h (gen_cond_store): New.
+ * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
+ (gen_cond_store): New, from sCC patterns.
+ (m32r_expand_block_move): Use cbranchsi4.
+ * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
+ * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
+ (cbranchsi4, cstoresi4): New.
+
+ * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
+ Delete.
+ (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
+ (m68hc11_notice_update_cc): Look into a compare with 0.
+ * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
+ Delete.
+ * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
+ cmphi, cmpqi, bCC): Delete.
+ (cbranchsi4, cbranchhi4, cbranchqi4): New.
+ (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
+ bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
+ sets with COMPARE.
+
+ * config/m68k/predicates.md (m68k_cstore_comparison_operator,
+ const0_operand, const1_operand, m68k_subword_comparison_operand): New.
+ * config/m68k/constraints.md (H): New.
+ * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
+ the define_insn below.
+ (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
+ (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
+ *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
+ patterns): Wrap RHS with COMPARE.
+ (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
+ (*cmpdi_internal): Name this pattern.
+ (cmpdi): Change to define_insn.
+ (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
+ cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
+ (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
+ predicate.
+ (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
+ sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
+ (conditional_trap): Change to...
+ (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
+ (*conditional_trap): Use the ordered_comparison_operator and
+ const1_operand predicates.
+ * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
+ (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
+ (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
+ * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
+
+ * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
+ mcore_modify_comparison, mcore_gen_compare_reg): Remove.
+ (mcore_gen_compare): New.
+ * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
+ (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
+ (mcore_gen_compare): ... this.
+ * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
+ (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
+ (stack probe pattern): Use cbranchsi4.
+
+ * config/mips/predicates.md (mips_cstore_operator): New.
+ * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
+ * config/mips/mips.md (any_cond): Delete.
+ (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
+ always succeed.
+ (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
+ fixuns_truncsfdi2): Use cbranch patterns.
+ (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
+ (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
+ Adjust call to mips_expand_conditional_branch.
+ (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
+ cstore<GPR:mode>4.
+ * config/mips/mips-protos.h (mips_expand_conditional_branch,
+ mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
+ * config/mips/mips.c (cmp_operands): Delete.
+ (mips_emit_compare): Get comparison operands from *op0/*op1.
+ (mips_expand_scc): Get code/op0/op1/target from operands. Assert
+ that it succeeds. Use op0/op1 instead of cmp_operands.
+ (mips_expand_conditional_branch, mips_expand_conditional_move,
+ mips_expand_conditional_trap): Likewise.
+ (mips_block_move_loop): Use cbranch patterns.
+ * config/mips/mips.h (cmp_operands): Delete.
+
+ * config/mmix/mmix.c (mmix_valid_comparison): Delete.
+ (mmix_gen_compare_reg): Just return a register in the right CC mode.
+ * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
+ * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
+ (*cmpcc_folded): Rename to...
+ (*cmpdi_folded): this.
+ (*cmpcc): Rename to...
+ (*cmps): ... this.
+ (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
+ (bCC): Remove.
+ (cbranchdi4): New.
+ (cbranchdf4): New. Handle invalid comparisons here.
+ * config/mmix/predicates.md (float_comparison_operator): New.
+
+ * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
+ zero_extract to be cheap in (compare (zero_extract) (const_int 0).
+ * config/mn10300/mn10300.md (tst): Delete.
+ (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
+ Name these patterns and wrap RHS in a compare.
+ (*cmpsi): Make this pattern private. Include tst.
+ (*cmpsf): Make this pattern private.
+ (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
+ (compare with zero peepholes): Likewise.
+ (bCC): Remove.
+ (cbranchsi4, cbranchsf4): New.
+ (casesi): Use cbranchsi4.
+
+ * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
+ hppa_branch_type): Delete.
+ (return_addr_rtx): Use cbranchsi4.
+ (emit_bcond_fp): Accept all operands. Replace CODE with NE.
+ Emit CCFPmode comparison here.
+ (gen_cmp_fp): Delete, now part of emit_bcond_fp.
+ * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
+ hppa_branch_type): Delete.
+ * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
+ (movsicc, movdicc): Remove references to hppa_compare_op0,
+ hppa_compare_op1 and compare_from_rtx.
+ (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
+ (casesi): Use cbranchsi4.
+
+ * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
+ * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
+ * config/pdp11/pdp11.md (register_or_const0_operand): New.
+ (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
+ (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
+ (bCC): Delete.
+ (cbranchdf4, cbranchhi4, cbranchqi4): New.
+ (*branch, *branch_inverted): New.
+
+ * config/picochip/picochip.md (cbranchhi4): Use
+ ordered_comparison_operator.
+ (cmphi, bCC): Remove.
+
+ * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
+ (trap_comparison_operator): Delete.
+ * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
+ rs6000_emit_cbranch): Accept mode and operands.
+ * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
+ rs6000_compare_fp_p): Delete.
+ (rs6000_generate_compare): Accept mode and comparison. Extract code
+ and op0/op1 from there. Replace references to rs6000_compare_op0
+ and rs6000_compare_op1.
+ (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
+ extract result from passed operands.
+ (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
+ extract loc from passed operands.
+ (rs6000_emit_cmove): Likewise.
+ * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
+ rs6000_compare_fp_p): Delete.
+ * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
+ (cbranch<GPR>4, cbranch<FP>4): New.
+ (cstore<mode>4): New. Consolidate here all choices about when to use
+ portable or specialized sCC sequences.
+ (stack_protect_test): Use cbranchsi4.
+ (conditional_trap): Replace with ctrap<GPR>4.
+ (conditional trap insn): Replace trap_comparison_operator with
+ ordered_comparison_operator.
+
+ * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
+ (s390_emit_prologue): Use ctrap.
+ * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
+ * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
+ New predicates replacing...
+ * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
+ (cmp<GPR>, cmp<FP>, cmpcc): Delete.
+ (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
+ (add<mode>cc): Do not use s390_compare_op0/op1.
+ (s<code>): Change to...
+ (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
+ (seq): Change to...
+ (cstorecc4): ... this. Handle EQ or NE equally.
+ (*sne): Un-privatize for use in cstorecc4.
+ (b<code>): Change to...
+ (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
+ (conditional_trap): Replace with...
+ (ctrap<GPR>4, ctrap<FP>4): ... these.
+ (stack_protect): Use cbranchcc4.
+
+ * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
+ * config/score/score-protos.h (score_gen_cmp): Delete.
+ * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
+ (score_block_move-loop): Use cbranchsi4.
+ * config/score/score.md (cbranchsi4): New.
+ (cmpsi, bCC): Delete.
+ * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
+ (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
+ * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
+ (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
+ * config/score/score3.h (score3_gen_cmp): Delete.
+ * config/score/score7.h (score7_gen_cmp): Delete.
+
+ * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
+ (sh_emit_scc_to_t): ... this. Return void.
+ (from_compare): Rename to...
+ (sh_emit_compare_and_branch): ... this.
+ (sh_emit_compare_and_set): New.
+ (sh_expand_t_scc): Accept operands.
+ * config/sh/predicates.md (sh_float_comparison_operator): New.
+ * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
+ (prepare_scc_operands): Rename to...
+ (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
+ arguments.
+ (sh_emit_cheap_store_flag): New.
+ (sh_emit_set_t_insn): New.
+ (from_compare): Rename to...
+ (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
+ handling of TARGET_SH2E floating point to avoid recursive call.
+ Generate branch here.
+ (sh_emit_compare_and_set): New.
+ (sh_expand_t_scc): Get op0/op1 from arguments.
+ (sh_emit_cheap_store_flag): New.
+ * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
+ cases.
+ (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
+ (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
+ (movsicc, movdicc): Do nothing when it recreated operands from
+ sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
+ prepare_scc_operands (now sh_emit_scc_to_t).
+ (udivdi3): Use cstoresi4.
+ (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
+ bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
+ (cbranchint4_media, cbranchfp4_media): New.
+ (casesi): Use cbranchdi4.
+ (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
+ Delete.
+ (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
+ (movnegt): Remove second operand.
+ (cbranchsf4, cbranchdf4): New.
+ (stack_protect): Use cbranchdi4/cbranchsi4.
+
+ * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
+ (gen_compare_reg): Accept comparison, extract part of it to...
+ (gen_compare_reg_1): ... this.
+ (gen_compare_operator): Delete.
+ (gen_v9_scc): Accept separate destination, comparison code and arms.
+ Do not use sparc_compare_op0/sparc_compare_op1.
+ (emit_scc_insn, emit_conditional_branch_insn): New.
+ (emit_v9_brxx): Make static. Remove useless assertion.
+ (sparc_emit_float_lib_cmp): Return RTL instead of calling
+ emit_cmp_insn.
+ (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
+ * config/sparc/sparc-protos.h (gen_compare_reg,
+ sparc_emit_float_lib_cmp): Adjust prototype.
+ (emit_scc_insn, emit_conditional_branch_insn): New.
+ (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
+ * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
+ * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
+ iterators to the top.
+ (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
+ snesi_special_extend, sCC, bCC, seqdi_special_trunc,
+ snedi_special_trunc): Delete.
+ (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
+ and snedi_special_trunc.
+ (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
+ cbranchdi4, cbranch<F:mode>4): New.
+ (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
+ here. Use gen_compare_reg instead of gen_compare_operator.
+ (conditional_trap): Replace with...
+ (ctrapsi4, ctrapdi4): ... this.
+ (stack_protect_test): Use cbranchcc4.
+
+ * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
+ argument to rtx.
+ * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
+ (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
+ Change spu_compare_op0/op1 to op0/op1 throughout. Get target
+ from operands[0] or operands[3] depending on is_set.
+ * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
+ * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
+ cmpdf, bCC), sCC: Remove.
+ (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
+ cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
+ cstoredf4): New.
+ (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
+ spu_emit_branch_or_set.
+
+ * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
+ Add two arguments.
+ * config/stormy16/stormy16.h (xstormy16_compare_op0,
+ xstormy16_compare_op1): Delete.
+ * config/stormy16/stormy16.c (xstormy16_compare_op0,
+ xstormy16_compare_op1): Delete.
+ (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
+ Adjust calls.
+ * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
+ (cmphi, cmpsi, bCC): Remove.
+
+ * config/v850/v850.md (tstsi, cmpsi): Fold into...
+ (*cmpsi): ... this one.
+ (cbranchsi4, cstoresi4): New.
+ (bCC expanders): Delete.
+ (sCC insns): Fold into...
+ (*setcc): ... this one.
+ (casesi): Do not use gen_cmpsi and gen_bgtu.
+ (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
+ (movsicc): Simplify.
+ * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
+
+ * config/vax/vax-protos.h (cond_name): New.
+ (vax_output_conditional_branch): Remove.
+ * config/vax/vax.c (cond_name): New.
+ (vax_output_conditional_branch): Remove.
+ * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
+ * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
+ (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
+ (bit<VAXint>): Wrap source with (compare).
+ (b<code> and following unnamed pattern): Rename to *branch and
+ *branch_reversed. Change macroization to match_operator.
+ (cbranch<VAXint>4, cbranch<VAXfp>4): New.
+
+ * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
+ * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
+ Change last argument to machine_mode.
+ (xtensa_expand_scc): Add machine_mode argument.
+ * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
+ (gen_conditional_move, xtensa_expand_conditional_branch,
+ xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
+ instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
+ Adjust operand numbers.
+ * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
+ Delete.
+ * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
+ (cmpsi, cmpsf, b<code>, s<code>): Delete.
+ (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
+
+2009-05-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * optabs.c (prepare_cmp_insn): Temporarily disable test that
+ causes spurious differences between trunk and cond-optab branch.
+
+2009-05-12 Alexandre Oliva <aoliva@redhat.com>
+
+ PR target/37137
+ * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
+
+2009-05-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * tree.c (iterative_hash_pointer): Delete.
+ (iterative_hash_expr): Short-circuit handling of NULL pointer.
+ Hash UIDs and versions of SSA names. Don't special-case built-in
+ function declarations.
+
+2009-05-11 Ian Lance Taylor <iant@google.com>
+
+ PR bootstrap/40103
+ * graphite.c: Force -Wc++-compat to only be a warning before
+ #including "cloog/cloog.h".
+
+2009-05-11 Martin Jambor <mjambor@suse.cz>
+
+ * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
+
+2009-05-11 Jan Hubicka <jh@suse.cz>
+
+ * tree-ssa-loop-ivcanon.c: Include target.h
+ (struct loop_size): new structure.
+ (constant_after_peeling): New predicate.
+ (tree_estimate_loop_size): New function.
+ (estimated_unrolled_size): Rewrite for new estimates.
+ (try_unroll_loop_completely): Use new estimates.
+ * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
+
+2009-05-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
+ libcpp interface change.
+ (spu_macro_to_expand): Likewise.
+
+2009-05-11 Paolo Bonzini <bonzini@gnu.org>
+
+ PR tree-optimization/40026
+ * gimplify.c (gimplify_init_constructor): Change initial conditional
+ to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
+ optimize_compound_literals_in_ctor.
+
+2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
+ New devices.
+ * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
+
+2009-05-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * tree-vect-data-refs.c (vect_analyze_group_access): Use
+ HOST_WIDE_INT for gap.
+
+2009-05-11 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/40074
+ * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
+ account in group size and step comparison.
+
+2009-05-11 Richard Guenther <rguenther@suse.de>
+
+ * passes.c (init_optimization_passes): Strip now incorrect comment.
+ (execute_function_todo): Do not set PROP_alias.
+ * tree-pass.h (PROP_alias): Remove.
+ * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
+ * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
+ * tree-nrv.c (pass_return_slot): Likewise.
+ * tree-object-size.c (pass_object_sizes): Likewise.
+ * tree-ssa-dom.c (pass_dominator): Likewise.
+ (pass_phi_only_cprop): Likewise.
+ * tree-ssa-dse.c (pass_dse): Likewise.
+ * tree-ssa-phiopt.c (pass_phiopt): Likewise.
+ (pass_cselim): Likewise.
+ * tree-ssa-pre.c (pass_pre): Likewise.
+ (pass_fre): Likewise.
+ * tree-ssa-reassoc.c (pass_reassoc): Likewise.
+ * tree-ssa-sink.c (pass_sink_code): Likewise.
+ * tree-stdarg.c (pass_stdarg): Likewise.
+ * tree-tailcall.c (pass_tail_calls): Likewise.
+ * tree-vrp.c (pass_vrp): Likewise.
+
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * basic-block.h (enum profile_status): Break out of struct
+ control_flow_graph.
+ * cgraph.h (struct inline_summary): Break out of struct
+ cgraph_local_info.
+ * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
+ of struct cgraph_order_sort.
+ * combine.c (enum undo_kind): New enum, broken out of struct undo.
+ * cse.c (struct branch_path): Break out of struct
+ cse_basic_block_data.
+ * except.h (enum eh_region_type): Break out of struct eh_region.
+ * gcc.c (enum add_del): Break out of struct modify_target.
+ * genrecog.c (enum decision_type): Break out of struct decision_test.
+ * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
+ ggc_pch_data.
+ * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
+ * regmove.c (enum match_use): New enum, broken out of struct match.
+ * sched-int.h (enum post_call_group): New enum, broken out of
+ struct deps.
+ (struct deps_reg): Break out of struct deps.
+ * target.h (struct asm_int_op): Break out of struct gcc_target.
+ * tree-eh.c (struct goto_queue_node): Break out of struct
+ leh_tf_state.
+ * tree-inline.h (enum copy_body_cge_which): Break out of
+ copy_body_data.
+ * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
+
+ * c-decl.c (in_struct, struct_types): New static variables.
+ (pushtag): Add loc parameter. Change all callers.
+ (lookup_tag): Add ploc parameter. Change all callers.
+ (check_compound_literal_type): New function.
+ (parser_xref_tag): Add loc parameter. Change all callers. If
+ -Wc++-compat, warn about struct/union/enum types defined within a
+ struct or union.
+ (start_struct): Add enclosing_in_struct, enclosing_struct_types,
+ and loc parameters. Change all callers. Change error calls to
+ error_at, using loc. For a redefinition, if the location of the
+ original definition is known, report it. Set in_struct and
+ struct_types. If -Wc++-compat warn if in sizeof, typeof, or alignof.
+ (finish_struct): Add new parameters enclosing_in_struct and
+ enclosing_struct_types. Change all callers. Set
+ C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
+ in the struct. If in a struct, add this struct to struct_types.
+ (start_enum): Add loc parameter. Change all callers. Use
+ error_at for errors, using loc. For a redefinition, if the
+ location of the original definition is known, report it. If in a
+ struct, add this enum type to struct_types. If -Wc++-compat warn
+ if in sizeof, typeof, or alignof.
+ * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
+ (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
+ (c_parser_enum_specifier): Get enum location for start_enum.
+ (c_parser_struct_or_union_specifier): Get struct location for
+ start_struct. Save in_struct and struct_types status between
+ start_struct and finish_struct.
+ (c_parser_cast_expression): Get location of cast.
+ (c_parser_alignof_expression): Get location of type.
+ (c_parser_postfix_expression): Likewise.
+ (c_parser_postfix_expression_after_paren_type): Add type_loc
+ parameter. Change all callers. Call check_compound_literal_type.
+ Use type_loc for error about variable size type.
+ * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
+ of an enum constant from an enum type defined in a struct or union.
+ (c_cast_expr): Add loc parameter. Change all callers. If
+ -Wc++-compat, warn about defining a type in a cast.
+ * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
+ (start_enum, start_struct, finish_struct): Update declarations.
+ (parser_xref_tag, c_cast_expr): Update declarations.
+ (check_compound_literal_type): Declare.
+
+2009-05-11 Ben Elliston <bje@au.ibm.com>
+
+ * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
+ for recent libcpp interface change.
+ (rs6000_macro_to_expand): Likewise.
+
+2009-05-10 Michael Matz <matz@suse.de>
+
+ PR target/40031
+ * config/arm/arm.c (require_pic_register): Emit on entry edge,
+ not at entry of function.
+
+2009-05-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40081
+ Revert
+ * tree-sra.c (instantiate_element): Instantiate scalar replacements
+ using the main variant of the element type. Do not fiddle with
+ TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
+
+ * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
+ structs with volatile fields.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
+ (estimate_move_cost): Assert that it does not get called for
+ VOID_TYPE_P.
+ (estimate_num_insns): Skip VOID types in argument handling.
+ (optimize_inline_calls): Delete unreachable blocks and verify that
+ callgraph is valid.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
+ * cgraph.c (cgraph_mark_address_taken_node): New function.
+ (dump_cgraph_node): Dump new flag.
+ * cgraph.h (struct cgraph_node): Add address_taken.
+ (cgraph_mark_address_taken_node): New function.
+ * ipa.c (cgraph_postorder): Prioritize functions with address taken
+ since new direct calls can be born.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
+ tok->val.node.node.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40084
+ * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
+ argument; rewrite.
+ (cgraph_update_edges_for_call_stmt): Take old_decl argument.
+ * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
+ * tree-inline.c (copy_bb): Set frequency correctly.
+ (fold_marked_statements): Update call to
+ cgraph_update_edges_for_call_stmt.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
+ identifiers in diagnostics.
+ * config/arm/arm.c (arm_handle_fndecl_attribute,
+ arm_handle_isr_attribute): Likewise.
+ * config/avr/avr.c (avr_handle_progmem_attribute,
+ avr_handle_fndecl_attribute, avr_handle_fntype_attribute):
+ Likewise.
+ * config/bfin/bfin.c (handle_int_attribute,
+ bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
+ bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
+ bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
+ Likewise.
+ * config/darwin.c (darwin_handle_kext_attribute,
+ darwin_handle_weak_import_attribute): Likewise.
+ * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
+ h8300_handle_eightbit_data_attribute,
+ h8300_handle_tiny_data_attribute): Likewise.
+ * config/i386/i386.c (ix86_handle_cconv_attribute,
+ ix86_handle_abi_attribute, ix86_handle_struct_attribute):
+ Likewise.
+ * config/i386/winnt.c (ix86_handle_shared_attribute,
+ ix86_handle_selectany_attribute): Likewise.
+ * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
+ * config/m32c/m32c.c (function_vector_handler): Likewise.
+ * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
+ m68hc11_handle_fntype_attribute): Likewise.
+ * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
+ * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
+ * config/mips/mips.c (mips_insert_attributes,
+ mips_merge_decl_attributes, mips_expand_builtin): Likewise.
+ * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
+ rs6000_handle_struct_attribute): Likewise.
+ * config/sh/sh.c (sh_insert_attributes,
+ sh_handle_resbank_handler_attribute,
+ sh_handle_interrupt_handler_attribute,
+ sh2a_handle_function_vector_handler_attribute,
+ sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
+ Likewise.
+ * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
+ * config/spu/spu.c (spu_handle_fndecl_attribute,
+ spu_handle_vector_attribute): Likewise.
+ * config/stormy16/stormy16.c
+ (xstormy16_handle_interrupt_attribute): Likewise.
+ * config/v850/v850-c.c (ghs_pragma_section): Likewise.
+ * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * pretty-print.h (struct pretty_print_info): Add
+ translate_identifiers.
+ (pp_translate_identifiers): New.
+ (pp_identifier): Only conditionally translate identifier to locale
+ character set.
+ * pretty-print.c (pp_construct): Set pp_translate_identifiers.
+ (pp_base_tree_identifier): Only conditionally translate identifier
+ to locale character set.
+ * c-pretty-print.c (M_): Define.
+ (pp_c_type_specifier, pp_c_primary_expression): Mark English
+ fragments for conditional translation with M_.
+ * tree-pretty-print.c (maybe_init_pretty_print): Disable
+ identifier translation.
+
+2009-05-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40081
+ * tree-sra.c (instantiate_element): Instantiate scalar replacements
+ using the main variant of the element type. Do not fiddle with
+ TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40080
+ * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
+ indirect calls; verify cgraph afterwards.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR bootstrap/40082
+ * ipa.c (update_inlined_to_pointer): New function.
+ (cgraph_remove_unreachable_nodes): Use it.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ * tree-eh.c (struct leh_state): Remove prev_try.
+ (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
+ not track prev_try.
+ * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
+ copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
+ remove_eh_handler_and_replace, foreach_reachable_handler,
+ verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
+ * except.h (struct eh_region): Remove eh_region_u_cleanup.
+ (gen_eh_region_cleanup): Update prototype.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40043
+ * except.c (copy_eh_region): Always set prev_try.
+ (redirect_eh_edge_to_label): Find outer try.
+ (foreach_reachable_handler): When looking for prev try
+ handle case where previous try is not going to be taken.
+
+2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR tree-optimization/40049
+ * tree-vect-stmts.c (vectorizable_operation): If the machine has
+ only vector/vector shifts, convert the type of the constant to the
+ appropriate type to avoid building incorrect trees, which
+ eventually have problems with garbage collection.
+
+2009-05-08 Joseph Myers <joseph@codesourcery.com>
+
+ * fold-const.c (fold_binary): Do not fold multiplication by 1 or
+ -1 for complex floating-point types if honoring signed zeros.
+
+2009-05-08 Jan Hubicka <jh@suse.cz>
+
+ * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
+ argument; handle correctly when profile is absent.
+ (build_cgraph_edges): Update.
+ (rebuild_cgraph_edges): Update.
+ * cgraph.c: Do not include varray.h.
+ (cgraph_set_call_stmt_including_clones): New function.
+ (cgraph_create_edge_including_clones): Likewise
+ (cgraph_update_edges_for_call_stmt_node): New static cfunction.
+ (cgraph_update_edges_for_call_stmt): Handle clones.
+ (cgraph_remove_node): Handle clone tree.
+ (cgraph_remove_node_and_inline_clones): New function.
+ (dump_cgraph_node): Dump clone tree.
+ (cgraph_clone_node): Handle clone tree.
+ (clone_function_name): Bring here from tree-inline.c.
+ (cgraph_create_virtual_clone): New function.
+ * cgraph.h (ipa_replace_map): Move here from ipa.h.
+ (cgraph_clone_info): New function.
+ (strut cgraph_node): Add clone_info and new clone tree pointers.
+ (cgraph_remove_node_and_inline_clones,
+ cgraph_set_call_stmt_including_clones,
+ cgraph_create_edge_including_clones,
+ cgraph_create_virtual_clone): Declare.
+ (cgraph_function_versioning): Use VEC argument.
+ (compute_call_stmt_bb_frequency): Update prototype.
+ (cgraph_materialize_all_clones): New function.
+ * ipa-cp.c (ipcp_update_cloned_node): Remove.
+ (ipcp_create_replace_map): Update to VECtors.
+ (ipcp_update_callgraph): Use virtual clones.
+ (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
+ (ipcp_update_profiling): Do not update local profiling.
+ (ipcp_insert_stage): Use VECtors and virtual clones.
+ * cgraphunit.c (verify_cgraph_node): Verify clone tree.
+ (clone_of_p): New function.
+ (cgraph_preserve_function_body_p): Use clone tree.
+ (cgraph_optimize): Materialize clones.
+ (cgraph_function_versioning): Update for VECtors.
+ (save_inline_function_body): Use clone tree.
+ (cgraph_materialize_clone): New function.
+ (cgraph_materialize_all_clones): Likewise.
+ * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
+ * ipa.c: Include gimple.h.
+ (cgraph_remove_unreachable_nodes): Use clone tree.
+ * ipa-prop.c (ipa_note_param_call): Update call to
+ compute_call_stmt_bb_frequencycall.
+ * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
+ * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
+ (copy_bb): Handle updating of clone tree; add new edge when new call
+ appears.
+ (expand_call_inline): Be strict about every call having edge.
+ (clone_fn_id_num, clone_function_name): Move to cgraph.c.
+ (delete_unreachable_blocks_update_callgraph): New function.
+ (tree_function_versioning): Use VECtors; always remove unreachable
+ blocks and fold conditionals.
+ * tree-inline.h: Do not include varray.h.
+ (tree_function_versioning): Remove.
+ * Makefile.in (GTFILES): Remove tree-inline.c
+ * passes.c (do_per_function): Do only functions having body.
+ * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
+ tree.
+
+2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
+ Andrew Morrow <acm@google.com>
+
+ PR c/36892
+ * c-common.c (c_common_attribute_table): Permit deprecated
+ attribute to take an optional argument.
+ (handle_deprecated_attribute): If the optional argument to
+ __attribute__((deprecated)) is not a string ignore the attribute
+ and emit a warning.
+
+ * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
+ * c-typeck.c (build_component_ref): Likewise.
+ (build_external_ref): Likewise.
+
+ * toplev.c (warn_deprecated_use): Add an attribute argument.
+ Emit the message associated with __attribute__((deprecated)).
+
+ * toplev.h (warn_deprecated_use): Updated.
+
+ * doc/extend.texi: Document new optional parameter to
+ __attribute__((deprecated))
+
+2009-05-08 Michael Eager <eager@eagercon.com>
+
+ * config/rs6000/rs6000.md (*movdf_softfloat32): replace
+ !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
+
+2009-05-08 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40062
+ * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
+ Avoid exponential behavior.
+
+2009-05-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR rtl-optimization/33928
+ PR 26854
+ * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
+ process_uses, build_single_def_use_links): New.
+ (update_df): Update use_def_ref.
+ (forward_propagate_into): Use get_def_for_use instead of use-def
+ chains.
+ (fwprop_init): Call build_single_def_use_links and let it initialize
+ dataflow.
+ (fwprop_done): Free use_def_ref.
+ (fwprop_addr): Eliminate duplicate call to df_set_flags.
+ * df-problems.c (df_rd_simulate_artificial_defs_at_top,
+ df_rd_simulate_one_insn): New.
+ (df_rd_bb_local_compute_process_def): Update head comment.
+ (df_chain_create_bb): Use the new RD simulation functions.
+ * df.h (df_rd_simulate_artificial_defs_at_top,
+ df_rd_simulate_one_insn): New.
+ * opts.c (decode_options): Enable fwprop at -O1.
+ * doc/invoke.texi (-fforward-propagate): Document this.
+
+2009-05-08 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/24581
+ * c-typeck.c (build_binary_op): Handle arithmetic between one real
+ and one complex operand specially.
+ * tree-complex.c (some_nonzerop): Do not identify a real value as
+ zero if flag_signed_zeros.
+
+2009-05-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR rtl-optimization/33928
+ * loop-invariant.c (record_use): Fix && vs. || mishap.
+
+2009-05-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR rtl-optimization/33928
+ * loop-invariant.c (struct use): Add addr_use_p.
+ (struct def): Add n_addr_uses.
+ (struct invariant): Add cheap_address.
+ (create_new_invariant): Set cheap_address.
+ (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
+ (record_uses): Pass df_ref to record_use.
+ (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
+ used only as such.
+
+2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c: Do not include c-pragma.h.
+
+2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ * config/spu/spu.c: Remove include of c-common.h.
+
+2009-05-07 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/39037
+ * c-common.h (mark_valid_location_for_stdc_pragma,
+ valid_location_for_stdc_pragma_p, set_float_const_decimal64,
+ clear_float_const_decimal64, float_const_decimal64_p): New.
+ * c.opt (Wunsuffixed-float-constants): New.
+ * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
+ unsuffixed float constant, handle new warning.
+ * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
+ * c-decl.c (c_scope): New flag float_const_decimal64.
+ (set_float_const_decimal64, clear_float_const_decimal64,
+ float_const_decimal64_p): New.
+ (push_scope): Set new flag.
+ * c-parser.c (c_parser_translation_unit): Mark when it's valid
+ to use STDC pragmas.
+ (c_parser_external_declaration): Ditto.
+ (c_parser_compound_statement_nostart): Ditto.
+ * c-pragma.c (valid_location_for_stdc_pragma,
+ mark_valid_location_for_stdc_pragma,
+ valid_location_for_stdc_pragma_p, handle_stdc_pragma,
+ handle_pragma_float_const_decimal64): New.
+ (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
+ * cp/semantics.c (valid_location_for_stdc_pragma_p,
+ set_float_const_decimal64, clear_float_const_decimal64,
+ float_const_decimal64_p): New dummy functions.
+ * doc/extend.texi (Decimal Float): Remove statement that the
+ pragma, and suffix for double constants, are not supported.
+ * doc/invoke.texi (Warning Options): List new option.
+ (-Wunsuffixed-float-constants): New.
+
+2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * config/i386/i386.c: Do not include c-common.h.
+
+2009-05-07 Mark Heffernan <meheff@google.com>
+
+ * doc/invoke.texi (Debugging Options): Document change of debugging
+ dump location.
+ * opts.c (decode_options): Make dump_base_name relative to
+ aux_base_name directory.
+
+2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
+
+ * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
+ * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
+
+2009-05-07 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.in (install-plugin): Simplify a bit.
+
+2009-05-07 Paolo Bonzini <bonzini@gnu.org>
+
+ * Makefile.in (OBJS-common): Add regcprop.o.
+ (regcprop.o): New.
+ * timevar.def (TV_CPROP_REGISTERS): New.
+ * regrename.c (regrename_optimize): Return 0.
+ (rest_of_handle_regrename): Delete.
+ (pass_rename_registers): Point to regrename_optimize.
+ (struct value_data_entry, struct value_data,
+ kill_value_one_regno, kill_value_regno, kill_value,
+ set_value_regno, init_value_data, kill_clobbered_value,
+ kill_set_value, kill_autoinc_value, copy_value,
+ mode_change_ok, maybe_mode_change, find_oldest_value_reg,
+ replace_oldest_value_reg, replace_oldest_value_addr,
+ replace_oldest_value_mem, copyprop_hardreg_forward_1,
+ debug_value_data, validate_value_data): Move...
+ * regcprop.c: ... here.
+ (rest_of_handle_cprop): Delete.
+ (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
+
+2009-05-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40057
+ * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
+ GEN_INT for 1 << bitnum.
+ (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
+ build_int_cst_type.
+
+2009-05-07 Uros Bizjak <ubizjak@gmail.com>
+
+ * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
+ Remove wrong description of "nand" operation.
+
+2009-05-06 Richard Guenther <rguenther@suse.de>
+ Adam Nemet <anemet@caviumnetworks.com>
+
+ * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
+ comment. Add that if LHS is not a gimple register, then RHS1 has
+ to be a single object (GIMPLE_SINGLE_RHS).
+
+2009-05-06 Adam Nemet <anemet@caviumnetworks.com>
+
+ * expr.c (get_def_for_expr): Move it up in the file.
+ (store_field): When expanding a bit-field store, look at the
+ defining gimple stmt for the masking conversion.
+
+2009-05-06 Janis Johnson <janis187@us.ibm.com>
+
+ PR middle-end/39986
+ * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
+ decode_decimal64, encode_decimal128, decode_decimal128): Avoid
+ 32-bit memcpy into long.
+
+2009-05-06 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
+ (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
+ new_reg_loc_descr.
+ (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
+ instead of appending DW_OP_deref*.
+
+2009-05-06 Michael Matz <matz@suse.de>
+
+ PR middle-end/40021
+ * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
+ (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
+
+2009-05-06 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.in (install-plugin): Fix srcdir handling.
+
+2009-05-06 Andrey Belevantsev <abel@ispras.ru>
+
+ * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
+ when processing for not_regs_needed bitmap.
+ * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
+ handle TARGET_MEM_REF in lhs. Check TMR_BASE for NULL while
+ handling it for rhs.
+
+2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.md (unnamed inc/dec peephole): Use
+ optimize_insn_for_size_p instead of optimize_size.
+ * config/i386/predicates.md (incdec_operand): Likewise.
+ (aligned_operand): Likewise.
+ * config/i386/sse.md (divv8sf3): Likewise.
+ (sqrtv8sf2): Likewise.
+
+2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
+
+ * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
+
+2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
+ ssemodesuffixf2c with avxmodesuffixf2c.
+
+2009-05-06 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/40032
+ * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
+
+2009-05-05 Jakub Jelinek <jakub@redhat.com>
+
+ * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
+ (struct tree_base): Adjust spacing for 8 bit boundaries.
+ (struct tree_decl_common): Add decl_by_reference_flag bit.
+ (DECL_BY_REFERENCE): Adjust.
+ * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
+ print DECL_BY_REFERENCE bit.
+ * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
+ * dwarf2out.c (loc_by_reference, gen_decl_die): Check
+ DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
+ (gen_variable_die): Likewise. Check TREE_PRIVATE/TREE_PROTECTED
+ unconditionally.
+
+ PR middle-end/39666
+ * gimplify.c (gimplify_switch_expr): If case labels cover the whole
+ range of the type, but default label is missing, add it with one
+ of the existing labels instead of adding a new label for it.
+
+2009-05-05 Joseph Myers <joseph@codesourcery.com>
+
+ * dwarf.h: Remove.
+
+2009-05-05 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.in (enable_plugin, plugin_includedir): New.
+ (install): Depend on install-plugin.
+ (PLUGIN_HEADERS): New.
+ (install-plugin): New.
+ * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
+
+2009-05-05 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40022
+ * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
+ the only vuse.
+ (phivn_valid_p): Fix tuplification error, simplify.
+ (phiprop_insert_phi): Add dumps.
+ (propagate_with_phi): Simplify.
+
+2009-05-05 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/40023
+ * builtins.c (gimplify_va_arg_expr): Properly build the address.
+
+2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
+
+ * tree.h (strip_float_extensions): Remove duplicate declaration.
+ (build_low_bits_mask, debug_fold_checksum, expand_function_end,
+ expand_function_start, stack_protect_prologue, stack_protect_epilogue,
+ block_ultimate_origin): Rearrange the declarations line to match the
+ comment that indicates the .c file which the functions are defined.
+ (dwarf2out_*, set_decl_rtl): Add comment.
+ (get_base_address): Adjust comment.
+ (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
+ declarations line and add comment.
+ (is_builtin_name): Add blank after function name, for clarity.
+
+2009-05-04 Joseph Myers <joseph@codesourcery.com>
+
+ * attribs.c (decl_attributes): Use %qE for identifiers in
+ diagnostics.
+ * cgraphunit.c (verify_cgraph_node): Translate function names to
+ locale character set in diagnostics.
+ * coverage.c (get_coverage_counts): Use %qE for identifiers in
+ diagnostics.
+ * doc/invoke.texi (-finstrument-functions-exclude-function-list):
+ Document that functions are named in UTF-8.
+ * expr.c (expand_expr_real_1): Translate function names to locale
+ character set in diagnostics.
+ * gimplify.c (omp_notice_variable, omp_is_private,
+ gimplify_scan_omp_clauses): Use %qE for identifiers in
+ diagnostics.
+ * langhooks.c (lhd_print_error_function): Translate function names
+ to locale character set.
+ * langhooks.h (decl_printable_name): Document that return value is
+ in internal character set.
+ * stmt.c: Include pretty-print.h
+ (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
+ diagnostics.
+ (resolve_operand_name_1): Translate named operand name to locale
+ character set.
+ * stor-layout.c (finalize_record_size): Use %qE for identifiers in
+ diagnostics.
+ * toplev.c (announce_function): Translate function names to locale
+ character set.
+ (warn_deprecated_use): Use %qE for identifiers in diagnostics.
+ (default_tree_printer): Use pp_identifier or translate identifiers
+ to locale character set. Mark "<anonymous>" for translation.
+ * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
+ for identifiers in diagnostics.
+ * tree.c (handle_dll_attribute): Use %qE for identifiers in
+ diagnostics.
+ * varasm.c (output_constructor): Use %qE for identifiers in
+ diagnostics.
+
+2009-05-04 Rafael Avila de Espindola <espindola@google.com>
+
+ * configure.ac: use ` ` instead of $()
+ * configure: Regenerate.
+
+2009-05-05 Ben Elliston <bje@au.ibm.com>
+
+ * config/pa/linux-atomic.c: Eliminate conditional include of
+ errno.h on non-LP64 systems to simplify build requirements.
+
+2009-05-04 Joseph Myers <joseph@codesourcery.com>
+
+ * c-common.c (handle_mode_attribute): Use %qE for identifiers in
+ diagnostics.
+ * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
+ and pass value to identifier_to_locale.
+ (warn_variable_length_array): Make name a tree.
+ (grokdeclarator): Separate diagnostic texts for named and unnamed
+ declarators. Use %qE for named declarators.
+ * c-parser.c (c_lex_one_token): Use %qE for identifiers in
+ diagnostics.
+ * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
+ identifiers in diagnostics.
+ * c-typeck.c (push_member_name, start_init): Pass identifiers to
+ identifier_to_locale. Mark "anonymous" strings for translation.
+
+2009-05-04 Michael Eager <eager@eagercon.com>
+
+ * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
+ address for DImode/DFmode only if double-precision FP regs.
+
+2009-05-04 Michael Eager <eager@eagercon.com>
+
+ * config/rs6000/rs6000.c (rs6000_libcall_value): Add
+ TARGET_SINGLE_FLOAT check.
+
+2009-05-04 Michael Eager <eager@eagercon.com>
+
+ * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
+
+2009-05-04 Michael Eager <eager@eagercon.com>
+
+ * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
+ * config/rs6000/t-xilinx: New
+
2009-05-04 Paolo Bonzini <bonzini@gnu.org>
- * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
+ * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
* gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
* gcc/explow.c (memory_address): Use target hook.
* gcc/targhooks.c (default_legitimize_address): New.
* config/bfin/bfin-protos.h (legitimize_address): Remove.
* config/bfin/bfin.c (legitimize_address): Remove.
* config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
- * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address): Remove.
+ * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
+ Remove.
* config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
* config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
* gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
* gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
* gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
- * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address): Delete.
- * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address): Delete.
+ * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
+ Delete.
+ * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
+ Delete.
* config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
* config/m32c/m32c.c (m32c_legitimize_address): Standardize.
(pp_base_tree_identifier): Declare as function.
(identifier_to_locale): Declare.
* Makefile.in (pretty-print.o): Update dependencies.
- * varasm.c (finish_aliases_1): Use %qE for identifiers in
- diagnostics.
+ * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
2009-05-04 Richard Guenther <rguenther@suse.de>
* tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
parameter; update callers.
- (coalesce_cost_edge): EH edges are costier because they needs splitting
- even if not critical and even more costier when there are multiple
- EH predecestors.
+ (coalesce_cost_edge): EH edges are costier because they needs
+ splitting even if not critical and even more costier when there are
+ multiple EH predecestors.
2009-05-02 Jan Hubicka <jh@suse.cz>
(ldst_entry): Rename to st_expr_entry, update users.
(free_ldst_entry): Rename to free_st_expr_entry, update users.
(free_ldst_mems): Rename to free_store_motion_mems, update users.
- (enumerate_ldsts): Rename to enumerate_store_motion_mems, update caller.
+ (enumerate_ldsts): Rename to enumerate_store_motion_mems,
+ update caller.
(first_ls_expr): Rename to first_st_expr, update users.
(next_ls_expr): Rename to next_st_expr, update users.
(print_ldst_list): Rename to print_store_motion_mems. Print names of
2009-04-30 Paul Pluzhnikov <ppluzhnikov@google.com>
Roland McGrath <roland@redhat.com>
- * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id
- support.
+ * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
(ENABLE_LD_BUILDID): New configuration option.
* gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
(LINK_BUILDID_SPEC): New macro.
* config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
(FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
(INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
- * config/avr/avr-protos.h (initial_elimination_offset) : Rename to
+ * config/avr/avr-protos.h (initial_elimination_offset): Rename to
avr_initial_elimination_offset.
(frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
(avr_initial_elimination_offset): Define.
2009-04-29 Eric Botcazou <ebotcazou@adacore.com>
- Steven Bosscher <steven@gcc.gnu.org>
+ Steven Bosscher <steven@gcc.gnu.org>
PR rtl-optimization/39938
* Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
(bfin_cpus): Add WA_LOAD_LCREGS as needed.
(struct loop_info): Remove members INIT and LOOP_INIT.
(bfin_optimize_loop): Don't set them. Reorder the code that generates
- the LSETUP sequence. Allow LC to be loaded from any register, but also
- add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
+ the LSETUP sequence. Allow LC to be loaded from any register, but
+ also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
(bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
set to 1.
* config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
of reload_completed.
+
From Jie Zhang:
* config/bfin/bfin.md (movsi_insn): Refine constraints.
* config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
problematic last insns. Test for TYPE_CALL rather than CALL_P.
- Remove special case testing for last insn of inner loops. Don't fail if
- the loop ends with a jump, emit an extra nop instead.
+ Remove special case testing for last insn of inner loops. Don't fail
+ if the loop ends with a jump, emit an extra nop instead.
* config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
DREGS rather than comparing directly. Remove code that tries to
* config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
(ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
- ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3, ssubhi3,
- ssaddhi3_parts and sssubhi3_parts.
+ ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
+ ssubhi3, ssaddhi3_parts and sssubhi3_parts.
(flag_mulhi3_parts): Produce a HImode output rather than trying to set
a VEC_SELECT.
- * config/bfin/bfin.c (bfin_expand_builtin, case BFIN_BUILTIN_CPLX_SQU):
- Adjust accordingly.
+ * config/bfin/bfin.c (bfin_expand_builtin,
+ case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
2009-04-28 Richard Guenther <rguenther@suse.de>
(vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
instead REPORT_UNVECTORIZED_LOOPS.
- * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def and
- vect_loop_def to vect_external_def and vect_internal_def.
+ * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
+ and vect_loop_def to vect_external_def and vect_internal_def.
(enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
REPORT_UNVECTORIZED_LOCATIONS.
vect_analyze_operations.
(vect_is_simple_reduction): Use new names.
(vectorizable_live_operation, vect_transform_loop): Likewise.
- * tree-vect-data-refs.c (vect_check_interleaving): Add a return value to
- specify whether the data references can be a part of interleaving chain.
+ * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
+ to specify whether the data references can be a part of interleaving
+ chain.
(vect_analyze_data_ref_dependence): Use new names.
(vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
(vect_create_addr_base_for_vector_ref): Remove redundant code.
* config/picochip/picochip.md (lea_add): Allow any nonimmediate
in the lea_add. Reload eventually constraints it properly.
- * config/picochip/constraints.md : Remove the target constraint
+ * config/picochip/constraints.md: Remove the target constraint
"b", since it is not needed anymore.
2009-02-16 Jakub Jelinek <jakub@redhat.com>