[llvm-branch-commits] [llvm-branch] r323739 - Revert r323738; that was not the one I wanted to merge

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Jan 30 01:55:32 PST 2018


Author: hans
Date: Tue Jan 30 01:55:31 2018
New Revision: 323739

URL: http://llvm.org/viewvc/llvm-project?rev=323739&view=rev
Log:
Revert r323738; that was not the one I wanted to merge

Removed:
    llvm/branches/release_60/test/Transforms/CorrelatedValuePropagation/pr35807.ll
Modified:
    llvm/branches/release_60/   (props changed)
    llvm/branches/release_60/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp

Propchange: llvm/branches/release_60/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 30 01:55:31 2018
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,321751,321789,321791,321806,321862,321870,321872,321878,321980,321991,321993-321994,322003,322006,322053,322056,322103,322106,322108,322123,322131,322223,322272,322313,322372,322473,322623,322644,322724,322767,322875,322878-322879,322900,322904-322905,322973,322993,323034,323190,323307,323331,323369,323371,323384
+/llvm/trunk:155241,321751,321789,321791,321806,321862,321870,321872,321878,321980,321991,321993-321994,322003,322053,322056,322103,322106,322108,322123,322131,322223,322272,322313,322372,322473,322623,322644,322724,322767,322875,322878-322879,322900,322904-322905,322973,322993,323034,323190,323307,323331,323369,323371,323384

Modified: llvm/branches/release_60/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_60/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp?rev=323739&r1=323738&r2=323739&view=diff
==============================================================================
--- llvm/branches/release_60/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp (original)
+++ llvm/branches/release_60/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp Tue Jan 30 01:55:31 2018
@@ -14,7 +14,6 @@
 #include "llvm/Transforms/Scalar/CorrelatedValuePropagation.h"
 #include "llvm/ADT/DepthFirstIterator.h"
 #include "llvm/ADT/Optional.h"
-#include "llvm/ADT/PostOrderIterator.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/Statistic.h"
 #include "llvm/Analysis/GlobalsModRef.h"
@@ -121,8 +120,8 @@ static bool processSelect(SelectInst *S,
   return true;
 }
 
