diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-11-24 14:47:55 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-11-24 14:47:55 +0000 |
commit | 9c37629fe0abc8aa8a07521f282eb7803c056b1b (patch) | |
tree | 0367b380138fae228e11618b71da358fba49e479 /gcc/tree-ssa-loop-im.c | |
parent | 4e55c7c347fe797af3aaee1dedb46230168c371b (diff) | |
download | gcc-9c37629fe0abc8aa8a07521f282eb7803c056b1b.zip gcc-9c37629fe0abc8aa8a07521f282eb7803c056b1b.tar.gz gcc-9c37629fe0abc8aa8a07521f282eb7803c056b1b.tar.bz2 |
Allow pass_lim to run outside pass_tree_loop
2015-11-24 Tom de Vries <tom@codesourcery.com>
* tree-ssa-loop-im.c (tree_ssa_lim): Make static.
(pass_lim::execute): Allow to run outside pass_tree_loop.
From-SVN: r230815
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r-- | gcc/tree-ssa-loop-im.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c index 30b53ce..0d82d36 100644 --- a/gcc/tree-ssa-loop-im.c +++ b/gcc/tree-ssa-loop-im.c @@ -43,6 +43,7 @@ along with GCC; see the file COPYING3. If not see #include "tree-ssa-propagate.h" #include "trans-mem.h" #include "gimple-fold.h" +#include "tree-scalar-evolution.h" /* TODO: Support for predicated code motion. I.e. @@ -2496,7 +2497,7 @@ tree_ssa_lim_finalize (void) /* Moves invariants from loops. Only "expensive" invariants are moved out -- i.e. those that are likely to be win regardless of the register pressure. */ -unsigned int +static unsigned int tree_ssa_lim (void) { unsigned int todo; @@ -2560,10 +2561,17 @@ public: unsigned int pass_lim::execute (function *fun) { + bool in_loop_pipeline = scev_initialized_p (); + if (!in_loop_pipeline) + loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS); + if (number_of_loops (fun) <= 1) return 0; + unsigned int todo = tree_ssa_lim (); - return tree_ssa_lim (); + if (!in_loop_pipeline) + loop_optimizer_finalize (); + return todo; } } // anon namespace |