[PATCH] D42417: Re-apply [SCEV] Fix isLoopEntryGuardedByCond usage

Sanjoy Das via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 4 22:52:50 PST 2018


sanjoy added inline comments.


================
Comment at: llvm/trunk/lib/Analysis/ScalarEvolution.cpp:8672
     const Loop *L = LAR->getLoop();
-    if (isLoopEntryGuardedByCond(L, Pred, LAR->getStart(), RHS) &&
+    if (isAvailableAtLoopEntry(RHS, L) &&
+        isLoopEntryGuardedByCond(L, Pred, LAR->getStart(), RHS) &&
----------------
I still suspect (but am not sure) that this is too "deep" in the call stack to bail out like this -- I suspect the bug is somewhere up in a caller since the query {A,+,B}<L> `pred` <thing not available on L's entry> seems nonsensical.

I want to throw this in a debugger and take a look, but the attached test case does not fail for me on rL324202 (with `opt -indvars inner-loop.ll`).  Can you please verify that the test case fails for you without the SCEV changes?


Repository:
  rL LLVM

https://reviews.llvm.org/D42417





More information about the llvm-commits mailing list