https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44563

--- Comment #31 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Fri Mar 13 08:47:14 2015
New Revision: 221409

URL: https://gcc.gnu.org/viewcvs?rev=221409&root=gcc&view=rev
Log:
2015-03-10  Richard Biener  <rguent...@suse.de>

    PR middle-end/44563
    * tree-cfgcleanup.c (split_bb_on_noreturn_calls): Remove.
    (cleanup_tree_cfg_1): Do not call it.
    (execute_cleanup_cfg_post_optimizing): Fixup the CFG here.
    (fixup_noreturn_call): Mark the stmt as control altering.
    * tree-cfg.c (execute_fixup_cfg): Do not dump the function
    here.
    (pass_data_fixup_cfg): Produce a dump file.
    * tree-ssa-dom.c: Include tree-cfgcleanup.h.
    (need_noreturn_fixup): New global.
    (pass_dominator::execute): Fixup queued noreturn calls.
    (optimize_stmt): Queue calls that became noreturn for fixup.
    * tree-ssa-forwprop.c (pass_forwprop::execute): Likewise.
    * tree-ssa-pre.c: Include tree-cfgcleanup.h.
    (el_to_fixup): New global.
    (eliminate_dom_walker::before_dom_childre): Queue calls that
    became noreturn for fixup.
    (eliminate): Fixup queued noreturn calls.
    * tree-ssa-propagate.c: Include tree-cfgcleanup.h.
    (substitute_and_fold_dom_walker): New member stmts_to_fixup.
    (substitute_and_fold_dom_walker::before_dom_children): Queue
    alls that became noreturn for fixup.
    (substitute_and_fold): Fixup queued noreturn calls.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/tree-cfg.c
    trunk/gcc/tree-cfgcleanup.c
    trunk/gcc/tree-ssa-dom.c
    trunk/gcc/tree-ssa-forwprop.c
    trunk/gcc/tree-ssa-pre.c
    trunk/gcc/tree-ssa-propagate.c

Reply via email to