mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 00:11:00 +00:00
908504347b
Update these tests to not use the same name even though the type of the value differs. After PR411 hits, type planes will be gone and it will be illegal for a name to be used twice, regardless of type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33660 91177308-0d34-0410-b5e6-96231b3b80d8
54 lines
1.1 KiB
LLVM
54 lines
1.1 KiB
LLVM
; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
|
|
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
|
|
; RUN: diff %t1.ll %t2.ll
|
|
|
|
implementation
|
|
|
|
declare i32 @"atoi"(i8 *)
|
|
|
|
define i63 @"fib"(i63 %n)
|
|
begin
|
|
icmp ult i63 %n, 2 ; {i1}:0
|
|
br i1 %0, label %BaseCase, label %RecurseCase
|
|
|
|
BaseCase:
|
|
ret i63 1
|
|
|
|
RecurseCase:
|
|
%n2 = sub i63 %n, 2
|
|
%n1 = sub i63 %n, 1
|
|
%f2 = call i63(i63) * @fib(i63 %n2)
|
|
%f1 = call i63(i63) * @fib(i63 %n1)
|
|
%result = add i63 %f2, %f1
|
|
ret i63 %result
|
|
end
|
|
|
|
define i63 @"realmain"(i32 %argc, i8 ** %argv)
|
|
begin
|
|
icmp eq i32 %argc, 2 ; {i1}:0
|
|
br i1 %0, label %HasArg, label %Continue
|
|
HasArg:
|
|
; %n1 = atoi(argv[1])
|
|
%n1 = add i32 1, 1
|
|
br label %Continue
|
|
|
|
Continue:
|
|
%n = phi i32 [%n1, %HasArg], [1, %0]
|
|
%N = sext i32 %n to i63
|
|
%F = call i63(i63) *@fib(i63 %N)
|
|
ret i63 %F
|
|
end
|
|
|
|
define i63 @"trampoline"(i63 %n, i63(i63)* %fibfunc)
|
|
begin
|
|
%F = call i63(i63) *%fibfunc(i63 %n)
|
|
ret i63 %F
|
|
end
|
|
|
|
define i32 @"main"()
|
|
begin
|
|
%Result = call i63 @trampoline(i63 10, i63(i63) *@fib)
|
|
%Result2 = trunc i63 %Result to i32
|
|
ret i32 %Result2
|
|
end
|