aboutsummaryrefslogtreecommitdiff
path: root/gcc/domwalk.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-04-01 11:36:25 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-04-01 11:36:25 +0000
commite37240b0b556c2bcdf94b0a84ff798cd4bd5a316 (patch)
treec0f105af1a80974454d81ff0d3c560467a115568 /gcc/domwalk.h
parent90f1430589e2f3efa8136346615fc08edfd936f3 (diff)
downloadgcc-e37240b0b556c2bcdf94b0a84ff798cd4bd5a316.zip
gcc-e37240b0b556c2bcdf94b0a84ff798cd4bd5a316.tar.gz
gcc-e37240b0b556c2bcdf94b0a84ff798cd4bd5a316.tar.bz2
re PR tree-optimization/46590 (long compile time with -O2 and many loops)
2019-04-01 Richard Biener <rguenther@suse.de> PR tree-optimization/46590 * domwalk.h (dom_walker::dom_walker): Consolidate constructors. (dom_walker::m_reachability): Add in place of... (dom_walker::m_skip_unreachable_blocks): ...this. * domwalk.c (dom_walker::dom_walker): Consoliate constructors. Move complex initialization ... (dom_walker::walk): Here. Especially compute m_bb_to_rpo lazily and initialize edge flags on each invocation. (dom_walker::bb_reachable): Use m_reachability. From-SVN: r270055
Diffstat (limited to 'gcc/domwalk.h')
-rw-r--r--gcc/domwalk.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/domwalk.h b/gcc/domwalk.h
index c3bc804..f865c61 100644
--- a/gcc/domwalk.h
+++ b/gcc/domwalk.h
@@ -60,13 +60,12 @@ public:
REACHABLE_BLOCKS_PRESERVING_FLAGS
};
- dom_walker (cdi_direction direction, enum reachability = ALL_BLOCKS);
-
/* You can provide a mapping of basic-block index to RPO if you
have that readily available or you do multiple walks. If you
specify NULL as BB_INDEX_TO_RPO dominator children will not be
walked in RPO order. */
- dom_walker (cdi_direction direction, enum reachability, int *bb_index_to_rpo);
+ dom_walker (cdi_direction direction, enum reachability = ALL_BLOCKS,
+ int *bb_index_to_rpo = NULL);
~dom_walker ();
@@ -94,7 +93,7 @@ private:
if it is set to CDI_POST_DOMINATORS, then we walk the post
dominator tree. */
const ENUM_BITFIELD (cdi_direction) m_dom_direction : 2;
- bool m_skip_unreachable_blocks;
+ const ENUM_BITFIELD (reachability) m_reachability : 2;
bool m_user_bb_to_rpo;
basic_block m_unreachable_dom;
int *m_bb_to_rpo;