[llvm-branch-commits] [llvm-branch] r214684 - Merging r214423:

Bill Wendling isanbard at gmail.com
Sun Aug 3 21:22:44 PDT 2014


Author: void
Date: Sun Aug  3 23:22:44 2014
New Revision: 214684

URL: http://llvm.org/viewvc/llvm-project?rev=214684&view=rev
Log:
Merging r214423:
------------------------------------------------------------------------
r214423 | hfinkel | 2014-07-31 12:13:38 -0700 (Thu, 31 Jul 2014) | 9 lines

Fix ScalarEvolutionExpander when creating a PHI in a block with duplicate predecessors

It seems that when I fixed this, almost exactly a year ago, I did not quite do
it correctly. When we have duplicate block predecessors, we can indeed not have
different incoming values for the same block, but we *must* have duplicate
entries. So, instead of skipping the duplicates, we explicitly add the
duplicate incoming values.

Fixes PR20442.
------------------------------------------------------------------------

Added:
    llvm/branches/release_35/test/CodeGen/PowerPC/pr20442.ll
      - copied unchanged from r214423, llvm/trunk/test/CodeGen/PowerPC/pr20442.ll
Modified:
    llvm/branches/release_35/   (props changed)
    llvm/branches/release_35/lib/Analysis/ScalarEvolutionExpander.cpp

Propchange: llvm/branches/release_35/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Aug  3 23:22:44 2014
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,213653,213749,213773,213793,213798,213815,213847,213880,213884,213894-213895,213915,214129,214180,214287,214331,214429,214519
+/llvm/trunk:155241,213653,213749,213773,213793,213798,213815,213847,213880,213884,213894-213895,213915,214129,214180,214287,214331,214423,214429,214519

Modified: llvm/branches/release_35/lib/Analysis/ScalarEvolutionExpander.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_35/lib/Analysis/ScalarEvolutionExpander.cpp?rev=214684&r1=214683&r2=214684&view=diff
==============================================================================
--- llvm/branches/release_35/lib/Analysis/ScalarEvolutionExpander.cpp (original)
+++ llvm/branches/release_35/lib/Analysis/ScalarEvolutionExpander.cpp Sun Aug  3 23:22:44 2014
@@ -1443,8 +1443,12 @@ Value *SCEVExpander::visitAddRecExpr(con
     Constant *One = ConstantInt::get(Ty, 1);
     for (pred_iterator HPI = HPB; HPI != HPE; ++HPI) {
       BasicBlock *HP = *HPI;
-      if (!PredSeen.insert(HP))
+      if (!PredSeen.insert(HP)) {
+        // There must be an incoming value for each predecessor, even the
+        // duplicates!
+        CanonicalIV->addIncoming(CanonicalIV->getIncomingValueForBlock(HP), HP);
         continue;
+      }
 
       if (L->contains(HP)) {
         // Insert a unit add instruction right before the terminator





More information about the llvm-branch-commits mailing list