aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfgcleanup.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-cfgcleanup.c')
-rw-r--r--gcc/tree-cfgcleanup.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index c261e71..6d57329d 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -43,6 +43,8 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-match.h"
#include "gimple-fold.h"
#include "tree-ssa-loop-niter.h"
+#include "tree-into-ssa.h"
+#include "tree-cfgcleanup.h"
/* The set of blocks in that at least one of the following changes happened:
@@ -761,7 +763,7 @@ cleanup_control_flow_pre ()
/* Iterate the cfg cleanups, while anything changes. */
static bool
-cleanup_tree_cfg_1 (void)
+cleanup_tree_cfg_1 (unsigned ssa_update_flags)
{
bool retval = false;
basic_block bb;
@@ -786,6 +788,8 @@ cleanup_tree_cfg_1 (void)
/* After doing the above SSA form should be valid (or an update SSA
should be required). */
+ if (ssa_update_flags)
+ update_ssa (ssa_update_flags);
/* Continue by iterating over all basic blocks looking for BB merging
opportunities. */
@@ -828,7 +832,7 @@ mfb_keep_latches (edge e)
Return true if the flowgraph was modified, false otherwise. */
static bool
-cleanup_tree_cfg_noloop (void)
+cleanup_tree_cfg_noloop (unsigned ssa_update_flags)
{
bool changed;
@@ -908,7 +912,7 @@ cleanup_tree_cfg_noloop (void)
}
}
- changed |= cleanup_tree_cfg_1 ();
+ changed |= cleanup_tree_cfg_1 (ssa_update_flags);
gcc_assert (dom_info_available_p (CDI_DOMINATORS));
@@ -966,9 +970,9 @@ repair_loop_structures (void)
/* Cleanup cfg and repair loop structures. */
bool
-cleanup_tree_cfg (void)
+cleanup_tree_cfg (unsigned ssa_update_flags)
{
- bool changed = cleanup_tree_cfg_noloop ();
+ bool changed = cleanup_tree_cfg_noloop (ssa_update_flags);
if (current_loops != NULL
&& loops_state_satisfies_p (LOOPS_NEED_FIXUP))