1. 11 May, 2010 1 commit
    • re PR middle-end/44071 (ICE with asm goto and __builtin_unreachable()) · 3b5fda81
      	PR middle-end/44071
      	* cfglayout.c (fixup_reorder_chain): Allow asm goto to have
      	no fallthru edge.
      	* cfgcleanup.c (try_optimize_cfg): When in cfglayout mode
      	optimizing away empty bb with no successors, move over its
      	footer chain to fallthru predecessor.
      	* cfgrtl.c (patch_jump_insn): Update also REG_LABEL_OPERAND.
      	(rtl_split_edge): For asm goto call patch_jump_insn even if
      	splitting fallthru edge.
      
      	* c-c++-common/asmgoto-4.c: New test.
      	* gcc.target/i386/pr44071.c: New test.
      
      From-SVN: r159288
      Jakub Jelinek committed
  2. 03 May, 2010 1 commit
    • tm.texi (defmac SMALL_REGISTER_CLASSES): Remove. · 42db504c
      	* doc/tm.texi (defmac SMALL_REGISTER_CLASSES): Remove.
      	(TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P): Add documentation,
      	based on the above, for new target hook.
      
      	* hooks.c (hook_bool_mode_true): New generic hook.
      	* hooks.h (hook_bool_mode_true): Add prototype.
      
      	* target.h (struct gcc_target): Add small_register_classes_for_mode_p
      	target hook.
      	* target-def.h (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P): New default
      	target hook, set to hook_bool_mode_false.
      	* regs.h: Remove default definition of SMALL_REGISTER_CLASSES.
      	* reload.c (push_secondary_reload): Replace SMALL_REGISTER_CLASSES
      	with targetm.small_register_classes_for_mode_p.
      	(find_reusable_reload): Likewise.
      	(combine_reloads): Likewise.
      	* reload1.c (reload_as_needed): Likewise.
      	* cse.c (approx_reg_cost_1, hash_rtx_cb): Likewise.
      	* ifcvt.c (noce_process_if_block, check_cond_move_block,
      	dead_or_predicable): Likewise.
      	* regmove.c (optimize_reg_copy_1): Likewise.
      	* calls.c (prepare_call_address): Likewise.
      	(precompute_register_parameters): Likewise.
      
      	* config/sh/sh.h: Replace SMALL_REGISTER_CLASSES with new target
      	hook definition.
      	* config/sh/sh.c (sh_small_register_classes_for_mode_p): Add
      	implementation of the hook that considers all register classes
      	small except for SH64.
      	(sh_override_options): Use the new hook.
      	* config/sh/sh-protos.h (sh_small_register_classes_for_mode_p):
      	Add prototype.
      
      	* config/arm/arm.h: Replace SMALL_REGISTER_CLASSES with new target
      	hook definition.
      	* config/arm/arm.c (arm_small_register_classes_for_mode_p): Add
      	implementation of the hook that considers all register classes
      	small for THUMB1.
      	* config/arm/arm-protos.h (arm_small_register_classes_for_mode_p):
      	Add prototype.
      
      	* config/mips/mips.h: Replace SMALL_REGISTER_CLASSES with new target
      	hook definition.
      	* config/mips/mips.c (mips_small_register_classes_for_mode_p): Add
      	implementation of the hook that considers all register classes
      	small for MIPS16.
      	* config/mips/mips-protos.h (mips_small_register_classes_for_mode_p):
      	Add prototype.
      
      	* config/i386/i386.h: Replace SMALL_REGISTER_CLASSES with new target
      	hook definition.
      	* config/m32c/m32c.h: Likewise.
      	* config/pdp11/pdp11.h: Likewise.
      	* config/avr/avr.h: Likewise.
      	* config/xtensa/xtensa.h: Likewise.
      	* config/m68hc11/m68hc11.h: Likewise.
      	* config/mn10300/mn10300.h: Likewise.
      	* config/mcore/mcore.h: Likewise.
      	* config/h8300/h8300.h: Likewise.
      	* config/bfin/bfin.h: Likewise.
      
      	* config/iq2000/iq2000.h: Remove SMALL_REGISTER_CLASSES definition.
      	* config/rx/rx.h: Remove SMALL_REGISTER_CLASSES definition.
      
      From-SVN: r158997
      Steven Bosscher committed
  3. 19 Feb, 2010 1 commit
    • re PR middle-end/42233 (c++ builtin_expect code generation regression) · 40e90eac
      	PR middle-end/42233
      	* expr.h (jumpifnot, jumpifnot_1, jumpif, jumpif_1, do_jump,
      	do_jump_1, do_compare_rtx_and_jump): Add PROB argument.
      	* dojump.c: Include output.h.
      	(inv): New inline function.
      	(jumpifnot, jumpifnot_1, jumpif, jumpif_1, do_jump_1, do_jump,
      	do_jump_by_parts_greater_rtx, do_jump_by_parts_greater,
      	do_jump_by_parts_zero_rtx, do_jump_by_parts_equality_rtx,
      	do_jump_by_parts_equality, do_compare_and_jump): Add PROB
      	argument, pass it down to other calls.
      	(do_compare_rtx_and_jump): Likewise.  If PROB is not -1,
      	add REG_BR_PROB note to the conditional jump.
      	* cfgexpand.c (add_reg_br_prob_note): Removed.
      	(expand_gimple_cond): Don't call it, add the probability
      	as last argument to jumpif_1/jumpifnot_1.
      	* Makefile.in (dojump.o): Depend on output.h.
      	* builtins.c (expand_errno_check): Adjust do_compare_rtx_and_jump
      	callers.
      	* expmed.c (emit_store_flag_force, do_cmp_and_jump): Likewise.
      	* stmt.c (do_jump_if_equal): Likewise.
      	* cfgrtl.c (rtl_lv_add_condition_to_bb): Likewise.
      	* loop-unswitch.c (compare_and_jump_seq): Likewise.
      	* config/rs6000/rs6000.c (rs6000_aix_emit_builtin_unwind_init):
      	Likewise.
      	* optabs.c (expand_doubleword_shift, expand_abs): Likewise.
      	* expr.c (expand_expr_real_1): Adjust do_jump, jumpifnot and
      	jumpifnot_1 callers.
      	(expand_expr_real_2): Adjust jumpifnot_1 and do_compare_rtx_and_jump
      	callers.
      	(store_expr): Adjust jumpifnot caller.
      	(store_constructor): Adjust jumpif caller.
      
      From-SVN: r156889
      Jakub Jelinek committed
  4. 25 Nov, 2009 1 commit
    • Remove trailing white spaces. · b8698a0f
      2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* 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.
      
      From-SVN: r154645
      H.J. Lu committed
  5. 24 Nov, 2009 2 commits
  6. 08 Nov, 2009 1 commit
    • cfgrtl.c (pass_free_cfg): Add pass name. · e0a42b0f
              * 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.
      
      Co-Authored-By: Joern Rennecke <amylaar@spamcop.net>
      
      From-SVN: r154013
      Zbigniew Chamski committed
  7. 14 Sep, 2009 2 commits
    • builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec. · 1c384bf1
      	* 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.
      	* rtl.h (ASM_OPERANDS_LABEL_VEC): New.
      	(ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
      	(ASM_OPERANDS_SOURCE_LOCATION): Renumber.
      	(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.
      
      gcc/ada/
      	* gcc-interface/trans.c (Pragma_to_gnu): Use build5 for ASM_EXPR.
      
      gcc/cp/
      	* cp-tree.h (finish_asm_stmt): Update decl.
      	* parser.c (cp_parser_asm_definition): Parse asm goto.
      	(cp_parser_asm_label_list): New.
      	* pt.c (tsubst_copy_asm_operands): Don't recurse on labels.
      	(tsubst_expr): Handle asm labels.
      	* semantics.c (finish_asm_stmt): Add and use labels parameter.
      
      gcc/testsuite/
      	* c-c++-common/asmgoto-1.c, c-c++-common/asmgoto-2.c,
      	c-c++-common/asmgoto-3.c, gcc.c-torture/compile/asmgoto-1.c,
      	gcc.dg/tree-ssa/asmgoto-1.c: New files.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r151701
      Richard Henderson committed
    • Squash commit of EH in gimple · 1d65f45c
      From-SVN: r151696
      Richard Henderson committed
  8. 02 Sep, 2009 1 commit
    • invoke.texi (-fvar-tracking-assignments): New. · b5b8b0ac
      gcc/ChangeLog:
      * 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
      -fcompare-debug-second.
      * 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
      -fdump-final-insns=..
      (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
      stmts.
      (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.
      (DEBUG_INSN): New.
      * 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,
      MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
      discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
      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 <jakub@redhat.com>:
      (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
      HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
      (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
      val_const_double.
      (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
      DW_OP_stack_value.
      (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
      EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
      UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
      (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
      instead of Pmode size.
      (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
      CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
      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
      NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
      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.
      (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): 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
      dominators.
      * 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
      insns.
      (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.
      (NONDEBUG_INSN_P): New.
      (MAY_HAVE_DEBUG_INSNS): New.
      (INSN_P): Accept debug insns.
      (RTX_FRAME_RELATED_P): Likewise.
      (INSN_DELETED_P): Likewise
      (PAT_VAR_LOCATION_DECL): New.
      (PAT_VAR_LOCATION_LOC): New.
      (PAT_VAR_OCATION_STATUS): New.
      (NOTE_VAR_LOCATION_DECL): Reimplement.
      (NOTE_VAR_LOCATION_LOC): Likewise.
      (NOTE_VAR_LOCATION_STATUS): Likewise.
      (INSN_VAR_LOCATION): New.
      (INSN_VAR_LOCATION_DECL): New.
      (INSN_VAR_LOCATION_LOC): New.
      (INSN_VAR_LOCATION_STATUS): New.
      (gen_rtx_UNKNOWN_VAR_LOC): New.
      (VAR_LOC_UNKNOWN_P): New.
      (NOTE_DURING_CALL_P): 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.
      (DEBUG_INSN_SCHED_P): New.
      (BOUNDARY_DEBUG_INSN_P): New.
      (SCHEDULE_DEBUG_INSN_P): New.
      (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
      MO_VAL_SET.
      (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.
      (IS_DECL_CODE): 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.
      (VALUED_RECURSED_INTO): New.
      (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.
      (VAL_NEEDS_RESOLUTION): New.
      (VAL_HOLDS_TRACK_EXPR): New.
      (VAL_EXPR_IS_COPIED): New.
      (VAL_EXPR_IS_CLOBBERED): 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_NOTE_AFTER_CALL_INSN.
      (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
      cselib.
      (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 <jakub@redhat.com>:
      (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.
      (VALUE_CHANGED, DECL_CHANGED): Define.
      (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.
      * Makefile.in (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.
      gcc/testsuite/ChangeLog:
      * gcc.dg/guality/guality.c: New.
      * gcc.dg/guality/guality.h: New.
      * gcc.dg/guality/guality.exp: New.
      * gcc.dg/guality/example.c: New.
      * lib/gcc-dg.exp (cleanup-dump): Remove .gk files.
      (cleanup-saved-temps): Likewise, .gkd files too.
      gcc/cp/ChangeLog:
      * cp-tree.h (TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS): New.
      * cp-lang.c (cxx_dwarf_name): Pass it.
      * error.c (count_non_default_template_args): Take flags as
      argument.  Adjust all callers.  Skip counting of default
      arguments if the new flag is given.
      ChangeLog:
      * Makefile.tpl (BUILD_CONFIG): Default to bootstrap-debug.
      * Makefile.in: Rebuilt.
      contrib/ChangeLog:
      * compare-debug: Look for .gkd files and compare them.
      config/ChangeLog:
      * bootstrap-debug.mk: Add comments.
      * bootstrap-debug-big.mk: New.
      * bootstrap-debug-lean.mk: New.
      * bootstrap-debug-ckovw.mk: Add comments.
      * bootstrap-debug-lib.mk: Drop CFLAGS for stages.  Use -g0
      for TFLAGS in stage1.  Drop -fvar-tracking-assignments-toggle.
      
      From-SVN: r151312
      Alexandre Oliva committed
  9. 25 Jul, 2009 1 commit
    • re PR rtl-optimization/40445 (g++ void f() { __builtin_unreachable(); }) · 1e211590
      2009-07-25  David Daney  <ddaney@caviumnetworks.com>
      
      	PR rtl-optimization/40445
      	* emit-rtl.c (next_nonnote_insn_bb): New function.
      	* rtl.h (next_nonnote_insn_bb): Declare new function.
      	* cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
      	with no successors that is the successor of the ENTRY_BLOCK.
      	Continue from the top after removing an empty fallthrough block.
      	* cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
      	of next_nonnote_insn.
      
      2009-07-25  David Daney  <ddaney@caviumnetworks.com>
      
      	PR rtl-optimization/40445
      	* g++.dg/other/builtin-unreachable-1.C: New testcase.
      
      From-SVN: r150090
      David Daney committed
  10. 22 Jun, 2009 1 commit
    • alias.c: Use REG_P... · 481683e1
      2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
      
      	* alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
      	JUMP_TABLE_DATA_P predicates where applicable.
      	* auto-inc-dec.c: Ditto.
      	* builtins.c: Ditto.
      	* caller-save.c: Ditto.
      	* calls.c: Ditto.
      	* cfgcleanup.c: Ditto.
      	* cfglayout.c: Ditto.
      	* cfgrtl.c: Ditto.
      	* combine.c: Ditto.
      	* combine-stack-adj.c: Ditto.
      	* cse.c: Ditto.
      	* cselib.c: Ditto.
      	* dbxout.c: Ditto.
      	* df-scan.c: Ditto.
      	* dse.c: Ditto.
      	* dwarf2asm.c: Ditto.
      	* dwarf2out.c: Ditto.
      	* emit-rtl.c: Ditto.
      	* except.c: Ditto.
      	* explow.c: Ditto.
      	* expmed.c: Ditto.
      	* expr.c: Ditto.
      	* final.c: Ditto.
      	* function.c: Ditto.
      	* fwprop.c: Ditto.
      	* gcse.c: Ditto.
      	* genpreds.c: Ditto.
      	* genrecog.c: Ditto.
      	* ifcvt.c: Ditto.
      	* ira-costs.c: Ditto.
      	* ira-lives.c: Ditto.
      	* jump.c: Ditto.
      	* loop-iv.c: Ditto.
      	* lower-subreg.c: Ditto.
      	* modulo-sched.c: Ditto.
      	* optabs.c: Ditto.
      	* postreload.c: Ditto.
      	* print-rtl.c: Ditto.
      	* recog.c: Ditto.
      	* reginfo.c: Ditto.
      	* regmove.c: Ditto.
      	* reload1.c: Ditto.
      	* reload.c: Ditto.
      	* reorg.c: Ditto.
      	* rtlanal.c: Ditto.
      	* rtl.c: Ditto.
      	* sched-vis.c: Ditto.
      	* sdbout.c: Ditto.
      	* sel-sched-ir.c: Ditto.
      	* simplify-rtx.c: Ditto.
      	* targhooks.c: Ditto.
      	* var-tracking.c: Ditto.
      	* vmsdbgout.c: Ditto.
      
      From-SVN: r148786
      Shujing Zhao committed
  11. 11 Jun, 2009 1 commit
    • re PR c/39252 (Request new feature __builtin_unreachable ()) · 468059bc
      2009-06-11  David Daney  <ddaney@caviumnetworks.com>
      
      	PR c/39252
      	* doc/extend.texi ( __builtin_unreachable): Document new builtin.
      	* builtins.c (expand_builtin_unreachable): New function.
      	(expand_builtin): Handle BUILT_IN_UNREACHABLE case.
      	* builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
      	* cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
      	successors.
      	* cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
      	searching for missing barriers.
      
      2009-06-11  David Daney  <ddaney@caviumnetworks.com>
      
      	PR c/39252
      	* gcc.dg/builtin-unreachable-1.c: New test.
      	* gcc.dg/builtin-unreachable-2.c: Same.
      
      From-SVN: r148403
      David Daney committed
  12. 30 May, 2009 1 commit
    • cfgcleanup.c (try_crossjump_to_edge): Only skip past NOTE_INSN_BASIC_BLOCK. · cd9c1ca8
      	* cfgcleanup.c (try_crossjump_to_edge): Only skip past
      	NOTE_INSN_BASIC_BLOCK.
      	* cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
      	Duplicate NOTE_INSN_EPILOGUE_BEG notes.
      	* cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
      	to be deleted.
      	* dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
      	add in_use field.
      	(add_cfi): Disable check redefining cfa away from drap.
      	(lookup_cfa_1): Add remember argument; handle remember/restore.
      	(lookup_cfa): Pass remember argument.
      	(cfa_remember): New.
      	(compute_barrier_args_size_1): Remove sibcall check.
      	(dwarf2out_frame_debug_def_cfa): New.
      	(dwarf2out_frame_debug_adjust_cfa): New.
      	(dwarf2out_frame_debug_cfa_offset): New.
      	(dwarf2out_frame_debug_cfa_register): New.
      	(dwarf2out_frame_debug_cfa_restore): New.
      	(dwarf2out_frame_debug): Handle REG_CFA_* notes.
      	(dwarf2out_begin_epilogue): New.
      	(dwarf2out_frame_debug_restore_state): New.
      	(dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
      	DW_CFA_restore_state.
      	(output_cfi_directive): Likewise.
      	(convert_cfa_to_fb_loc_list): Likewise.
      	(dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
      	* dwarf2out.h: Update.
      	* emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
      	(copy_insn_1): Early out for null.
      	* final.c (final_scan_insn): Call dwarf2out_begin_epilogue
      	and dwarf2out_frame_debug_restore_state.
      	* function.c (prologue, epilogue, sibcall_epilogue): Remove.
      	(prologue_insn_hash, epilogue_insn_hash): New.
      	(free_after_compilation): Adjust freeing accordingly.
      	(record_insns): Create hash table if needed; push insns into
      	hash instead of array.
      	(maybe_copy_epilogue_insn): New.
      	(contains): Search hash table instead of array.
      	(sibcall_epilogue_contains): Remove.
      	(thread_prologue_and_epilogue_insns): Split eh_return insns
      	and mark them as epilogues.
      	(reposition_prologue_and_epilogue_notes): Rewrite epilogue
      	scanning in terms of basic blocks.
      	* insn-notes.def (CFA_RESTORE_STATE): New.
      	* jump.c (returnjump_p_1): Accept EH_RETURN.
      	(eh_returnjump_p_1, eh_returnjump_p): New.
      	* reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
      	CFA_REGISTER, CFA_RESTORE): New.
      	* rtl.def (EH_RETURN): New.
      	* rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
      
      	* config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
      	(eh_return_internal): Use eh_return rtx; split w/ epilogue.
      
      	* config/i386/i386.c (gen_push): Update cfa state.
      	(pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
      	add a CFA_ADJUST_CFA note.
      	(ix86_dwarf_handle_frame_unspec): Remove.
      	(ix86_expand_prologue): Update cfa state.
      	(ix86_emit_restore_reg_using_pop): New.
      	(ix86_emit_restore_regs_using_pop): New.
      	(ix86_emit_leave): New.
      	(ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
      	(ix86_expand_epilogue): Add notes for unwinding the epilogue.
      	* config/i386/i386.h (struct machine_cfa_state): New.
      	(ix86_cfa_state): New.
      	* config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
      	(eh_return_internal): Merge from eh_return_<mode>,
      	use eh_return rtx, split w/ epilogue.
      
      From-SVN: r147995
      Richard Henderson committed
  13. 29 Apr, 2009 1 commit
  14. 26 Apr, 2009 1 commit
    • Expand from SSA. · 4e3825db
      gcc/
              Expand from SSA.
      	* builtins.c (fold_builtin_next_arg): Handle SSA names.
      	* tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
      	* tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
      	SSA names. 
      	(compare_pairs): Swap cost comparison.
      	(coalesce_ssa_name): Don't use change_partition_var.
      	* tree-nrv.c (struct nrv_data): Add modified member.
      	(finalize_nrv_r): Set it.
      	(tree_nrv): Use it to update statements.
      	(pass_nrv): Require PROP_ssa.
      	* tree-mudflap.c (mf_decl_cache_locals,
      	mf_build_check_statement_for): Use make_rename_temp.
      	(pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
      	* alias.c (find_base_decl): Handle SSA names.
      	* emit-rtl (set_reg_attrs_for_parm): Make non-static.
      	(component_ref_for_mem_expr): Don't leak SSA names into RTL.
      	* rtl.h (set_reg_attrs_for_parm): Declare.
      	* tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
      	to "optimized", remove unused locals at finish.
      	(execute_free_datastructures): Make global, call
      	delete_tree_cfg_annotations.
      	(execute_free_cfg_annotations): Don't call
      	delete_tree_cfg_annotations.
      
      	* ssaexpand.h: New file.
      	* expr.c (toplevel): Include ssaexpand.h.
      	(expand_assignment): Handle SSA names the same as register
      	variables.
      	(expand_expr_real_1): Expand SSA names.
      	* cfgexpand.c (toplevel): Include ssaexpand.h.
      	(SA): New global variable.
      	(gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
      	(SSAVAR): New macro.
      	(set_rtl): New helper function.
      	(add_stack_var): Deal with SSA names, use set_rtl.
      	(expand_one_stack_var_at): Likewise.
      	(expand_one_stack_var): Deal with SSA names.
      	(stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
      	before unique numbers.
      	(expand_stack_vars): Use set_rtl.
      	(expand_one_var): Accept SSA names, add asserts for them, feed them
      	to above subroutines.
      	(expand_used_vars): Expand all partitions (without default defs),
      	then only the local decls (ignoring those expanded already).
      	(expand_gimple_cond): Remove edges when jumpif() expands an
      	unconditional jump.
      	(expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
      	or remove abnormal edges.  Ignore insns setting the LHS of a TERed
      	SSA name.
      	(gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
      	members of SA; deal with PARM_DECL partitions here; expand
      	all PHI nodes, free tree datastructures and SA.  Commit instructions
      	on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
      	(pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
      	info and statements at start, collect garbage at finish.
      	* tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
      	(VAR_ANN_PARTITION) Remove.
      	(change_partition_var): Don't declare.
      	(partition_to_var): Always return SSA names.
      	(var_to_partition): Only accept SSA names.
      	(register_ssa_partition): Only check argument.
      	* tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
      	member.
      	(delete_var_map): Don't free it.
      	(var_union): Only accept SSA names, simplify.
      	(partition_view_init): Mark only useful SSA names as used.
      	(partition_view_fini): Only deal with SSA names.
      	(change_partition_var): Remove.
      	(dump_var_map): Use ssa_name instead of partition_to_var member.
      	* tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
      	basic blocks.
      	* tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
      	(struct _elim_graph): New member const_dests; nodes member vector of
      	ints.
      	(set_location_for_edge): New static helper.
      	(create_temp): Remove.
      	(insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
      	insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New
      	functions.
      	(new_elim_graph): Allocate const_dests member.
      	(clean_elim_graph): Truncate const_dests member.
      	(delete_elim_graph): Free const_dests member.
      	(elim_graph_size): Adapt to new type of nodes member.
      	(elim_graph_add_node): Likewise.
      	(eliminate_name): Likewise.
      	(eliminate_build): Don't take basic block argument, deal only with
      	partition numbers, not variables.
      	(get_temp_reg): New static helper.
      	(elim_create): Use it, deal with RTL temporaries instead of trees.
      	(eliminate_phi): Adjust all calls to new signature.
      	(assign_vars, replace_use_variable, replace_def_variable): Remove.
      	(rewrite_trees): Only do checking.
      	(edge_leader, stmt_list, leader_has_match, leader_match): Remove.
      	(same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
      	init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
      	contains_tree_r, MAX_STMTS_IN_LATCH,
      	process_single_block_loop_latch, analyze_edges_for_bb,
      	perform_edge_inserts): Remove.
      	(expand_phi_nodes): New global function.
      	(remove_ssa_form): Take ssaexpand parameter.  Don't call removed
      	functions, initialize new parameter, remember partitions having a
      	default def.
      	(finish_out_of_ssa): New global function.
      	(rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
      	don't reset in_ssa_p here, don't disable TER when mudflap.
      	(pass_del_ssa): Remove.
      	* tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
      	partition members.
      	(execute_free_datastructures): Declare.
      	* Makefile.in (SSAEXPAND_H): New variable.
      	(tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
      	* basic-block.h (commit_one_edge_insertion): Declare.
      	* passes.c (init_optimization_passes): Move pass_nrv and
      	pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
      	pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
      	* cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
      	(redirect_branch_edge): Deal with super block when expanding, split
      	out jump patching itself into ...
      	(patch_jump_insn): ... here, new static helper.
      
      testsuite/
      
      	Expand from SSA.
      	* gcc.dg/tree-ssa/20030728-1.c: Use -rtl-expand-details dump and
      	change regexps.
      	* gcc.target/i386/pr37248-1.c: Modified.
      	* gcc.target/i386/pr37248-3.c: Modified.
      	* gcc.target/i386/pr37248-2.c: Modified.
      	* gnat.dg/aliasing1.adb: Modified.
      	* gnat.dg/pack9.adb: Modified.
      	* gnat.dg/aliasing2.adb: Modified.
      	* gcc.dg/strict-overflow-2.c: Modified.
      	* gcc.dg/autopar/reduc-1char.c: Modified.
      	* gcc.dg/autopar/reduc-2char.c: Modified.
      	* gcc.dg/autopar/reduc-1.c: Modified.
      	* gcc.dg/autopar/reduc-2.c: Modified.
      	* gcc.dg/autopar/reduc-3.c: Modified.
      	* gcc.dg/autopar/reduc-6.c: Modified.
      	* gcc.dg/autopar/reduc-7.c: Modified.
      	* gcc.dg/autopar/reduc-8.c: Modified.
      	* gcc.dg/autopar/reduc-9.c: Modified.
      	* gcc.dg/autopar/reduc-1short.c: Modified.
      	* gcc.dg/autopar/reduc-2short.c: Modified.
      	* gcc.dg/autopar/parallelization-1.c: Modified.
      	* gcc.dg/strict-overflow-4.c: Modified.
      	* gcc.dg/strict-overflow-6.c: Modified.
      	* gcc.dg/gomp/combined-1.c: Modified.
      	* gcc.dg/no-strict-overflow-1.c: Modified.
      	* gcc.dg/no-strict-overflow-3.c: Modified.
      	* gcc.dg/no-strict-overflow-5.c: Modified.
      	* gcc.dg/tree-ssa/reassoc-13.c: Modified.
      	* gcc.dg/tree-ssa/pr18134.c: Modified.
      	* gcc.dg/tree-ssa/20030824-1.c: Modified.
      	* gcc.dg/tree-ssa/vector-2.c: Modified.
      	* gcc.dg/tree-ssa/forwprop-9.c: Modified.
      	* gcc.dg/tree-ssa/loop-21.c: Modified.
      	* gcc.dg/tree-ssa/20030824-2.c: Modified.
      	* gcc.dg/tree-ssa/vector-3.c: Modified.
      	* gcc.dg/tree-ssa/asm-3.c: Modified.
      	* gcc.dg/tree-ssa/pr23294.c: Modified.
      	* gcc.dg/tree-ssa/loop-22.c: Modified.
      	* gcc.dg/tree-ssa/loop-15.c: Modified.
      	* gcc.dg/tree-ssa/prefetch-4.c: Modified.
      	* gcc.dg/tree-ssa/pr22051-1.c: Modified.
      	* gcc.dg/tree-ssa/pr20139.c: Modified.
      	* gcc.dg/tree-ssa/scev-cast.c: Modified.
      	* gcc.dg/tree-ssa/pr22051-2.c: Modified.
      	* gcc.dg/tree-ssa/reassoc-1.c: Modified.
      	* gcc.dg/tree-ssa/loop-5.c: Modified.
      	* gcc.dg/tree-ssa/pr19431.c: Modified.
      	* gcc.dg/tree-ssa/pr32044.c: Modified.
      	* gcc.dg/tree-ssa/prefetch-7.c: Modified.
      	* gcc.dg/tree-ssa/loop-19.c: Modified.
      	* gcc.dg/tree-ssa/loop-28.c: Modified.
      	* gcc.dg/tree-ssa/ssa-pre-15.c: Modified.
      	* gcc.dg/tree-ssa/divide-1.c: Modified.
      	* gcc.dg/tree-ssa/inline-1.c: Modified.
      	* gcc.dg/tree-ssa/divide-3.c: Modified.
      	* gcc.dg/tree-ssa/pr30978.c: Modified.
      	* gcc.dg/tree-ssa/alias-6.c: Modified.
      	* gcc.dg/tree-ssa/divide-4.c: Modified.
      	* gcc.dg/tree-ssa/alias-11.c: Modified.
      	* gcc.dg/no-strict-overflow-7.c: Modified.
      	* gcc.dg/strict-overflow-1.c: Modified.
      	* gcc.dg/pr15784-4.c: Modified.
      	* gcc.dg/pr34263.c: Modified.
      	* gcc.dg/strict-overflow-3.c: Modified.
      	* gcc.dg/tree-prof/stringop-1.c: Modified.
      	* gcc.dg/tree-prof/val-prof-1.c: Modified.
      	* gcc.dg/tree-prof/val-prof-2.c: Modified.
      	* gcc.dg/tree-prof/val-prof-3.c: Modified.
      	* gcc.dg/tree-prof/val-prof-4.c: Modified.
      	* gcc.dg/no-strict-overflow-2.c: Modified.
      	* gcc.dg/no-strict-overflow-4.c: Modified.
      	* gcc.dg/no-strict-overflow-6.c: Modified.
      	* g++.dg/tree-ssa/pr27090.C: Modified.
      	* g++.dg/tree-ssa/tmmti-2.C: Modified.
      	* g++.dg/tree-ssa/ptrmemfield.C: Modified.
      	* g++.dg/tree-ssa/pr19807.C: Modified.
      	* g++.dg/opt/pr30965.C: Modified.
      	* g++.dg/init/new17.C: Modified.
      	* gfortran.dg/whole_file_6.f90: Modified.
      	* gfortran.dg/whole_file_5.f90: Modified.
      	* gfortran.dg/reassoc_1.f90: Modified.
      	* gfortran.dg/reassoc_3.f90: Modified.
      
      From-SVN: r146817
      Michael Matz committed
  15. 17 Apr, 2009 1 commit
    • df.h: Include "timevar.h". · 7072a650
      	* df.h: Include "timevar.h".
      	(struct df_problem): Change tv_id field to timevar_id_t.
      	* tree-pass.h: Include "timevar.h".
      	(struct opt_pass): Change tv_id field to timevar_id_t.
      	* timevar.h (timevar_id_t): Define TV_NONE.
      	* passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
      	TV_NONE rather than tv_id != 0.
      	(execute_one_pass): Likewise.
      	* Makefile.in (DF_H): Add $(TIMEVAR_H).
      	(TREE_PASS_H): Define.  Change all instances of tree-pass.h in
      	dependencies to $(TREE_PASS_H).
      	* bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
      	to TV_NONE.
      	(pass_branch_target_load_optimize2): Likewise.
      	* cfglayout.c (pass_into_cfg_layout_mode): Likewise.
      	(pass_outof_cfg_layout_mode): Likewise.
      	* cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
      	(pass_rebuild_cgraph_edges): Likewise.
      	(pass_remove_cgraph_callee_edges): Likewise.
      	* df-core.c (pass_df_initialize_opt): Likewise.
      	(pass_df_initialize_no_opt): Likewise.
      	(pass_df_finish): Likewise.
      	* emit-rtl.c (pass_unshare_all_rtl): Likewise.
      	* except.c (pass_set_nothrow_function_flags): Likewise.
      	(pass_convert_to_eh_region_ranges): Likewise.
      	* final.c (pass_compute_alignments): Likewise.
      	* function.c (pass_instantiate_virtual_regs): Likewise.
      	(pass_init_function): Likewise.
      	(pass_leaf_regs): Likewise.
      	(pass_match_asm_constraints): Likewise.
      	* gimple-low.c (pass_lower_cf): Likewise.
      	(pass_mark_used_blocks): Likewise.
      	* init-regs.c (pass_initialize_regs): Likewise.
      	* integrate.c (pass_initial_value_sets): Likewise.
      	* ira.c (pass_ira): Likewise.
      	* jump.c (pass_cleanup_barriers): Likewise.
      	* omp-low.c (pass_expand_omp): Likewise.
      	(pass_lower_omp): Likewise.
      	* matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
      	* recog.c (pass_split_all_insns): Likewise.
      	(pass_split_after_reload): Likewise.
      	(pass_split_before_regstack): Likewise.
      	(pass_split_before_sched2): Likewise.
      	(pass_split_for_shorten_branches): Likewise.
      	* reginfo.c (pass_reginfo_init): Likewise.
      	(pass_subregs_of_mode_init): Likewise.
      	(pass_subregs_of_mode_finish): Likewise.
      	* passes.c (pass_postreload): Likewise.
      	* stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
      	* tree-cfg.c (pass_remove_useless_stmts): Likewise.
      	(pass_warn_function_return): Likewise.
      	(pass_warn_function_noreturn): Likewise.
      	* tree-complex.c (pass_lower_complex): Likewise.
      	(pass_lower_complex_O0): Likewise.
      	* tree-if-conv.c (pass_if_conversion): Likewise.
      	* tree-into-ssa.c (pass_build_ssa): Likewise.
      	* tree-mudflap.c (pass_mudflap_1): Likewise.
      	(pass_mudflap_2): Likewise.
      	* tree-nomudflap.c (pass_mudflap_1): Likewise.
      	(pass_mudflap_2): Likewise.
      	* tree-nrv.c (pass_return_slot): Likewise.
      	* tree-object-size.c (pass_object_sizes): Likewise.
      	* tree-optimize.c (pass_all_optimizations): Likewise.
      	(pass_early_local_passes): Likewise.
      	(pass_all_early_optimizations): Likewise.
      	(pass_cleanup_cfg): Likewise.
      	(pass_cleanup_cfg_post_optimizing): Likewise.
      	(pass_free_datastructures): Likewise.
      	(pass_free_cfg_annotations): Likewise.
      	(pass_fixup_cfg): Likewise.
      	(pass_init_datastructures): Likewise.
      	* tree-ssa.c (pass_early_warn_uninitialized): Likewise.
      	(pass_late_warn_uninitialized): Likewise.
      	(pass_update_address_taken): Likewise.
      	* tree-ssa-ccp.c (pass_fold_builtins): Likewise.
      	* tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
      	(pass_cse_sincos): Likewise.
      	(pass_convert_to_rsqrt): Likewise.
      	* tree-ssa-structalias.c (pass_build_alias): Likewise.
      	* tree-stdarg.c (pass_stdarg): Likewise.
      	* tree-tailcall.c (pass_tail_recursion): Likewise.
      	(pass_tail_calls): Likewise.
      	* tree-vect-generic.c (pass_lower_vector): Likewise.
      	(pass_lower_vector_ssa): Likewise.
      	* tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
      
      From-SVN: r146222
      Ian Lance Taylor committed
  16. 16 Apr, 2009 1 commit
  17. 08 Apr, 2009 1 commit
    • tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging. · 6d07ad98
      	* tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
      	* function.h (rtl_eh): Remove exception_handler_label_map.
      	* except.c (ehl_hash, ehl_eq, add_ehl_entry,
      	remove_exception_handler_label, for_each_eh_label_1): Remove.
      	(rtl_remove_unreachable_regions): Remove.
      	(convert_from_eh_region_ranges): Do not remove unreachable regions.
      	(find_exception_handler_labels): Don't build the hashtable.
      	(maybe_remove_eh_handler): Remove.
      	(for_each_eh_label): Rewrite to walk the tree.
      	(rest_of_handle_eh): Do not cleanup cfg prior EH construction.
      	* except.h (maybe_remove_eh_handler): Remove.
      	* passes.c (init_optimization_passes): Schedule second EH cleanup
      	before out-of-ssa.
      	* cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
      	cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
      
      From-SVN: r145747
      Jan Hubicka committed
  18. 12 Dec, 2008 2 commits
  19. 09 Oct, 2008 1 commit
    • rtl.h (locator_eq): New decl. · 1692ae7e
      	* rtl.h (locator_eq): New decl.
      	* cfglayout.c (locator_scope): New function.
      	(insn_scope): Use it.
      	(locator_eq): New function.
      	(fixup_reorder_chain): Search for last insn in src bb
      	that has locator set or first insn in dest bb.  Use
      	locator_eq instead of == to compare locators.
      	* cfgrtl.c (cfg_layout_merge_blocks): Likewise.
      	* cfgcleanup.c (try_forward_edges): Use locator_eq instead of
      	== to compare locators.
      
      From-SVN: r141009
      Jakub Jelinek committed
  20. 07 Oct, 2008 1 commit
    • re PR middle-end/29609 (Even with -O0 -g gcc optimizes a goto away and I cannot debug) · 7241571e
      	PR debug/29609
      	PR debug/36690
      	PR debug/37616
      	* basic-block.h (struct edge_def): Add goto_block field.
      	* cfglayout.c (fixup_reorder_chain): Ensure that there is at least
      	one insn with locus corresponding to edge's goto_locus if !optimize.
      	* profile.c (branch_prob): Copy edge's goto_block.
      	* cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
      	emitted jumps.
      	(cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
      	locator in between the merged basic blocks if !optimize and needed.
      	* cfgexpand.c (expand_gimple_cond): Convert goto_block and
      	goto_locus into RTL locator.  For unconditional jump use that
      	locator for the jump insn.
      	(expand_gimple_cond): Convert goto_block and goto_locus into
      	RTL locator for all remaining edges.  For unconditional jump
      	use that locator for the jump insn.
      	* cfgcleanup.c (try_forward_edges): Avoid the optimization if
      	there is more than one edge or insn locator along the forwarding
      	edges and !optimize.  If there is just one, set e->goto_locus.
      	* tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
      	edge's goto_block.
      	(move_block_to_fn): Adjust edge's goto_block.
      
      	* gcc.dg/debug/pr29609-1.c: New test.
      	* gcc.dg/debug/pr29609-2.c: New test.
      	* gcc.dg/debug/pr36690-1.c: New test.
      	* gcc.dg/debug/pr36690-2.c: New test.
      	* gcc.dg/debug/pr36690-3.c: New test.
      	* gcc.dg/debug/pr37616.c: New test.
      	* gcc.dg/debug/dwarf2/pr29609-1.c: New test.
      	* gcc.dg/debug/dwarf2/pr29609-2.c: New test.
      	* gcc.dg/debug/dwarf2/pr36690-1.c: New test.
      	* gcc.dg/debug/dwarf2/pr36690-2.c: New test.
      	* gcc.dg/debug/dwarf2/pr36690-3.c: New test.
      	* gcc.dg/debug/dwarf2/pr37616.c: New test.
      
      From-SVN: r140948
      Jakub Jelinek committed
  21. 28 Jul, 2008 1 commit
    • backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch. · 726a989a
      2008-07-28  Richard Guenther  <rguenther@suse.de>
      
      	Merge from gimple-tuples-branch.
      
      	* ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
      	* gimple.def: New file.
      	* gsstruct.def: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* tree-gimple.c: Removed.  Merged into ...
      	* gimple.c: ... here.  New file.
      	* tree-gimple.h: Removed.  Merged into ...
      	* gimple.h: ... here.  New file.
      
      	* Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
      	* configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
      	--enable-checking=gimple flag.
      	* config.in: Likewise.
      	* configure: Regenerated.
      
      	* tree-ssa-operands.h: Tuplified.
      	* tree-vrp.c: Likewise.
      	* tree-loop-linear.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-complex.c: Likewise.
      	* cgraphbuild.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tracer.c: Likewise.
      	* gengtype.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-ssa-loop-unswitch.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* value-prof.c: Likewise.
      	* tree-ssa-loop-ch.c: Likewise.
      	* tree-tailcall.c: Likewise.
      	* value-prof.h: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* tree-pass.h: Likewise.
      	* ipa-cp.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-scalar-evolution.h: Likewise.
      	* target.h: Likewise.
      	* lambda-mat.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* diagnostic.h: Likewise.
      	* builtins.c: Likewise.
      	* tree-ssa-alias-warnings.c: Likewise.
      	* cfghooks.c: Likewise.
      	* fold-const.c: Likewise.
      	* cfghooks.h: Likewise.
      	* omp-low.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* toplev.c: Likewise.
      	* tree-gimple.c: Likewise.
      	* tree-gimple.h: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* cgraphunit.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* c-format.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* tree-ssa-propagate.h: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* gimple-low.c: Likewise.
      	* tree-ssa-sink.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* c-semantics.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* expr.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* predict.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* matrix-reorg.c: Likewise.
      	* c-decl.c: Likewise.
      	* tree-eh.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* lambda-trans.c: Likewise.
      	* function.c: Likewise.
      	* langhooks.c: Likewise.
      	* ebitmap.h: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* function.h: Likewise.
      	* langhooks.h: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* ipa-type-escape.c: Likewise.
      	* ipa-type-escape.h: Likewise.
      	* domwalk.c: Likewise.
      	* tree-if-conv.c: Likewise.
      	* profile.c: Likewise.
      	* domwalk.h: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-vect-analyze.c: Likewise.
      	* c-typeck.c: Likewise.
      	* gimplify.c: Likewise.
      	* coretypes.h: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* calls.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree.def: Likewise.
      	* tree-dfa.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* cfgexpand.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-predcom.c: Likewise.
      	* lambda.h: Likewise.
      	* tree-mudflap.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* print-tree.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* ipa-prop.h: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* ggc-page.c: Likewise.
      	* c-omp.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* lambda-code.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-inline.h: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-vect-transform.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* cfgloop.c: Likewise.
      	* system.h: Likewise.
      	* tree-profile.c: Likewise.
      	* cfgloop.h: Likewise.
      	* c-gimplify.c: Likewise.
      	* c-common.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-flow.h: Likewise.
      	* c-common.h: Likewise.
      	* basic-block.h: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-ssa-structalias.h: Likewise.
      	* tree-cfg.c: Likewise.
      	* passes.c: Likewise.
      	* ipa-struct-reorg.c: Likewise.
      	* ipa-struct-reorg.h: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* varpool.c: Likewise.
      	* stmt.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* langhooks-def.h: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32c/m32c-protos.h: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/mips/mips.c: Likewise.
      
      From-SVN: r138207
      Richard Biener committed
  22. 02 Jul, 2008 1 commit
    • rtlanal.c (add_reg_note): New function. · 65c5f2a6
      	* rtlanal.c (add_reg_note): New function.
      	* rtl.h (add_reg_note): Declare.
      	* auto-inc-dec.c (attempt_change): Use add_reg_note.
      	* bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
      	* builtins.c (expand_builtin_longjmp): Likewise.
      	(expand_builtin_nonlocal_goto): Likewise.
      	* calls.c (emit_call_1, expand_call): Likewise.
      	* cfgexpand.c (add_reg_br_prob_note): Likewise.
      	* cfglayout.c (fixup_reorder_chain): Likewise.
      	* cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
      	(commit_one_edge_insertion): Likewise.
      	* combine.c (move_deaths, distribute_notes): Likewise.
      	* df-problems.c (df_set_note): Likewise.
      	* emit-rtl.c (link_cc0_insns, try_split): Likewise.
      	(set_unique_reg_note): Likewise.
      	(emit_copy_of_insn_after): Likewise.
      	* expr.c (expand_expr_real): Likewise.
      	* gcse.c (add_label_notes): Likewise.
      	* haifa-sched.c (create_check_block_twin): Likewise.
      	* jump.c (mark_jump_label_1): Likewise.
      	* loop-doloop.c (add_test, doloop_modify): Likewise.
      	* loop-unswitch.c (compare_and_jump_seq): Likewise.
      	* lower-subreg.c (move_eh_region_note): Likewise.
      	* optabs.c (emit_libcall_block): Likewise.
      	* predict.c (predict_insn): Likewise.
      	(combine_predictions_for_insn): Likewise.
      	* recog.c (peephole2_optimize): Likewise.
      	* regmove.c (try_auto_increment): Likewise.
      	* reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
      	* reload.c (find_reloads): Likewise.
      	* reload1.c (fixup_eh_region_note): Likewise.
      	(reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
      	* reorg.c (delete_prior_computation): Likewise.
      	(delete_computation, dbr_schedule): Likewise.
      	* config/pa/pa.c (legitimize_pic_address): Likewise.
      	* config/sh/sh.c (sh_reorg): Likewise.
      
      From-SVN: r137374
      Ian Lance Taylor committed
  23. 01 Jun, 2008 1 commit
    • rtl.h (emit_clobber, [...]): Declare. · c41c1387
      gcc/
      	* rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
      	* emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
      	functions.  Do not emit uses and clobbers of CONCATs; individually
      	use and clobber their operands.
      	* builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
      	gen_clobber, emit_use and gen_use.
      	(expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
      	(expand_builtin_return): Likewise.
      	* cfgbuild.c (count_basic_blocks): Likewise.
      	* cfgrtl.c (rtl_flow_call_edges_add): Likewise.
      	* explow.c (emit_stack_restore): Likewise.
      	* expmed.c (extract_bit_field_1): Likewise.
      	* expr.c (convert_move, emit_move_complex_parts): Likewise.
      	(emit_move_multi_word, store_constructor): Likewise.
      	* function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
      	(thread_prologue_and_epilogue_insns): Likewise.
      	* lower-subreg.c (resolve_simple_move): Likewise.
      	* optabs.c (widen_operand, expand_binop): Likewise.
      	(expand_doubleword_bswap, emit_no_conflict_block): Likewise.
      	* reload.c (find_reloads): Likewise.
      	* reload1.c (eliminate_regs_in_insn): Likewise.
      	* stmt.c (expand_nl_goto_receiver): Likewise.
      	* config/alpha/alpha.md (builtin_longjmp): Likewise.
      	* config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
      	* config/arm/arm.c (arm_load_pic_register): Likewise.
      	(thumb1_expand_epilogue, thumb_set_return_address): Likewise.
      	* config/arm/arm.md (untyped_return): Likewise.
      	* config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
      	* config/avr/avr.c (expand_prologue): Likewise.
      	* config/bfin/bfin.c (do_unlink): Likewise.
      	* config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
      	* config/cris/cris.c (cris_expand_prologue): Likewise.
      	* config/darwin.c (machopic_indirect_data_reference): Likewise.
      	(machopic_legitimize_pic_address): Likewise.
      	* config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
      	(frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
      	* config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
      	(ix86_expand_convert_uns_didf_sse): Likewise.
      	(ix86_expand_vector_init_general): Likewise.
      	* config/ia64/ia64.md (eh_epilogue): Likewise.
      	* config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
      	* config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
      	* config/m32r/m32r.c (m32r_reload_lr): Likewise.
      	(config/iq2000/iq2000.c): Likewise.
      	* config/mips/mips.md (fixuns_truncdfsi2): Likewise.
      	(fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
      	(builtin_longjmp): Likewise.
      	* config/mn10300/mn10300.md (call, call_value): Likewise.
      	* config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
      	* config/pdp11/pdp11.md (abshi2): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
      	* config/s390/s390.c (s390_emit_prologue): Likewise.
      	* config/s390/s390.md (movmem_long, setmem_long): Likewise.
      	(cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
      	(builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
      	* config/sh/sh.c (prepare_move_operands): Likewise.
      	(output_stack_adjust, sh_expand_epilogue): Likewise.
      	(sh_set_return_address, sh_expand_t_scc): Likewise.
      	* config/sparc/sparc.c (load_pic_register): Likewise.
      	* config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
      	* config/spu/spu.c (spu_expand_epilogue): Likewise.
      	* config/v850/v850.c (expand_epilogue): Likewise.
      
      From-SVN: r136251
      Richard Sandiford committed
  24. 07 May, 2008 1 commit
    • [multiple changes] · becfd6e5
      2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
      
              PATCH rtl/7335
              PATCH rtl/33826
              * see.c (see_copy_insn): Copy new pure const attributes for new
              call.
              * c-decl.c (merge_decls): Ditto.
              * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
              to RTL_CONST_OR_PURE_CALL_P.
              * tree.c (define_local_buitin): Rename DECL_IS_PURE to
              DECL_PURE_P.  Initialized DECL_LOOPING_CONST_PURE.
              (process_call_operands): Set tree_side_effects properly.
              * tree.h (TREE_READONLY_DECL_P): Removed.
              (DECL_IS_PURE): Renamed to DECL_PURE_P.
              (DECL_LOOPING_OR_CONST_P): New macro.
              (struct tree_function_decl): Added looping_const_or_pure_p.
              (ECF_*) Renumbered.
              (ECF_LOOPING_OR_CONST_P): New macro,
              * rtlanal.c (pure_const_p): Removed.
              * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
              * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
              to RTL_CONST_CALL_P.
              * ipa-pure-const.c (pure_const_state_e): Added looping field.
              (check_decl, check_tree, check_call, scan_function): Initialize
              looping.
              (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
              (static_execute): Set looping true for recursive functions.
              Undo setting state to IPA_NEITHER for recursive functions.
              * cse.c (cse_insn): 
              * ifcvt.c (noce_can_store_speculate_p): Changed
              CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or 
              RTL_CONST_OR_PURE_CALL_P.
              * dse.c (scan_insn): Ditto.
              * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
              * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
              RTL_CONST_OR_PURE_CALL_P.
              (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
              pure_call_p to RTL_CONST_CALL_P.
              * gimplify.c (gimplify_call_expr): Clear side effects for
              non-looping pure and constant calls.
              * calls.c (emit_call_1): Set rtl flags from ecf flags.
              (flags_from_decl_or_type): Set ecf flags from decl flags.
              (initialize_argument_information): Turn off
              ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
              Change const to pure if callee_copies is true rather than just
              turning off const.
              (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
              way of marking pure calls.
              (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
              Remove hack that was supposed to fix pr7335 and remove old
              way of marking pure calls.
              * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
              RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
              * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
              RTL_CONST_OR_PURE_CALL_P.
              * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
              * loop-invariant.c (find_exits, find_invariant_bb): Changed
              CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
              * sched-deps.c (schedule_analyze): Ditto.
              * rtl.h (struct rtx_def): Use call field, unchanging field, and
              return_val field of calls to represent pure and const function
              info.
              (CONST_OR_PURE_CALL_P): Deleted macro.
              (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
              RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
              * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
              TREE_READONLY.
              * tree-optimize.c (execute_fixup_cfg): Added test for
              ECF_LOOPING_CONST_OR_PURE.
              * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
              DECL_PURE_P.
              * tree-cfg.c (update_call_expr_flags): Do not clear tree side
              effects for looping pure or const calls.
              (verify_gimple_expr): Added verification code. 
              * config/alpha/alpha.c (alpha_legitimize_address,
              alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
              RTL_CONST_CALL_P.
              * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
              * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
              * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
              * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
              RTL_CONST_OR_PURE_CALL_P.
              * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
              and const calls to be deleted.
      
      java:
      2008-05-07  Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	* decl.c (java_init_decl_processing): Change DECL_IS_PURE to
      	DECL_PURE_P.
      
      cp:
      2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	 * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
      	 DECL_LOOPING_CONST_OR_PURE_P attributes.
      	 * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
      	 DECL_PURE_P.
      
      gfortran:
      2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	 * trans-decl.c (gfc_get_extern_function_decl, build_function_decl):
      	 Rename DECL_IS_PURE to DECL_PURE_P.
      
      From-SVN: r135053
      Kenneth Zadeck committed
  25. 18 Apr, 2008 1 commit
    • except.c (dw2_size_of_call_site_table, [...]): Use vector API for call_site_record. · cb91fab0
      	* except.c (dw2_size_of_call_site_table,
      	sjlj_size_of_call_site_table): Use vector API for call_site_record.
      
      	* cgraphbuild.c (build_cgraph_edges): Update.
      	* tree-pass.h: Update comment.
      	* final.c (leaf_function_p): Update.
      	(leaf_renumber_regs): Update.
      	(rest_of_clean_state): Update.
      	* omp-low.c (expand_omp_parallel): Update.
      	* ipa-reference.c (analyze_function): Update.
      	* reorg.c (find_end_label): Update.
      	(optimize_skip): Update.
      	(fill_simple_delay_slots): Update.
      	(fill_simple_delay_slots): Update.
      	(make_return_insns): Update.
      	(dbr_schedule): Update.
      	* gimple-low.c (record_vars_into): Update.
      	* cfgbuild.c (make_edges): Update.
      	* function.c (assign_stack_local): Update.
      	(assign_parm_adjust_stack_rtl): Update.
      	(locate_and_pad_parm): Update.
      	(allocate_struct_function): Do not initialize stack_alignment_needed
      	and preferred_stack_boundary here.
      	(stack_protect_prologue): Update.
      	(stack_protect_epilogue): Update.
      	(expand_function_start): Initialize stack_alignment_needed,
      	preferred_stack_boundary and max_jumptable_ents.
      	(expand_function_end): Update.
      	(free_after_compilation): Do not NULLify epilogue_delay_list.
      	* function.h (struct rtl_data): Add stack_protect_guard,
      	stack_alignment_needed,
      	preferred_stack_boundary, epilogue_delay_list.
      	(struct function): Remove value_histograms, stack_alignment_needed,
      	preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
      	last_label_uid,
      	unexpanded_var_list, stack_protect_guard.
      	(current_function_epilogue_delay_list): Remove.
      	* ipa-type-escape.c (analyze_function): Update.
      	* gimplify.c (pop_gimplify_context): Update comment.
      	* calls.c (expand_call): Update.
      	(emit_library_call_value_1): Update.
      	* except.c (set_nothrow_function_flags): Update.
      	* cfgexpand.c (get_decl_align_unit): Update.
      	(create_stack_guard): Update.
      	(estimated_stack_frame_size): Update.
      	(expand_used_vars): Update.
      	(tree_expand_cfg): Free histogram earliers, init expansion variables.
      	* explow.c (allocate_dynamic_stack_space): Update.
      	* tree-ssa-live.c (remove_unused_locals): Update.
      	* varasm.c (mark_constant_pool): Update.
      	* tree-inline.c (remap_decls): Update.
      	(initialize_cfun): Update.
      	(declare_return_variable): Update.
      	(inline_forbidden_p): Update.
      	(expand_call_inline): Update.
      	(declare_inline_vars): Update.
      	(tree_function_versioning): Update.
      	* tree-flow.h (value_histograms): New.
      	(VALUE_HISTOGRAMS): New macro.
      	* basic-block.h (control_flow_graph): Add max_jumptable_ents,
      	last_label_uid.
      	* tree-cfg.c (set_bb_for_stmt): Update.
      	(replace_by_duplicate_decl): Update.
      	(move_block_to_fn): Update.
      	(new_label_mapper): Update.
      	(dump_function_to_file): Update.
      	* ipa-struct-reorg.c (build_data_structure): Update.
      	* cfgrtl.c (print_rtl_with_bb): Update.
      	* reload1.c (reload): Update.
      	(reload): Update.
      	* config/i386/i386.c (setup_incoming_varargs_64,
      	ix86_compute_frame_layout): Update.
      	* config/arc/arc.c (arc_output_function_epilogue): Update.
      
      From-SVN: r134425
      Jan Hubicka committed
  26. 19 Mar, 2008 1 commit
    • re PR other/35094 (RTL dump file letters hosed and partly undocumented) · 8ddbbcae
      	* gcc.dg/20050811-2.c: Update dumping flags.
      	* gcc.dg/sms-2.c: Update dumping flags.
      	* gcc.dg/var-expand1.c: Update dumping flags.
      	* gcc.dg/var-expand3.c: Update dumping flags.
      	* gcc.dg/pr30957-1.c: Update dumping flags.
      	* gcc.dg/20050811-1.c: Update dumping flags.
      	* gcc.dg/cpp/cmdlne-dI-M.C: Do not xfail.
      	* gcc.dg/cpp/cmdlne-dM-M.C: Do not xfail.
      
      	PR other/35094
      	* toplev.c (decode_d_option): Handle all CPP flags.
      	* tree-vrp.c: Update tree_pass descriptors.
      	* regrename.c: Update tree_pass descriptors.
      	* fwprop.c: Update tree_pass descriptors.
      	* doc/invoke.texi: Remove documentation of dropped -d? flags.
      	* tree-into-ssa.c: Update tree_pass descriptors.
      	* tree-dump.c: Update tree_pass descriptors.
      	* tree-complex.c: Update tree_pass descriptors.
      	* tree-dump.h: Update tree_pass descriptors.
      	* see.c: Update tree_pass descriptors.
      	* cgraphbuild.c: Update tree_pass descriptors.
      	* tracer.c: Update tree_pass descriptors.
      	* tree-loop-distribution.c: Update tree_pass descriptors.
      	* cgraph.c: Update tree_pass descriptors.
      	* postreload-gcse.c: Update tree_pass descriptors.
      	* postreload.c: Update tree_pass descriptors.
      	* tree-ssa-loop-ch.c: Update tree_pass descriptors.
      	* tree-tailcall.c: Update tree_pass descriptors.
      	* tree-pass.h (tree_opt_pass): Rename to ...
      	(opt_pass) ... this one; add "type" field and remove letter field.
      	(gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
      	(execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
      	all_lowering_passes): Update declaration.
      	* ipa-cp.c: Update tree_pass descriptors.
      	* final.c: Update tree_pass descriptors.
      	* omp-low.c: Update tree_pass descriptors.
      	* tree-ssa-dse.c: Update tree_pass descriptors.
      	* ipa-reference.c: Update tree_pass descriptors.
      	* tree-ssa-uncprop.c: Update tree_pass descriptors.
      	* auto-inc-dec.c: Update tree_pass descriptors.
      	* reorg.c: Update tree_pass descriptors.
      	* cgraphunit.c: Update tree_pass descriptors.
      	* tree-ssa-copyrename.c: Update tree_pass descriptors.
      	* tree-ssa-ccp.c: Update tree_pass descriptors.
      	* df-core.c: Update tree_pass descriptors.
      	* mode-switching.c: Update tree_pass descriptors.
      	* tree-nomudflap.c: Update tree_pass descriptors.
      	* modulo-sched.c: Update tree_pass descriptors.
      	* ipa-pure-const.c: Update tree_pass descriptors.
      	* cse.c: Update tree_pass descriptors.
      	* web.c: Update tree_pass descriptors.
      	* tree-stdarg.c: Update tree_pass descriptors.
      	* tree-ssa-math-opts.c: Update tree_pass descriptors.
      	* tree-ssa-dom.c: Update tree_pass descriptors.
      	* tree-nrv.c: Update tree_pass descriptors.
      	* tree-ssa-alias.c: Update tree_pass descriptors.
      	* loop-init.c: Update tree_pass descriptors.
      	* gimple-low.c: Update tree_pass descriptors.
      	* ipa-inline.c: Update tree_pass descriptors.
      	* tree-ssa-sink.c: Update tree_pass descriptors.
      	* global.c: Update tree_pass descriptors.
      	* ifcvt.c: Update tree_pass descriptors.
      	* jump.c: Update tree_pass descriptors.
      	* predict.c: Update tree_pass descriptors.
      	* tree-ssa-loop.c: Update tree_pass descriptors.
      	* recog.c: Update tree_pass descriptors.
      	* dse.c: Update tree_pass descriptors.
      	* tree-ssa-ifcombine.c: Update tree_pass descriptors.
      	* tree-eh.c: Update tree_pass descriptors.
      	* regmove.c: Update tree_pass descriptors.
      	* local-alloc.c
      	* function.c: Update tree_pass descriptors.
      	* tree-vectorizer.c: Update tree_pass descriptors.
      	* gcse.c: Update tree_pass descriptors.
      	* ipa-type-escape.c: Update tree_pass descriptors.
      	* tree-if-conv.c: Update tree_pass descriptors.
      	* init-regs.c: Update tree_pass descriptors.
      	* ipa.c: Update tree_pass descriptors.
      	* tree-ssa-phiopt.c: Update tree_pass descriptors.
      	* rtl-factoring.c: Update tree_pass descriptors.
      	* lower-subreg.c: Update tree_pass descriptors.
      	* bt-load.c: Update tree_pass descriptors.
      	* tree-dfa.c: Update tree_pass descriptors.
      	* except.c: Update tree_pass descriptors.
      	* emit-rtl.c: Update tree_pass descriptors.
      	* cfgexpand.c: Update tree_pass descriptors.
      	* tree-cfgcleanup.c: Update tree_pass descriptors.
      	* cfgcleanup.c: Update tree_pass descriptors.
      	* tree-ssa-pre.c: Update tree_pass descriptors.
      	* tree-sra.c: Update tree_pass descriptors.
      	* tree-mudflap.c: Update tree_pass descriptors.
      	* tree-ssa-copy.c: Update tree_pass descriptors.
      	* cfglayout.c: Update tree_pass descriptors.
      	* tree-ssa-forwprop.c: Update tree_pass descriptors.
      	* tree-ssa-dce.c: Update tree_pass descriptors.
      	* tree-ssa.c: Update tree_pass descriptors.
      	* regclass.c: Update tree_pass descriptors.
      	* integrate.c: Update tree_pass descriptors.
      	* tree-optimize.c: Update tree_pass descriptors.
      	* tree-ssa-phiprop.c: Update tree_pass descriptors.
      	* tree-object-size.c: Update tree_pass descriptors.
      	* combine.c: Update tree_pass descriptors.
      	* tree-outof-ssa.c: Update tree_pass descriptors.
      	* bb-reorder.c: Update tree_pass descriptors.
      	* stack-ptr-mod.c: Update tree_pass descriptors.
      	* var-tracking.c: Update tree_pass descriptors.
      	* tree-profile.c: Update tree_pass descriptors.
      	* tree-vect-generic.c: Update tree_pass descriptors.
      	* reg-stack.c: Update tree_pass descriptors.
      	* sched-rgn.c: Update tree_pass descriptors.
      	* tree-ssa-structalias.c: Update tree_pass descriptors.
      	* tree-cfg.c: Update tree_pass descriptors.
      	* passes.c (current_pass): Update declaration.
      	(finish_optimization_passes): Update.
      	(all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
      	(register_one_dump_file, register_dump_files_1, next_pass_1):
       	Update arguments.
      	(init_optimization_passes): Update handling of new types.
      	(execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
      	* ipa-struct-reorg.c: Update tree_pass descriptors.
      	* tree-ssa-reassoc.c: Update tree_pass descriptors.
      	* combine-stack-adj.c: Update tree_pass descriptors.
      	* cfgrtl.c: Update tree_pass descriptors.
      	* dce.c: Update tree_pass descriptors.
      	* tree-ssanames.c: Update tree_pass descriptors.
      
      From-SVN: r133342
      Jan Hubicka committed
  27. 01 Mar, 2008 1 commit
    • df-scan.c (df_ref_chain_change_bb): Simplify. · 63642d5a
      * df-scan.c (df_ref_chain_change_bb): Simplify.
      (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
      set_block_for_insn if there's any change.
      * df.h ((df_insn_change_bb): Fix prototype.
      * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
      df_insn_change_bb, don't call set_block_for_insn.
      * emit-rtl.c (reorder_insns): Likewise.
      * haifa-sched.c (move_insn): Likewise.
      
      From-SVN: r132795
      Alexandre Oliva committed
  28. 30 Nov, 2007 1 commit
    • re PR rtl-optimization/34171 (Segfault in df_chain_remove_problem with -O3 on alpha) · 6c3d0e31
      gcc/testsuite/ChangeLog:
      
      2007-11-30  Martin Michlmayr <tbm@cyrius.com>
      
      	PR rtl-optimization/34171
      	* gcc.dg/pr34171.c: New testcase.
      
      gcc/ChangeLog:
      
      2007-11-30  Seongbae Park <seongbae.park@gmail.com>
      
      	PR rtl-optimization/34171
      	* cfgrtl.c (update_bb_for_insn_chain): New function,
      	refactored from update_bb_for_insn.
      	(update_bb_for_insn): Call update_bb_for_insn.
      	(rtl_merge_blocks, try_redirect_by_replacing_jump):
      	Replace a loop with update_bb_for_insn_chain call.
      	(cfg_layout_merge_blocks): Add a call to
      	update_bb_for_insn_chain. Replace the for loop
      	with a call to update_bb_for_insn_chain.
      
      From-SVN: r130539
      Seongbae Park committed
  29. 01 Nov, 2007 1 commit
  30. 22 Oct, 2007 1 commit
    • re PR rtl-optimization/33644 (ICE in local_cprop_pass with -ftrapv for crafty) · 9ed7b221
      	PR rtl-optimization/33644
      	* cfgcleanup.c: Do not include dce.h.
      	* cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
      	* combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
      	* dce.c (something_changed): Delete.
      	(libcall_dead_p): New predicate.
      	(delete_unmarked_insns): Use it to delete dead libcalls.
      	Deal with REG_LIBCALL and REG_RETVAL notes.
      	(prescan_libcall_for_dce): New function.
      	(prescan_insns_for_dce): Use it to deal with libcalls.
      	(mark_reg_dependencies): Do nothing special for libcalls.
      	(dce_process_block): Likewise.
      	(fast_dce): Delete unused local variable.
      	(run_fast_dce): Do not return a value.
      	* dce.h (struct df): Delete.
      	(run_fast_dce): Adjust prototype.
      	* optabs.c (libcall_id): Delete.
      	(maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
      	(emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
      	* reload1.c (reload): Delete REG_LIBCALL_ID case.
      	* rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
      	* see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
      	notes instead of REG_LIBCALL_ID notes.
      	* reg-notes.def (LIBCALL_ID): Delete.
      	* Makefile.in (see.o): Add dce.h dependency.
      	(cfgcleanup.o): Remove dce.h dependency.
      
      From-SVN: r129556
      Eric Botcazou committed
  31. 03 Oct, 2007 1 commit
  32. 09 Sep, 2007 2 commits
    • Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET. · cf7c4aa6
      	* doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
      	Similar for what label_refs can go in the JUMP_TARGET field.  Split
      	REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
      	* reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
      	REG_LABEL when replacing an operand with a LABEL_REF for a
      	non-jump insn.
      	(subst_reloads): When replacing a LABEL_REG with a register,
      	instead of generating a REG_LABEL note, assert that there already
      	is one or that the label is a known target for the insn.
      	* rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
      	note, check the JUMP_LABEL field.  Remove "else" after return.
      	* reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
      	cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
      	(fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
      	REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
      	insns.  Iterate over all notes; don't assume there's only one.
      	* cse.c (recorded_label_ref): Adjust comment to refer to
      	REG_LABEL_OPERAND.
      	(cse_extended_basic_block): Do LABEL_REF check for all INSN_P
      	insns, not just NONJUMP_INSN_P.
      	(check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
      	isn't a jump target.
      	* jump.c (rebuild_jump_labels): Adjust head comment.
      	(init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
      	don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
      	(mark_all_labels): For JUMP_P insns without a target, check if the
      	the target is noted on the previous nonjump insn.
      	(mark_jump_label_1): New function, guts from mark_jump_label.
      	<case IF_THEN_ELSE>: Handle first operand as a non-target when
      	marking jump target labels.
      	<case LABEL_REF>: Adjust for whether to generate a
      	REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
      	For 'E' format rtl, iterate in descending element order.
      	(delete_related_insns): Handle both REG_LABEL_TARGET and
      	REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
      	reference count, delete and fallthrough.  Move finding-next-
      	non-deleted insn last in the function.  Look at all INSN_P insns
      	for REG_LABEL_OPERAND notes.
      	(redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
      	JUMP.
      	* print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
      	JUMP_LABEL, output the INSN_UID of it.
      	* gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
      	and/or REG_LABEL_TARGET.
      	(add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
      	with jump.c copy by only adding notes for labels actually
      	referenced in the insn.
      	* emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
      	usage count increment; handle all INSN_P trial insns.
      	(emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
      	notes.
      	* rtl.h (struct rtx_def) <volatil>: Adjust to mention
      	REG_LABEL_TARGET and REG_LABEL_OPERAND.
      	(LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
      	REG_LABEL_OPERAND.
      	* combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
      	JUMP_P insns and REG_LABEL_OPERAND everywhere.
      	* sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
      	on all INSN_P insns.
      	* reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
      	* cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
      	REG_LABEL_OPERAND notes.
      	* reload1.c (calculate_needs_all_insns): Adjust comments.
      	(set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
      	* config/alpha/alpha.md (split for load of an address into a
      	four-insn sequence on Unicos/Mk): Adjust to use
      	REG_LABEL_OPERAND.
      	* config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
      
      From-SVN: r128287
      Hans-Peter Nilsson committed
    • revert: regrename.c (copyprop_hardreg_forward_1): New variable next. · ba4807a0
      	Revert:
      	2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      	* regrename.c (copyprop_hardreg_forward_1): New variable next. Use
      	FOR_BB_INSNS_SAFE instead of for loop.
      	* cse.c (cse_extended_basic_block): Likewise.
      	* postreload.c (reload_cse_regs_1): New variable next. Make sure
      	that the for loop does not invoke NEXT_INSN on a deleted insn.
      	* function.c (instantiate_virtual_regs): Likewise.
      	* lower-subreg.c (remove_retval_note): Likewise.
      	(decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
      	FOR_BB_INSNS.
      	* emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
      	a deleted insn.
      	* cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
      	insn, if it's a jump.
      	(try_redirect_by_replacing_jump): New variable jump_p. Call
      	tablejump_p before delete_insn_chain.
      	* reload1.c (reload): New variable next. Make sure that the for
      	loop does not invoke NEXT_INSN on a deleted insn.
      	(fixup_eh_region_note): Make the loop terminate if i becomes NULL.
      	(delete_output_reload): New variable prev. Make sure the the for
      	loops do not invoke PREV_INSN on a deleted insn.
      
      From-SVN: r128284
      Laurynas Biveinis committed
  33. 07 Sep, 2007 2 commits
    • tree-flow.h (const_block_stmt_iterator): Remove. · b48d0358
      	* tree-flow.h (const_block_stmt_iterator): Remove.
      	Update all users to use block_stmt_iterator.
      	* tree-iterator.h (const_tree_stmt_iterator): Remove.
      	Update all users to use tree_stmt_iterator.
      
      From-SVN: r128246
      Diego Novillo committed
    • regrename.c (copyprop_hardreg_forward_1): New variable next. · 62a4a967
      2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      
      	* regrename.c (copyprop_hardreg_forward_1): New variable next. Use
      	FOR_BB_INSNS_SAFE instead of for loop.
      	* cse.c (cse_extended_basic_block): Likewise.
      	* postreload.c (reload_cse_regs_1): New variable next. Make sure
      	that the for loop does not invoke NEXT_INSN on a deleted insn.
      	* function.c (instantiate_virtual_regs): Likewise.
      	* lower-subreg.c (remove_retval_note): Likewise.
      	(decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
      	FOR_BB_INSNS.
      	* emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
      	a deleted insn.
      	* cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
      	insn, if it's a jump.
      	(try_redirect_by_replacing_jump): New variable jump_p. Call
      	tablejump_p before delete_insn_chain.
      	* reload1.c (reload): New variable next. Make sure that the for
      	loop does not invoke NEXT_INSN on a deleted insn.
      	(fixup_eh_region_note): Make the loop terminate if i becomes NULL.
      	(delete_output_reload): New variable prev. Make sure the the for
      	loops do not invoke PREV_INSN on a deleted insn.
      
      From-SVN: r128224
      Laurynas Biveinis committed
  34. 27 Aug, 2007 1 commit
    • alias.c (memory_modified_1, [...]): Constify. · 9678086d
      	* alias.c (memory_modified_1, memory_modified_in_insn_p):
      	Constify.
      	* basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
      	Likewise.
      	* bb-reorder.c (copy_bb_p): Likewise.
      	* cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
      	predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
      	block_ends_with_condjump_p): Likewise.
      	* cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
      	predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
      	block_ends_with_condjump_p): Likewise.
      	* cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
      	* cfgrtl.c (can_delete_note_p, can_delete_label_p,
      	rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
      	rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
      	need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
      	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
      	debug_true_const_tree instad of debug_true_tree.
      	* debug.c (do_nothing_debug_hooks): Likewise.
      	* debug.h (ignore_block, debug_true_const_tree): Constify.
      	* dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
      	dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
      	decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
      	same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
      	dbx_reg_number, is_based_loc, field_type,
      	simple_type_align_in_bits, simple_decl_align_in_bits,
      	simple_type_size_in_bits, field_byte_offset, insert_float,
      	type_tag, member_declared_type, is_redundant_typedef,
      	secname_for_decl, is_inlined_entry_point): Likewise.
      	* emit-rtl.c (const_next_insn, const_previous_insn,
      	const_next_nonnote_insn, const_prev_nonnote_insn,
      	const_next_real_insn, const_prev_real_insn,
      	const_next_active_insn, const_prev_active_insn, const_next_label,
      	const_prev_label): Likewise.
      	* except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
      	Likewise.
      	* haifa-sched.c (may_trap_exp, haifa_classify_insn,
      	find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
      	sched_insn_is_legitimate_for_speculation_p): Likewise.
      	* jump.c (reversed_comparison_code_parts,
      	reversed_comparison_code, reversed_comparison, condjump_label):
      	Likewise.
      	* predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
      	* reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
      	Likewise.
      	* rtl.h (const_previous_insn, const_next_insn,
      	const_prev_nonnote_insn, const_next_nonnote_insn,
      	const_prev_real_insn, const_next_real_insn,
      	const_prev_active_insn, const_next_active_insn, const_prev_label,
      	const_next_label, modified_between_p, modified_in_p,
      	const_note_storeskeep_with_call_p, condjump_label,
      	reversed_comparison, reversed_comparison_code,
      	reversed_comparison_code_parts, memory_modified_in_insn_p,
      	stack_regs_mentioned): Likewise.
      	* rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
      	keep_with_call_p): Likewise.
      	* sched-deps.c (deps_may_trap_p, sched_get_condition,
      	conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
      	sd_lists_size, sd_lists_empty_p): Likewise.
      	* sched-int.h (sched_insns_conditions_mutex_p,
      	haifa_classify_insn, no_real_insns_p,
      	sched_insn_is_legitimate_for_speculation_p, sd_next_list,
      	sd_lists_size, sd_lists_empty_p): Likewise.
      	* sdbout.c (sdb_debug_hooks): Likewise.
      	* tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
      	stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
      	-tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
      	Likewise.
      	* tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
      	tree_can_throw_internal): Likewise.
      	* tree-flow-inline.h (phi_nodes): Likewise.
      	* tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
      	tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
      	* tree-gimple.c (const_get_call_expr_in): Likewise.
      	* tree-gimple.h (const_get_call_expr_in): Likewise.
      	* tree.c (const_lookup_attribute, attribute_list_equal,
      	attribute_list_contained): Likewise.
      	* tree.h (attribute_list_equal, attribute_list_contained,
      	const_lookup_attribute): Likewise.
      	* vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
      
      From-SVN: r127824
      Kaveh R. Ghazi committed
  35. 14 Aug, 2007 1 commit
    • alias.c (component_uses_parent_alias_set): Constify. · 22ea9ec0
      	* alias.c (component_uses_parent_alias_set): Constify.
      	* alias.h (component_uses_parent_alias_set): Likewise.
      	* cfgrtl.c (print_rtl_with_bb): Likewise.
      	* double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
      	mpz_get_double_int): Likewise.
      	* double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
      	mpz_get_double_int): Likewise.
      	* expr.c (is_aligning_offset, undefined_operand_subword_p,
      	mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
      	Likewise.
      	* expr.h (safe_from_p): Likewise.
      	* gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
      	Likewise.
      	* gimplify.c (should_carry_locus_p, zero_sized_field_decl,
      	zero_sized_type, goa_lhs_expr_p): Likewise.
      	* omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
      	* rtl.h (print_rtl_with_bb): Likewise.
      	* sched-vis.c (print_exp, print_value, print_pattern): Likewise.
      	* tree-cfg.c (const_first_stmt, const_last_stmt): New.
      	* tree-flow-inline.h (bb_stmt_list): Constify.
      	(cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
      	cbsi_stmt): New.
      	* tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
      	const_first_stmt, const_last_stmt): New.
      	(block_may_fallthru, empty_block_p): Constify.
      	* tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
      	EXPR_ONLY_BODY): New.
      	(expr_first, expr_last, expr_only): Use macro for body.
      	(const_expr_first, const_expr_last, const_expr_only): New.
      	* tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
      	ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
      	ctsi_prev, ctsi_stmt): New.
      	* tree-scalar-evolution.c (get_loop_exit_condition): Constify.
      	* tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
      	* tree-ssa-loop-niter.c (loop_only_exit_p,
      	derive_constant_upper_bound): Likewise.
      	* tree-ssa-phiopt.c (empty_block_p): Likewise.
      	* tree-ssa-threadupdate.c (redirection_block_p): Likewise.
      	* tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
      	* tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
      	* tree-vrp.c (vrp_bitmap_equal_p): Likewise.
      	* tree.c (get_type_static_bounds): Likewise.
      	* tree.h (const_expr_first, const_expr_last, const_expr_only): New.
      	(get_type_static_bounds): Constify.
      
      From-SVN: r127483
      Kaveh R. Ghazi committed