diff options
author | Bin Cheng <bin.cheng@arm.com> | 2014-02-26 01:49:35 +0000 |
---|---|---|
committer | Bin Cheng <amker@gcc.gnu.org> | 2014-02-26 01:49:35 +0000 |
commit | a3afdbb80906a5553a64f9ba7686a57d2f43f536 (patch) | |
tree | 6950f4f889e9bdb8f3310b7162ef11948dcabffc /gcc/tree-ssa-dom.c | |
parent | b8a542c64830635d1716130f41da4c7a165b5872 (diff) | |
download | gcc-a3afdbb80906a5553a64f9ba7686a57d2f43f536.zip gcc-a3afdbb80906a5553a64f9ba7686a57d2f43f536.tar.gz gcc-a3afdbb80906a5553a64f9ba7686a57d2f43f536.tar.bz2 |
re PR tree-optimization/60280 (gcc.target/arm/ivopts.c and gcc.target/arm/ivopts-2.c failed caused by preserving loop structure.)
PR target/60280
* tree-cfgcleanup.c (tree_forwarder_block_p): Protect loop
preheaders and latches only if requested. Fix latch if it
is removed.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Set
LOOPS_HAVE_PREHEADERS.
PR target/60280
* gnat.dg/renaming5.adb: Change to two expected gotos.
* gcc.dg/tree-ssa/pr21559.c: Change back to three expected
jump threads.
* gcc.dg/tree-prof/update-loopch.c: Check two "Invalid sum"
messages for removed basic block.
* gcc.dg/tree-ssa/ivopt_1.c: Fix unreliable scanning string.
* gcc.dg/tree-ssa/ivopt_2.c: Ditto.
* gcc.dg/tree-ssa/ivopt_3.c: Ditto.
* gcc.dg/tree-ssa/ivopt_4.c: Ditto.
From-SVN: r208165
Diffstat (limited to 'gcc/tree-ssa-dom.c')
-rw-r--r-- | gcc/tree-ssa-dom.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 98cf608..91253dc 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -849,8 +849,14 @@ tree_ssa_dominator_optimize (void) /* We need to know loop structures in order to avoid destroying them in jump threading. Note that we still can e.g. thread through loop headers to an exit edge, or through loop header to the loop body, assuming - that we update the loop info. */ - loop_optimizer_init (LOOPS_HAVE_SIMPLE_LATCHES); + that we update the loop info. + + TODO: We don't need to set LOOPS_HAVE_PREHEADERS generally, but due + to several overly conservative bail-outs in jump threading, case + gcc.dg/tree-ssa/pr21417.c can't be threaded if loop preheader is + missing. We should improve jump threading in future then + LOOPS_HAVE_PREHEADERS won't be needed here. */ + loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES); /* Initialize the value-handle array. */ threadedge_initialize_values (); |