Files
c3c/test/test_suite/statements/if_tests.c3t
2023-04-28 19:11:57 +02:00

71 lines
1.3 KiB
Plaintext

module iftest;
fn void test1(int x)
{
if (x > 0)
{
defer x += 1;
}
else
{}
}
fn void test2(int x)
{
if (x > 0)
{
}
else
{}
}
fn void test3(int x)
{
if (x > 0)
{}
else { x += 1; }
}
/* #expect: iftest.ll
define void @iftest.test1(i32 %0) #0 {
entry:
%x = alloca i32, align 4
store i32 %0, ptr %x, align 4
%1 = load i32, ptr %x, align 4
%gt = icmp sgt i32 %1, 0
br i1 %gt, label %if.then, label %if.exit
if.then: ; preds = %entry
%2 = load i32, ptr %x, align 4
%add = add i32 %2, 1
store i32 %add, ptr %x, align 4
br label %if.exit
if.exit: ; preds = %if.then, %entry
ret void
}
define void @iftest.test2(i32 %0) #0 {
entry:
%gt = icmp sgt i32 %0, 0
ret void
}
define void @iftest.test3(i32 %0) #0 {
entry:
%x = alloca i32, align 4
store i32 %0, ptr %x, align 4
%1 = load i32, ptr %x, align 4
%gt = icmp sgt i32 %1, 0
br i1 %gt, label %if.exit, label %if.else
if.else: ; preds = %entry
%2 = load i32, ptr %x, align 4
%add = add i32 %2, 1
store i32 %add, ptr %x, align 4
br label %if.exit
if.exit: ; preds = %if.else, %entry
ret void
}