summaryrefslogtreecommitdiff
path: root/gcc/ipa-str-reorg-instance-interleave.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ipa-str-reorg-instance-interleave.c')
-rw-r--r--gcc/ipa-str-reorg-instance-interleave.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/gcc/ipa-str-reorg-instance-interleave.c b/gcc/ipa-str-reorg-instance-interleave.c
index d53d290f980..1d0213f1427 100644
--- a/gcc/ipa-str-reorg-instance-interleave.c
+++ b/gcc/ipa-str-reorg-instance-interleave.c
@@ -1913,6 +1913,7 @@ static bool is_array_access( tree);
static unsigned int
reorg_perf_qual ( Info *info)
{
+ DEBUG_L("reorg_perf_qual:\n");
#if 1
// TBD use design in doc but mark ReorgTypes
// (do_instance_interleave) that qualify instead of deleting them
@@ -1926,17 +1927,6 @@ reorg_perf_qual ( Info *info)
(*(info->reorg_type))[i].do_instance_interleave = true;
}
#else
-
- // This dom sequence is broken and I'm stalled on it.
- // I used the sequence before but the upstream code (not
- // my pass) is broken.
- if ( dom_info_available_p ( CDI_DOMINATORS) )
- {
- free_dominance_info ( CDI_DOMINATORS);
- }
-
- calculate_dominance_info (CDI_DOMINATORS);
-
// We are doing a quick and dirty version of performance
// qualification for testing purposes and possibly the
// initial version of for the main branch.
@@ -1962,7 +1952,15 @@ reorg_perf_qual ( Info *info)
FOR_EACH_FUNCTION_WITH_GIMPLE_BODY ( node) {
struct function *func = DECL_STRUCT_FUNCTION ( node->decl);
// Ulgy GCC idiom with global pointer to current function.
+ // However, the dominace calculations other things need it.
push_cfun ( func);
+
+ if ( dom_info_available_p ( CDI_DOMINATORS) )
+ {
+ free_dominance_info ( CDI_DOMINATORS);
+ }
+ calculate_dominance_info (CDI_DOMINATORS);
+
// TBD
std::vector<perf_loop_info> loop_perf;
loop_perf.reserve ( number_of_loops ( func));