[llvm] r277607 - Revert "Teach CorrelatedValuePropagation to mark adds as no wrap"

Renato Golin via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 3 09:20:49 PDT 2016


Author: rengolin
Date: Wed Aug  3 11:20:48 2016
New Revision: 277607

URL: http://llvm.org/viewvc/llvm-project?rev=277607&view=rev
Log:
Revert "Teach CorrelatedValuePropagation to mark adds as no wrap"

This reverts commit r277592, trying to fix the AArch64 42VMA buildbot.

Removed:
    llvm/trunk/test/Transforms/CorrelatedValuePropagation/add.ll
Modified:
    llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp?rev=277607&r1=277606&r2=277607&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp Wed Aug  3 11:20:48 2016
@@ -18,7 +18,6 @@
 #include "llvm/Analysis/InstructionSimplify.h"
 #include "llvm/Analysis/LazyValueInfo.h"
 #include "llvm/IR/CFG.h"
-#include "llvm/IR/ConstantRange.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/Function.h"
 #include "llvm/IR/Instructions.h"
@@ -382,59 +381,6 @@ static bool processSDiv(BinaryOperator *
   return true;
 }
 
-static bool processAdd(BinaryOperator *AddOp, LazyValueInfo *LVI) {
-  typedef OverflowingBinaryOperator OBO;
-
-  if (AddOp->getType()->isVectorTy() || hasLocalDefs(AddOp))
-    return false;
-
-  bool NSW = AddOp->hasNoSignedWrap();
-  bool NUW = AddOp->hasNoUnsignedWrap();
-  if (NSW && NUW)
-    return false;
-
-  BasicBlock *BB = AddOp->getParent();
-
-  Value *LHS = AddOp->getOperand(0);
-  Value *RHS = AddOp->getOperand(1);
-
-  ConstantRange LRange = LVI->getConstantRange(LHS, BB, AddOp);
-
-  // Initialize RRange only if we need it. If we know that guaranteed no wrap
-  // range for the given LHS range is empty don't spend time calculating the
-  // range for the RHS.
-  Optional<ConstantRange> RRange;
-  auto LazyRRange = [&] () {
-      if (!RRange)
-        RRange = LVI->getConstantRange(RHS, BB, AddOp);
-      return RRange.getValue();
-  };
-
-  bool Changed = false;
-  if (!NUW) {
-    ConstantRange NUWRange =
-            LRange.makeGuaranteedNoWrapRegion(BinaryOperator::Add, LRange,
-                                              OBO::NoUnsignedWrap);
-    if (!NUWRange.isEmptySet()) {
-      bool NewNUW = NUWRange.contains(LazyRRange());
-      AddOp->setHasNoUnsignedWrap(NewNUW);
-      Changed |= NewNUW;
-    }
-  }
-  if (!NSW) {
-    ConstantRange NSWRange =
-            LRange.makeGuaranteedNoWrapRegion(BinaryOperator::Add, LRange,
-                                              OBO::NoSignedWrap);
-    if (!NSWRange.isEmptySet()) {
-      bool NewNSW = NSWRange.contains(LazyRRange());
-      AddOp->setHasNoSignedWrap(NewNSW);
-      Changed |= NewNSW;
-    }
-  }
-
-  return Changed;
-}
-
 static Constant *getConstantAt(Value *V, Instruction *At, LazyValueInfo *LVI) {
   if (Constant *C = LVI->getConstant(V, At->getParent(), At))
     return C;
@@ -490,9 +436,6 @@ static bool runImpl(Function &F, LazyVal
       case Instruction::SDiv:
         BBChanged |= processSDiv(cast<BinaryOperator>(II), LVI);
         break;
-      case Instruction::Add:
-        BBChanged |= processAdd(cast<BinaryOperator>(II), LVI);
-        break;
       }
     }
 

Removed: llvm/trunk/test/Transforms/CorrelatedValuePropagation/add.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/CorrelatedValuePropagation/add.ll?rev=277606&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/CorrelatedValuePropagation/add.ll (original)
+++ llvm/trunk/test/Transforms/CorrelatedValuePropagation/add.ll (removed)
@@ -1,91 +0,0 @@
-; RUN: opt < %s -correlated-propagation -S | FileCheck %s
-
-; CHECK-LABEL: @test0(
-define void @test0(i32 %a) {
-entry:
-  %cmp = icmp slt i32 %a, 100
-  br i1 %cmp, label %bb, label %exit
-
-bb:
-; CHECK: %add = add nsw i32 %a, 1
-  %add = add i32 %a, 1
-  br label %exit
-
-exit:
-  ret void
-}
-
-; CHECK-LABEL: @test1(
-define void @test1(i32 %a) {
-entry:
-  %cmp = icmp ult i32 %a, 100
-  br i1 %cmp, label %bb, label %exit
-
-bb:
-; CHECK: %add = add nuw nsw i32 %a, 1
-  %add = add i32 %a, 1
-  br label %exit
-
-exit:
-  ret void
-}
-
-; CHECK-LABEL: @test2(
-define void @test2(i32 %a) {
-entry:
-  %cmp = icmp ult i32 %a, -1
-  br i1 %cmp, label %bb, label %exit
-
-bb:
-; CHECK: %add = add nuw i32 %a, 1
-  %add = add i32 %a, 1
-  br label %exit
-
-exit:
-  ret void
-}
-
-; CHECK-LABEL: @test3(
-define void @test3(i32 %a) {
-entry:
-  %cmp = icmp ule i32 %a, -1
-  br i1 %cmp, label %bb, label %exit
-
-bb:
-; CHECK: %add = add i32 %a, 1
-  %add = add i32 %a, 1
-  br label %exit
-
-exit:
-  ret void
-}
-
-; CHECK-LABEL: @test4(
-define void @test4(i32 %a) {
-entry:
-  %cmp = icmp slt i32 %a, 2147483647
-  br i1 %cmp, label %bb, label %exit
-
-bb:
-; CHECK: %add = add nsw i32 %a, 1
-  %add = add i32 %a, 1
-  br label %exit
-
-exit:
-  ret void
-}
-
-; CHECK-LABEL: @test5(
-define void @test5(i32 %a) {
-entry:
-  %cmp = icmp sle i32 %a, 2147483647
-  br i1 %cmp, label %bb, label %exit
-
-bb:
-; CHECK: %add = add i32 %a, 1
-  %add = add i32 %a, 1
-  br label %exit
-
-exit:
-  ret void
-}




More information about the llvm-commits mailing list