[llvm] r289147 - [SCCP] Make sure SCCP and ConstantFolding agree on undef >> a.
Davide Italiano via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 8 14:28:53 PST 2016
Author: davide
Date: Thu Dec 8 16:28:53 2016
New Revision: 289147
URL: http://llvm.org/viewvc/llvm-project?rev=289147&view=rev
Log:
[SCCP] Make sure SCCP and ConstantFolding agree on undef >> a.
Currently SCCP folds the value to -1, while ConstantProp folds to
0. This changes SCCP to do what ConstantFolding does.
Modified:
llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
llvm/trunk/test/Transforms/SCCP/undef-resolve.ll
Modified: llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SCCP.cpp?rev=289147&r1=289146&r2=289147&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/SCCP.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/SCCP.cpp Thu Dec 8 16:28:53 2016
@@ -1396,8 +1396,8 @@ bool SCCPSolver::ResolvedUndefsIn(Functi
break;
}
- // undef >>a X -> all ones
- markForcedConstant(&I, Constant::getAllOnesValue(ITy));
+ // undef >>a X -> 0
+ markForcedConstant(&I, Constant::getNullValue(ITy));
return true;
case Instruction::LShr:
case Instruction::Shl:
Modified: llvm/trunk/test/Transforms/SCCP/undef-resolve.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SCCP/undef-resolve.ll?rev=289147&r1=289146&r2=289147&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/SCCP/undef-resolve.ll (original)
+++ llvm/trunk/test/Transforms/SCCP/undef-resolve.ll Thu Dec 8 16:28:53 2016
@@ -135,7 +135,7 @@ define i32 @test6() {
%t = ashr i32 undef, 31
ret i32 %t
; CHECK-LABEL: @test6(
-; CHECK: ret i32 -1
+; CHECK: ret i32 0
}
; Make sure lshr produces a possible value
@@ -178,5 +178,5 @@ entry:
%shr4 = ashr i32 undef, zext (i1 icmp eq (i32* bitcast (i32 (i1)* @test11 to i32*), i32* @GV) to i32)
ret i32 %shr4
; CHECK-LABEL: @test11(
-; CHECK: ret i32 -1
+; CHECK: ret i32 0
}
More information about the llvm-commits
mailing list