mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Add test cases for Jay's r129641 and fix a 32-bit-centric testcase in a file with a 64-bit datalayout.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129643 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cbc5f407ef
commit
338af5e749
@ -197,25 +197,25 @@ declare i1 @test11a()
|
|||||||
define i1 @test11() {
|
define i1 @test11() {
|
||||||
entry:
|
entry:
|
||||||
%a = alloca i32
|
%a = alloca i32
|
||||||
%i = ptrtoint i32* %a to i32
|
%i = ptrtoint i32* %a to i64
|
||||||
%b = call i1 @test11a()
|
%b = call i1 @test11a()
|
||||||
br i1 %b, label %one, label %two
|
br i1 %b, label %one, label %two
|
||||||
|
|
||||||
one:
|
one:
|
||||||
%x = phi i32 [%i, %entry], [%y, %two]
|
%x = phi i64 [%i, %entry], [%y, %two]
|
||||||
%c = call i1 @test11a()
|
%c = call i1 @test11a()
|
||||||
br i1 %c, label %two, label %end
|
br i1 %c, label %two, label %end
|
||||||
|
|
||||||
two:
|
two:
|
||||||
%y = phi i32 [%i, %entry], [%x, %one]
|
%y = phi i64 [%i, %entry], [%x, %one]
|
||||||
%d = call i1 @test11a()
|
%d = call i1 @test11a()
|
||||||
br i1 %d, label %one, label %end
|
br i1 %d, label %one, label %end
|
||||||
|
|
||||||
end:
|
end:
|
||||||
%f = phi i32 [ %x, %one], [%y, %two]
|
%f = phi i64 [ %x, %one], [%y, %two]
|
||||||
; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
|
; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
|
||||||
; even though %f must equal %i at this point
|
; even though %f must equal %i at this point
|
||||||
%g = inttoptr i32 %f to i32*
|
%g = inttoptr i64 %f to i32*
|
||||||
store i32 10, i32* %g
|
store i32 10, i32* %g
|
||||||
%z = call i1 @test11a()
|
%z = call i1 @test11a()
|
||||||
ret i1 %z
|
ret i1 %z
|
||||||
@ -544,3 +544,79 @@ BB2:
|
|||||||
; CHECK-NEXT: %C = add nuw i32 %A, 1
|
; CHECK-NEXT: %C = add nuw i32 %A, 1
|
||||||
; CHECK-NEXT: ret i32 %C
|
; CHECK-NEXT: ret i32 %C
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; Same as test11, but used to be missed due to a bug.
|
||||||
|
declare i1 @test25a()
|
||||||
|
|
||||||
|
define i1 @test25() {
|
||||||
|
entry:
|
||||||
|
%a = alloca i32
|
||||||
|
%i = ptrtoint i32* %a to i64
|
||||||
|
%b = call i1 @test25a()
|
||||||
|
br i1 %b, label %one, label %two
|
||||||
|
|
||||||
|
one:
|
||||||
|
%x = phi i64 [%y, %two], [%i, %entry]
|
||||||
|
%c = call i1 @test25a()
|
||||||
|
br i1 %c, label %two, label %end
|
||||||
|
|
||||||
|
two:
|
||||||
|
%y = phi i64 [%x, %one], [%i, %entry]
|
||||||
|
%d = call i1 @test25a()
|
||||||
|
br i1 %d, label %one, label %end
|
||||||
|
|
||||||
|
end:
|
||||||
|
%f = phi i64 [ %x, %one], [%y, %two]
|
||||||
|
; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
|
||||||
|
; even though %f must equal %i at this point
|
||||||
|
%g = inttoptr i64 %f to i32*
|
||||||
|
store i32 10, i32* %g
|
||||||
|
%z = call i1 @test25a()
|
||||||
|
ret i1 %z
|
||||||
|
; CHECK: @test25
|
||||||
|
; CHECK-NOT: phi i32
|
||||||
|
; CHECK: ret i1 %z
|
||||||
|
}
|
||||||
|
|
||||||
|
declare i1 @test26a()
|
||||||
|
|
||||||
|
define i1 @test26(i32 %n) {
|
||||||
|
entry:
|
||||||
|
%a = alloca i32
|
||||||
|
%i = ptrtoint i32* %a to i64
|
||||||
|
%b = call i1 @test26a()
|
||||||
|
br label %one
|
||||||
|
|
||||||
|
one:
|
||||||
|
%x = phi i64 [%y, %two], [%w, %three], [%i, %entry]
|
||||||
|
%c = call i1 @test26a()
|
||||||
|
switch i32 %n, label %end [
|
||||||
|
i32 2, label %two
|
||||||
|
i32 3, label %three
|
||||||
|
]
|
||||||
|
|
||||||
|
two:
|
||||||
|
%y = phi i64 [%x, %one], [%w, %three]
|
||||||
|
%d = call i1 @test26a()
|
||||||
|
switch i32 %n, label %end [
|
||||||
|
i32 10, label %one
|
||||||
|
i32 30, label %three
|
||||||
|
]
|
||||||
|
|
||||||
|
three:
|
||||||
|
%w = phi i64 [%y, %two], [%x, %one]
|
||||||
|
%e = call i1 @test26a()
|
||||||
|
br i1 %e, label %one, label %two
|
||||||
|
|
||||||
|
end:
|
||||||
|
%f = phi i64 [ %x, %one], [%y, %two]
|
||||||
|
; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
|
||||||
|
; even though %f must equal %i at this point
|
||||||
|
%g = inttoptr i64 %f to i32*
|
||||||
|
store i32 10, i32* %g
|
||||||
|
%z = call i1 @test26a()
|
||||||
|
ret i1 %z
|
||||||
|
; CHECK: @test26
|
||||||
|
; CHECK-NOT: phi i32
|
||||||
|
; CHECK: ret i1 %z
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user