This is a small optimization which can improve how many times are need through 
the update loop.
It can reduce the number of times in the update loop by maybe 1 times.

Bootstrapped and tested on x86_64-linux-gnu.

gcc/ChangeLog:

        * cfgexpand.cc (vars_ssa_cache::operator()): Update the cache if the 
use is already
        has a cache.

Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
---
 gcc/cfgexpand.cc | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc
index 0e76d340d26..277ef659f30 100644
--- a/gcc/cfgexpand.cc
+++ b/gcc/cfgexpand.cc
@@ -766,7 +766,12 @@ vars_ssa_cache::operator() (tree name)
 
       /* If the cache exists for the use, don't try to recreate it. */
       if (exists (use))
-       continue;
+       {
+         /* Update the cache here, this can reduce the number of
+            times through the update loop below.  */
+         update (old_name, use);
+         continue;
+       }
 
       /* Create the cache bitmap for the use and also
         so we don't go into an infinite loop for some phi nodes with loops.  */
-- 
2.43.0

Reply via email to