Ranger wants to prepopulate all the export blocks so that it has an initial invariant set of names. GORI consumers shouldn't be penalized for ranger requirements. This way any gori client remains lightweight.
Bootstraps on x86_64-pc-linux-gnu with no regressions. Pushed. Andrew
>From cb33af1a62b09576b0782ac36e5f5cff049f1035 Mon Sep 17 00:00:00 2001 From: Andrew MacLeod <amacl...@redhat.com> Date: Tue, 25 May 2021 13:53:25 -0400 Subject: [PATCH 2/8] fully populate the export list from range_cache, not gori_compute. Ranger wants to prepopulate all the export blocks so that it has an initial invariant set of names. GORI consumers shouldn't be penalized for ranger requirements. This way any gori client remains lightweight. * gimple-range-cache.cc (ranger_cache::ranger_cache): Move initial export cache filling to here. * gimple-range-gori.cc (gori_compute::gori_compute) : From Here. --- gcc/gimple-range-cache.cc | 10 ++++++++++ gcc/gimple-range-gori.cc | 10 ---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index 2c922e32913..8ad76048272 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -618,6 +618,16 @@ ranger_cache::ranger_cache (gimple_ranger &q) : query (q) m_poor_value_list.safe_grow_cleared (20); m_poor_value_list.truncate (0); m_temporal = new temporal_cache; + unsigned x, lim = last_basic_block_for_fn (cfun); + // Calculate outgoing range info upfront. This will fully populate the + // m_maybe_variant bitmap which will help eliminate processing of names + // which never have their ranges adjusted. + for (x = 0; x < lim ; x++) + { + basic_block bb = BASIC_BLOCK_FOR_FN (cfun, x); + if (bb) + exports (bb); + } } ranger_cache::~ranger_cache () diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc index 074c025be37..e30049edfbd 100644 --- a/gcc/gimple-range-gori.cc +++ b/gcc/gimple-range-gori.cc @@ -458,16 +458,6 @@ gori_compute::gori_compute () // Create a boolean_type true and false range. m_bool_zero = int_range<2> (boolean_false_node, boolean_false_node); m_bool_one = int_range<2> (boolean_true_node, boolean_true_node); - unsigned x, lim = last_basic_block_for_fn (cfun); - // Calculate outgoing range info upfront. This will fully populate the - // m_maybe_variant bitmap which will help eliminate processing of names - // which never have their ranges adjusted. - for (x = 0; x < lim ; x++) - { - basic_block bb = BASIC_BLOCK_FOR_FN (cfun, x); - if (bb) - exports (bb); - } } // Provide a default of VARYING for all incoming SSA names. -- 2.17.2