[llvm-commits] [llvm] r112843 - in /llvm/trunk: lib/Analysis/LazyValueInfo.cpp test/Transforms/CorrelatedValuePropagation/2010-09-02-Trunc.ll
Owen Anderson
resistor at mac.com
Thu Sep 2 11:23:58 PDT 2010
Author: resistor
Date: Thu Sep 2 13:23:58 2010
New Revision: 112843
URL: http://llvm.org/viewvc/llvm-project?rev=112843&view=rev
Log:
Fix a bug in LazyValueInfo that CorrelatedValuePropagation exposed: In the LVI lattice, undef and the full set ConstantRange should not
be treated as equivalent.
Added:
llvm/trunk/test/Transforms/CorrelatedValuePropagation/2010-09-02-Trunc.ll
Modified:
llvm/trunk/lib/Analysis/LazyValueInfo.cpp
Modified: llvm/trunk/lib/Analysis/LazyValueInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LazyValueInfo.cpp?rev=112843&r1=112842&r2=112843&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/LazyValueInfo.cpp (original)
+++ llvm/trunk/lib/Analysis/LazyValueInfo.cpp Thu Sep 2 13:23:58 2010
@@ -173,10 +173,6 @@
assert(isUndefined());
if (NewR.isEmptySet())
return markOverdefined();
- else if (NewR.isFullSet()) {
- Tag = undefined;
- return true;
- }
Tag = constantrange;
Range = NewR;
Added: llvm/trunk/test/Transforms/CorrelatedValuePropagation/2010-09-02-Trunc.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/CorrelatedValuePropagation/2010-09-02-Trunc.ll?rev=112843&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/CorrelatedValuePropagation/2010-09-02-Trunc.ll (added)
+++ llvm/trunk/test/Transforms/CorrelatedValuePropagation/2010-09-02-Trunc.ll Thu Sep 2 13:23:58 2010
@@ -0,0 +1,25 @@
+; RUN: opt -S < %s -correlated-propagation | FileCheck %s
+
+; CHECK: @check
+define i16 @test(i32 %a, i1 %b) {
+entry:
+ %c = icmp eq i32 %a, 0
+ br i1 %c, label %left, label %right
+
+right:
+ %d = trunc i32 %a to i1
+ br label %merge
+
+left:
+ br i1 %b, label %merge, label %other
+
+other:
+ ret i16 23
+
+merge:
+ %f = phi i1 [%b, %left], [%d, %right]
+; CHECK: select i1 %f, i16 1, i16 0
+ %h = select i1 %f, i16 1, i16 0
+; CHECK: ret i16 %h
+ ret i16 %h
+}
\ No newline at end of file
More information about the llvm-commits
mailing list