public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Andrew Macleod <amacleod@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r13-1136] Clear invariant bit for inferred ranges.
Date: Thu, 16 Jun 2022 18:18:54 +0000 (GMT)	[thread overview]
Message-ID: <20220616181854.232A33848592@sourceware.org> (raw)

https://gcc.gnu.org/g:6c849e2fab3f682b715a81cb4ccc792f20c00eeb

commit r13-1136-g6c849e2fab3f682b715a81cb4ccc792f20c00eeb
Author: Andrew MacLeod <amacleod@redhat.com>
Date:   Thu Jun 16 12:44:33 2022 -0400

    Clear invariant bit for inferred ranges.
    
    The range of an invariant SSA (no outgoing edge range anywhere) is not tracked.
    If an inferred range is registered, remove the invariant flag.
    
            * gimple-range-cache.cc (ranger_cache::apply_inferred_ranges): If name
            was invaraint before, clear the invariant bit.
            * gimple-range-gori.cc (gori_map::set_range_invariant): Add a flag.
            * gimple-range-gori.h (gori_map::set_range_invariant): Adjust prototype.

Diff:
---
 gcc/gimple-range-cache.cc |  7 ++++++-
 gcc/gimple-range-gori.cc  | 10 +++++++---
 gcc/gimple-range-gori.h   |  2 +-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc
index f3494363a10..5df744184c4 100644
--- a/gcc/gimple-range-cache.cc
+++ b/gcc/gimple-range-cache.cc
@@ -1474,7 +1474,12 @@ ranger_cache::apply_inferred_ranges (gimple *s)
 	  if (!m_on_entry.get_bb_range (r, name, bb))
 	    exit_range (r, name, bb, RFD_READ_ONLY);
 	  if (r.intersect (infer.range (x)))
-	    m_on_entry.set_bb_range (name, bb, r);
+	    {
+	      m_on_entry.set_bb_range (name, bb, r);
+	      // If this range was invariant before, remove invariance.
+	      if (!m_gori.has_edge_range_p (name))
+		m_gori.set_range_invariant (name, false);
+	    }
 	}
     }
 }
diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc
index 0a3e54eae4e..a43e44c841e 100644
--- a/gcc/gimple-range-gori.cc
+++ b/gcc/gimple-range-gori.cc
@@ -499,12 +499,16 @@ gori_map::is_export_p (tree name, basic_block bb)
   return bitmap_bit_p (exports (bb), SSA_NAME_VERSION (name));
 }
 
-// Clear the m_maybe_variant bit so ranges will not be tracked for NAME.
+// Set or clear the m_maybe_variant bit to determine if ranges will be tracked
+// for NAME.  A clear bit means they will NOT be tracked.
 
 void
-gori_map::set_range_invariant (tree name)
+gori_map::set_range_invariant (tree name, bool invariant)
 {
-  bitmap_clear_bit (m_maybe_variant, SSA_NAME_VERSION (name));
+  if (invariant)
+    bitmap_clear_bit (m_maybe_variant, SSA_NAME_VERSION (name));
+  else
+    bitmap_set_bit (m_maybe_variant, SSA_NAME_VERSION (name));
 }
 
 // Return true if NAME is an import to block BB.
diff --git a/gcc/gimple-range-gori.h b/gcc/gimple-range-gori.h
index f5f691fe424..3d57ab94624 100644
--- a/gcc/gimple-range-gori.h
+++ b/gcc/gimple-range-gori.h
@@ -94,7 +94,7 @@ public:
   bool is_import_p (tree name, basic_block bb);
   bitmap exports (basic_block bb);
   bitmap imports (basic_block bb);
-  void set_range_invariant (tree name);
+  void set_range_invariant (tree name, bool invariant = true);
 
   void dump (FILE *f);
   void dump (FILE *f, basic_block bb, bool verbose = true);


                 reply	other threads:[~2022-06-16 18:18 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220616181854.232A33848592@sourceware.org \
    --to=amacleod@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).