diff options
author | Richard Biener <rguenther@suse.de> | 2019-04-01 11:36:25 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-04-01 11:36:25 +0000 |
commit | e37240b0b556c2bcdf94b0a84ff798cd4bd5a316 (patch) | |
tree | c0f105af1a80974454d81ff0d3c560467a115568 /gcc/domwalk.h | |
parent | 90f1430589e2f3efa8136346615fc08edfd936f3 (diff) | |
download | gcc-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.h | 7 |
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; |