mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Fix a bug in LazyValueInfo that CorrelatedValuePropagation exposed: In the LVI lattice, undef and the full set ConstantRange should not
be treated as equivalent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112843 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bb5a039b76
commit
66048c2169
@ -173,10 +173,6 @@ public:
|
|||||||
assert(isUndefined());
|
assert(isUndefined());
|
||||||
if (NewR.isEmptySet())
|
if (NewR.isEmptySet())
|
||||||
return markOverdefined();
|
return markOverdefined();
|
||||||
else if (NewR.isFullSet()) {
|
|
||||||
Tag = undefined;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tag = constantrange;
|
Tag = constantrange;
|
||||||
Range = NewR;
|
Range = NewR;
|
||||||
|
@ -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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user