aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-01-10 11:54:20 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-01-10 10:54:20 +0000
commit3ff0dc17a41ca4a8c673c67d0053e85a6521c739 (patch)
treef23e1eb29735ba98c89f93421a9b7ee92fab31aa
parent2072a319569067b9b99154e8d1bbec894034652f (diff)
downloadgcc-3ff0dc17a41ca4a8c673c67d0053e85a6521c739.zip
gcc-3ff0dc17a41ca4a8c673c67d0053e85a6521c739.tar.gz
gcc-3ff0dc17a41ca4a8c673c67d0053e85a6521c739.tar.bz2
Clean up partitioning in try_optimize_cfg (PR bootstrap/82831).
2018-01-10 Martin Liska <mliska@suse.cz> PR bootstrap/82831 * basic-block.h (CLEANUP_NO_PARTITIONING): New define. * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up partitioning. * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if CLEANUP_NO_PARTITIONING is not set. From-SVN: r256422
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/basic-block.h1
-rw-r--r--gcc/bb-reorder.c2
-rw-r--r--gcc/cfgcleanup.c3
4 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 03c5f86..19eea83 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2018-01-10 Martin Liska <mliska@suse.cz>
+
+ PR bootstrap/82831
+ * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
+ * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
+ partitioning.
+ * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
+ CLEANUP_NO_PARTITIONING is not set.
+
2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
* doc/rtl.texi: Remove documentation of (const ...) wrappers
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index b9394cd..823627a 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -506,6 +506,7 @@ ei_cond (edge_iterator ei, edge *p)
insns. */
#define CLEANUP_CFGLAYOUT 32 /* Do cleanup in cfglayout mode. */
#define CLEANUP_CFG_CHANGED 64 /* The caller changed the CFG. */
+#define CLEANUP_NO_PARTITIONING 128 /* Do not try to fix partitions. */
/* Return true if BB is in a transaction. */
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index f977082..9d18fcc 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -2575,7 +2575,7 @@ pass_reorder_blocks::execute (function *fun)
cfg_layout_initialize (CLEANUP_EXPENSIVE);
reorder_basic_blocks ();
- cleanup_cfg (CLEANUP_EXPENSIVE);
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_NO_PARTITIONING);
FOR_EACH_BB_FN (bb, fun)
if (bb->next_bb != EXIT_BLOCK_PTR_FOR_FN (fun))
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 43d1876..eebbe8f 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -3012,7 +3012,8 @@ try_optimize_cfg (int mode)
to detect and fix during edge forwarding, and in some cases
is only visible after newly unreachable blocks are deleted,
which will be done in fixup_partitions. */
- fixup_partitions ();
+ if ((mode & CLEANUP_NO_PARTITIONING) == 0)
+ fixup_partitions ();
checking_verify_flow_info ();
}