https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109417

--- Comment #2 from Andrew Macleod <amacleod at redhat dot com> ---
(In reply to Jakub Jelinek from comment #1)
> Started with r13-6945-g429a7a88438cc80e

I've run into this before.

_54 = _22  
is processed, and we cache _22 as a dependency fo _54.
then we do some propagation and rewrite this statement as 
_54 = 3

When we look at _54 later, it still shows the cached dependency as _22,  but
there is no longer a _22 in the IL.   

We are trapping because may_recompute_p is expecting the dependency to be up to
date.  The fix is to check if it is in the FREE_LIST or not as well.

Patch in testing.

diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc
index 5f4313b27dd..2a575c006fc 100644
--- a/gcc/gimple-range-gori.cc
+++ b/gcc/gimple-range-gori.cc
@@ -1314,7 +1314,7 @@ gori_compute::may_recompute_p (tree name, basic_block bb,
int depth)
   tree dep2 = depend2 (name);

   // If the first dependency is not set, there is no recomputation.
-  if (!dep1)
+  if (!dep1 || SSA_NAME_IN_FREE_LIST (dep1))
     return false;

Reply via email to