mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +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());
|
||||
if (NewR.isEmptySet())
|
||||
return markOverdefined();
|
||||
else if (NewR.isFullSet()) {
|
||||
Tag = undefined;
|
||||
return true;
|
||||
}
|
||||
|
||||
Tag = constantrange;
|
||||
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