diff options
author | Martin Liska <mliska@suse.cz> | 2018-01-10 11:54:20 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-01-10 10:54:20 +0000 |
commit | 3ff0dc17a41ca4a8c673c67d0053e85a6521c739 (patch) | |
tree | f23e1eb29735ba98c89f93421a9b7ee92fab31aa | |
parent | 2072a319569067b9b99154e8d1bbec894034652f (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/basic-block.h | 1 | ||||
-rw-r--r-- | gcc/bb-reorder.c | 2 | ||||
-rw-r--r-- | gcc/cfgcleanup.c | 3 |
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 (); } |