-static bool processPHI(PHINode *P, LazyValueInfo *LVI, const SimplifyQuery &SQ,
-                       DenseSet<BasicBlock *> &ReachableBlocks) {
+static bool processPHI(PHINode *P, LazyValueInfo *LVI,
+                       const SimplifyQuery &SQ) {
   bool Changed = false;
 
   BasicBlock *BB = P->getParent();
@@ -130,18 +129,7 @@ static bool processPHI(PHINode *P, LazyV
     Value *Incoming = P->getIncomingValue(i);
     if (isa<Constant>(Incoming)) continue;
 
-    // If the incoming value is coming from an unreachable block, replace
-    // it with undef and go on. This is good for two reasons:
-    // 1) We skip an LVI query for an unreachable block
-    // 2) We transform the incoming value so that the code below doesn't
-    //    mess around with IR in unreachable blocks.
-    BasicBlock *IncomingBB = P->getIncomingBlock(i);
-    if (!ReachableBlocks.count(IncomingBB)) {
-      P->setIncomingValue(i, UndefValue::get(P->getType()));
-      continue;
-    }
-
-    Value *V = LVI->getConstantOnEdge(Incoming, IncomingBB, BB, P);
+    Value *V = LVI->getConstantOnEdge(Incoming, P->getIncomingBlock(i), BB, P);
 
     // Look if the incoming value is a select with a scalar condition for which
     // LVI can tells us the value. In that case replace the incoming value with
@@ -573,14 +561,6 @@ static Constant *getConstantAt(Value *V,
 
 static bool runImpl(Function &F, LazyValueInfo *LVI, const SimplifyQuery &SQ) {
   bool FnChanged = false;
-
-  // Compute reachability from the entry block of this function via an RPO
-  // walk. We use this information when processing PHIs.
-  DenseSet<BasicBlock *> ReachableBlocks;
-  ReversePostOrderTraversal<Function *> RPOT(&F);
-  for (BasicBlock *BB : RPOT)
-    ReachableBlocks.insert(BB);
-
   // Visiting in a pre-order depth-first traversal causes us to simplify early
   // blocks before querying later blocks (which require us to analyze early
   // blocks).  Eagerly simplifying shallow blocks means there is strictly less
@@ -595,7 +575,7 @@ static bool runImpl(Function &F, LazyVal
         BBChanged |= processSelect(cast<SelectInst>(II), LVI);
         break;
       case Instruction::PHI:
-        BBChanged |= processPHI(cast<PHINode>(II), LVI, SQ, ReachableBlocks);
+        BBChanged |= processPHI(cast<PHINode>(II), LVI, SQ);
         break;
       case Instruction::ICmp:
       case Instruction::FCmp:

Removed: llvm/branches/release_60/test/Transforms/CorrelatedValuePropagation/pr35807.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_60/test/Transforms/CorrelatedValuePropagation/pr35807.ll?rev=323738&view=auto
==============================================================================
--- llvm/branches/release_60/test/Transforms/CorrelatedValuePropagation/pr35807.ll (original)
+++ llvm/branches/release_60/test/Transforms/CorrelatedValuePropagation/pr35807.ll (removed)
@@ -1,65 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -correlated-propagation -S %s | FileCheck %s
-
-target triple = "x86_64-apple-darwin17.4.0"
-
-define void @patatino() {
-; CHECK-LABEL: @patatino(
-; CHECK-NEXT:    br i1 undef, label [[BB3:%.*]], label [[BB4:%.*]]
-; CHECK:       bb3:
-; CHECK-NEXT:    br label [[BB3]]
-; CHECK:       bb4:
-; CHECK-NEXT:    br i1 undef, label [[BB40:%.*]], label [[BB22:%.*]]
-; CHECK:       bb7:
-; CHECK-NEXT:    br label [[BB14:%.*]]
-; CHECK:       bb12:
-; CHECK-NEXT:    br label [[BB14]]
-; CHECK:       bb14:
-; CHECK-NEXT:    [[TMP19:%.*]] = icmp sgt i32 undef, undef
-; CHECK-NEXT:    [[TMP20:%.*]] = select i1 [[TMP19]], i64 [[TMP20]], i64 0
-; CHECK-NEXT:    br i1 undef, label [[BB40]], label [[BB7:%.*]]
-; CHECK:       bb22:
-; CHECK-NEXT:    br label [[BB24:%.*]]
-; CHECK:       bb24:
-; CHECK-NEXT:    br label [[BB32:%.*]]
-; CHECK:       bb32:
-; CHECK-NEXT:    br i1 undef, label [[BB40]], label [[BB24]]
-; CHECK:       bb40:
-; CHECK-NEXT:    ret void
-;
-  br i1 undef, label %bb3, label %bb4
-
-bb3:
-  br label %bb3
-
-bb4:
-  br i1 undef, label %bb40, label %bb22
-
-bb7:
-  br label %bb14
-
-bb12:
-  br label %bb14
-
-; This block is unreachable. Due to the non-standard definition of
-; dominance in LLVM where uses in unreachable blocks are dominated
-; by anything, it contains an instruction of the form
-; %def = OP %def, %something
-bb14:
-  %tmp19 = icmp sgt i32 undef, undef
-  %tmp20 = select i1 %tmp19, i64 %tmp20, i64 0
-  br i1 undef, label %bb40, label %bb7
-
-bb22:
-  br label %bb24
-
-bb24:
-  br label %bb32
-
-bb32:
-  br i1 undef, label %bb40, label %bb24
-
-bb40:
-  %tmp41 = phi i64 [ 4, %bb4 ], [ %tmp20, %bb14 ], [ undef, %bb32 ]
-  ret void
-}




More information about the llvm-branch-commits mailing list