Files
c3c/test/test_suite/compile_time/ct_switch.c3t

64 lines
2.3 KiB
C

// #target: macos-x64
module test;
macro getisprime($x)
{
$switch ($x):
$case 1:
$case 2:
$case 3:
$case 5:
$case 7:
$case 11:
$case 13:
return "prime";
$case 4:
$case 6:
$case 8:
$case 9:
$case 10:
$case 12:
return "not_prime";
$case 17:
$default:
return "donnowifprime";
$endswitch;
}
extern fn void printf(char*, ...);
fn void main()
{
printf("%s\n", getisprime(3));
printf("%s\n", getisprime(12));
printf("%s\n", getisprime(4));
printf("%s\n", getisprime(100));
printf("%s\n", getisprime(17));
}
/* #expect: test.ll
@.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.1 = private unnamed_addr constant [6 x i8] c"prime\00", align 1
@.str.2 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.3 = private unnamed_addr constant [10 x i8] c"not_prime\00", align 1
@.str.4 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.5 = private unnamed_addr constant [10 x i8] c"not_prime\00", align 1
@.str.6 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.7 = private unnamed_addr constant [14 x i8] c"donnowifprime\00", align 1
@.str.8 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.9 = private unnamed_addr constant [14 x i8] c"donnowifprime\00", align 1
; Function Attrs: nounwind
declare void @printf(i8*, ...) #0
; Function Attrs: nounwind
define void @test.main() #0 {
entry:
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), [5 x i8]* bitcast ([6 x i8]* @.str.1 to [5 x i8]*))
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i32 0, i32 0), [9 x i8]* bitcast ([10 x i8]* @.str.3 to [9 x i8]*))
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i32 0, i32 0), [9 x i8]* bitcast ([10 x i8]* @.str.5 to [9 x i8]*))
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i32 0, i32 0), [13 x i8]* bitcast ([14 x i8]* @.str.7 to [13 x i8]*))
call void (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i32 0, i32 0), [13 x i8]* bitcast ([14 x i8]* @.str.9 to [13 x i8]*))
ret void
}