diff options
-rw-r--r-- | llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/CorrelatedValuePropagation/mul.ll | 8 |
2 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp b/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp index ba16afaa896..6be715c1036 100644 --- a/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp +++ b/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp @@ -860,6 +860,7 @@ static bool runImpl(Function &F, LazyValueInfo *LVI, DominatorTree *DT, break; case Instruction::Add: case Instruction::Sub: + case Instruction::Mul: BBChanged |= processBinOp(cast<BinaryOperator>(II), LVI); break; case Instruction::And: diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/mul.ll b/llvm/test/Transforms/CorrelatedValuePropagation/mul.ll index 786c1b5c880..288d114cb37 100644 --- a/llvm/test/Transforms/CorrelatedValuePropagation/mul.ll +++ b/llvm/test/Transforms/CorrelatedValuePropagation/mul.ll @@ -7,7 +7,7 @@ define i8 @test0(i8 %a) { ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 3 ; CHECK-NEXT: br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]] ; CHECK: bb: -; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[A]], 50 +; CHECK-NEXT: [[MUL:%.*]] = mul nuw nsw i8 [[A]], 50 ; CHECK-NEXT: ret i8 [[MUL]] ; CHECK: exit: ; CHECK-NEXT: ret i8 0 @@ -30,7 +30,7 @@ define i8 @test1(i8 %a) { ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 4 ; CHECK-NEXT: br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]] ; CHECK: bb: -; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[A]], 50 +; CHECK-NEXT: [[MUL:%.*]] = mul nuw i8 [[A]], 50 ; CHECK-NEXT: ret i8 [[MUL]] ; CHECK: exit: ; CHECK-NEXT: ret i8 0 @@ -53,7 +53,7 @@ define i8 @test2(i8 %a) { ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 6 ; CHECK-NEXT: br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]] ; CHECK: bb: -; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[A]], 50 +; CHECK-NEXT: [[MUL:%.*]] = mul nuw i8 [[A]], 50 ; CHECK-NEXT: ret i8 [[MUL]] ; CHECK: exit: ; CHECK-NEXT: ret i8 0 @@ -101,7 +101,7 @@ define i8 @test4(i8 %a) { ; CHECK-NEXT: [[COND:%.*]] = and i1 [[CMP1]], [[CMP2]] ; CHECK-NEXT: br i1 [[COND]], label [[BB:%.*]], label [[EXIT:%.*]] ; CHECK: bb: -; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[A]], 50 +; CHECK-NEXT: [[MUL:%.*]] = mul nsw i8 [[A]], 50 ; CHECK-NEXT: ret i8 [[MUL]] ; CHECK: exit: ; CHECK-NEXT: ret i8 0 |