+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.
+
2015-11-24 Wilco Dijkstra <wdijkstr@arm.com>
* gcc/config/aarch64/aarch64.md (add<mode>3):
#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.
/* 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;
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