mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
module varargs;
|
|
|
|
extern func void printf(char* c, ...);
|
|
|
|
func void test()
|
|
{
|
|
printf("%d\n", true);
|
|
printf("%d\n", 123);
|
|
printf("%f\n", 12.3);
|
|
ichar x1 = -123;
|
|
bool b = false;
|
|
float z1 = 12.3;
|
|
printf("%d\n", b);
|
|
printf("%d\n", x1);
|
|
printf("%f\n", z1);
|
|
}
|
|
|
|
// #expect: varargs.ll
|
|
|
|
%x1 = alloca i8, align 1
|
|
%b = alloca i8, align 1
|
|
%z1 = alloca float, align 4
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 1)
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i32 0, i32 0), i32 123)
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i32 0, i32 0), double 1.230000e+01)
|
|
store i8 -123, i8* %x1, align 1
|
|
store i8 0, i8* %b, align 1
|
|
store float 0x40289999A0000000, float* %z1, align 4
|
|
%0 = load i8, i8* %b, align 1
|
|
%1 = trunc i8 %0 to i1
|
|
%boolsi = zext i1 %1 to i32
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i32 0, i32 0), i32 %boolsi)
|
|
%2 = load i8, i8* %x1, align 1
|
|
%sisiext = sext i8 %2 to i32
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i32 0, i32 0), i32 %sisiext)
|
|
%3 = load float, float* %z1, align 4
|
|
%fpfpext = fpext float %3 to double
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i32 0, i32 0), double %fpfpext) |