mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 20:11:17 +00:00
714 lines
25 KiB
Plaintext
714 lines
25 KiB
Plaintext
// #target: macos-x64
|
|
module examples;
|
|
import libc;
|
|
import std::io;
|
|
|
|
fn void example_for()
|
|
{
|
|
// the for-loop is the same as C99.
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
libc::printf("%d\n", i);
|
|
}
|
|
|
|
// also equal
|
|
for (;;)
|
|
{
|
|
// ..
|
|
}
|
|
}
|
|
|
|
enum Height : uint
|
|
{
|
|
LOW,
|
|
MEDIUM,
|
|
HIGH,
|
|
}
|
|
|
|
fn void demo_enum(Height h)
|
|
{
|
|
switch (h)
|
|
{
|
|
case LOW:
|
|
case MEDIUM:
|
|
io::printn("Not high");
|
|
// Implicit break.
|
|
case HIGH:
|
|
io::printn("High");
|
|
}
|
|
|
|
// This also works
|
|
switch (h)
|
|
{
|
|
case LOW:
|
|
case MEDIUM:
|
|
io::printn("Not high");
|
|
// Implicit break.
|
|
case Height.HIGH:
|
|
io::printn("High");
|
|
}
|
|
|
|
// Completely empty cases are not allowed.
|
|
switch (h)
|
|
{
|
|
case LOW:
|
|
break; // Explicit break required, since switches can't be empty.
|
|
case MEDIUM:
|
|
io::printn("Medium");
|
|
case HIGH:
|
|
break;
|
|
}
|
|
|
|
// special checking of switching on enum types
|
|
switch (h)
|
|
{
|
|
case LOW:
|
|
case MEDIUM:
|
|
case HIGH:
|
|
break;
|
|
default: // warning: default label in switch which covers all enumeration value
|
|
break;
|
|
}
|
|
|
|
// Using "nextcase" will fallthrough to the next case statement,
|
|
// and each case statement starts its own scope.
|
|
switch (h)
|
|
{
|
|
case LOW:
|
|
int a = 1;
|
|
io::printn("A");
|
|
nextcase;
|
|
case MEDIUM:
|
|
int a = 2;
|
|
io::printn("B");
|
|
nextcase;
|
|
case HIGH:
|
|
// a is not defined here
|
|
io::printn("C");
|
|
}
|
|
}
|
|
/* #expect: examples.ll
|
|
|
|
define void @examples.example_for() #0 {
|
|
entry:
|
|
%i = alloca i32, align 4
|
|
store i32 0, ptr %i, align 4
|
|
br label %loop.cond
|
|
|
|
loop.cond: ; preds = %loop.body, %entry
|
|
%0 = load i32, ptr %i, align 4
|
|
%lt = icmp slt i32 %0, 10
|
|
br i1 %lt, label %loop.body, label %loop.exit
|
|
|
|
loop.body: ; preds = %loop.cond
|
|
%1 = load i32, ptr %i, align 4
|
|
%2 = call i32 (ptr, ...) @printf(ptr @.str, i32 %1)
|
|
%3 = load i32, ptr %i, align 4
|
|
%add = add i32 %3, 1
|
|
store i32 %add, ptr %i, align 4
|
|
br label %loop.cond
|
|
|
|
loop.exit: ; preds = %loop.cond
|
|
%4 = load ptr, ptr @std.core.builtin.panic, align 8
|
|
call void %4(ptr @.panic_msg, i64 19, ptr @.file, i64 21, ptr @.func, i64 11, i32 14)
|
|
unreachable
|
|
}
|
|
|
|
|
|
define void @examples.demo_enum(i32 %0) #0 {
|
|
entry:
|
|
%switch = alloca i32, align 4
|
|
%len = alloca i64, align 8
|
|
%error_var = alloca i64, align 8
|
|
%retparam = alloca i64, align 8
|
|
%error_var2 = alloca i64, align 8
|
|
%error_var8 = alloca i64, align 8
|
|
%len15 = alloca i64, align 8
|
|
%error_var16 = alloca i64, align 8
|
|
%retparam18 = alloca i64, align 8
|
|
%error_var24 = alloca i64, align 8
|
|
%error_var30 = alloca i64, align 8
|
|
%switch38 = alloca i32, align 4
|
|
%len41 = alloca i64, align 8
|
|
%error_var42 = alloca i64, align 8
|
|
%retparam44 = alloca i64, align 8
|
|
%error_var50 = alloca i64, align 8
|
|
%error_var56 = alloca i64, align 8
|
|
%len65 = alloca i64, align 8
|
|
%error_var66 = alloca i64, align 8
|
|
%retparam68 = alloca i64, align 8
|
|
%error_var74 = alloca i64, align 8
|
|
%error_var80 = alloca i64, align 8
|
|
%switch89 = alloca i32, align 4
|
|
%len93 = alloca i64, align 8
|
|
%error_var94 = alloca i64, align 8
|
|
%retparam96 = alloca i64, align 8
|
|
%error_var102 = alloca i64, align 8
|
|
%error_var108 = alloca i64, align 8
|
|
%switch118 = alloca i32, align 4
|
|
%switch122 = alloca i32, align 4
|
|
%a = alloca i32, align 4
|
|
%len125 = alloca i64, align 8
|
|
%error_var126 = alloca i64, align 8
|
|
%retparam128 = alloca i64, align 8
|
|
%error_var134 = alloca i64, align 8
|
|
%error_var140 = alloca i64, align 8
|
|
%a149 = alloca i32, align 4
|
|
%len150 = alloca i64, align 8
|
|
%error_var151 = alloca i64, align 8
|
|
%retparam153 = alloca i64, align 8
|
|
%error_var159 = alloca i64, align 8
|
|
%error_var165 = alloca i64, align 8
|
|
%len174 = alloca i64, align 8
|
|
%error_var175 = alloca i64, align 8
|
|
%retparam177 = alloca i64, align 8
|
|
%error_var183 = alloca i64, align 8
|
|
%error_var189 = alloca i64, align 8
|
|
store i32 %0, ptr %switch, align 4
|
|
br label %switch.entry
|
|
|
|
switch.entry: ; preds = %entry
|
|
%1 = load i32, ptr %switch, align 4
|
|
switch i32 %1, label %switch.exit [
|
|
i32 0, label %switch.case
|
|
i32 1, label %switch.case
|
|
i32 2, label %switch.case14
|
|
]
|
|
|
|
switch.case: ; preds = %switch.entry, %switch.entry
|
|
%2 = call ptr @std.io.stdout()
|
|
%3 = call i64 @std.io.File.write(ptr %retparam, ptr %2, ptr @.str.1, i64 8)
|
|
%not_err = icmp eq i64 %3, 0
|
|
%4 = call i1 @llvm.expect.i1(i1 %not_err, i1 true)
|
|
br i1 %4, label %after_check, label %assign_optional
|
|
|
|
assign_optional: ; preds = %switch.case
|
|
store i64 %3, ptr %error_var, align 8
|
|
br label %guard_block
|
|
|
|
after_check: ; preds = %switch.case
|
|
br label %noerr_block
|
|
|
|
guard_block: ; preds = %assign_optional
|
|
br label %voiderr
|
|
|
|
noerr_block: ; preds = %after_check
|
|
%5 = load i64, ptr %retparam, align 8
|
|
store i64 %5, ptr %len, align 8
|
|
%6 = call i64 @std.io.File.write_byte(ptr %2, i8 zeroext 10)
|
|
%not_err3 = icmp eq i64 %6, 0
|
|
%7 = call i1 @llvm.expect.i1(i1 %not_err3, i1 true)
|
|
br i1 %7, label %after_check5, label %assign_optional4
|
|
|
|
assign_optional4: ; preds = %noerr_block
|
|
store i64 %6, ptr %error_var2, align 8
|
|
br label %guard_block6
|
|
|
|
after_check5: ; preds = %noerr_block
|
|
br label %noerr_block7
|
|
|
|
guard_block6: ; preds = %assign_optional4
|
|
br label %voiderr
|
|
|
|
noerr_block7: ; preds = %after_check5
|
|
%8 = call i64 @std.io.File.flush(ptr %2)
|
|
%not_err9 = icmp eq i64 %8, 0
|
|
%9 = call i1 @llvm.expect.i1(i1 %not_err9, i1 true)
|
|
br i1 %9, label %after_check11, label %assign_optional10
|
|
|
|
assign_optional10: ; preds = %noerr_block7
|
|
store i64 %8, ptr %error_var8, align 8
|
|
br label %guard_block12
|
|
|
|
after_check11: ; preds = %noerr_block7
|
|
br label %noerr_block13
|
|
|
|
guard_block12: ; preds = %assign_optional10
|
|
br label %voiderr
|
|
|
|
noerr_block13: ; preds = %after_check11
|
|
%10 = load i64, ptr %len, align 8
|
|
%add = add i64 %10, 1
|
|
br label %voiderr
|
|
|
|
voiderr: ; preds = %noerr_block13, %guard_block12, %guard_block6, %guard_block
|
|
br label %switch.exit
|
|
|
|
switch.case14: ; preds = %switch.entry
|
|
%11 = call ptr @std.io.stdout()
|
|
%12 = call i64 @std.io.File.write(ptr %retparam18, ptr %11, ptr @.str.2, i64 4)
|
|
%not_err19 = icmp eq i64 %12, 0
|
|
%13 = call i1 @llvm.expect.i1(i1 %not_err19, i1 true)
|
|
br i1 %13, label %after_check21, label %assign_optional20
|
|
|
|
assign_optional20: ; preds = %switch.case14
|
|
store i64 %12, ptr %error_var16, align 8
|
|
br label %guard_block22
|
|
|
|
after_check21: ; preds = %switch.case14
|
|
br label %noerr_block23
|
|
|
|
guard_block22: ; preds = %assign_optional20
|
|
br label %voiderr37
|
|
|
|
noerr_block23: ; preds = %after_check21
|
|
%14 = load i64, ptr %retparam18, align 8
|
|
store i64 %14, ptr %len15, align 8
|
|
%15 = call i64 @std.io.File.write_byte(ptr %11, i8 zeroext 10)
|
|
%not_err25 = icmp eq i64 %15, 0
|
|
%16 = call i1 @llvm.expect.i1(i1 %not_err25, i1 true)
|
|
br i1 %16, label %after_check27, label %assign_optional26
|
|
|
|
assign_optional26: ; preds = %noerr_block23
|
|
store i64 %15, ptr %error_var24, align 8
|
|
br label %guard_block28
|
|
|
|
after_check27: ; preds = %noerr_block23
|
|
br label %noerr_block29
|
|
|
|
guard_block28: ; preds = %assign_optional26
|
|
br label %voiderr37
|
|
|
|
noerr_block29: ; preds = %after_check27
|
|
%17 = call i64 @std.io.File.flush(ptr %11)
|
|
%not_err31 = icmp eq i64 %17, 0
|
|
%18 = call i1 @llvm.expect.i1(i1 %not_err31, i1 true)
|
|
br i1 %18, label %after_check33, label %assign_optional32
|
|
|
|
assign_optional32: ; preds = %noerr_block29
|
|
store i64 %17, ptr %error_var30, align 8
|
|
br label %guard_block34
|
|
|
|
after_check33: ; preds = %noerr_block29
|
|
br label %noerr_block35
|
|
|
|
guard_block34: ; preds = %assign_optional32
|
|
br label %voiderr37
|
|
|
|
noerr_block35: ; preds = %after_check33
|
|
%19 = load i64, ptr %len15, align 8
|
|
%add36 = add i64 %19, 1
|
|
br label %voiderr37
|
|
|
|
voiderr37: ; preds = %noerr_block35, %guard_block34, %guard_block28, %guard_block22
|
|
br label %switch.exit
|
|
|
|
switch.exit: ; preds = %voiderr37, %voiderr, %switch.entry
|
|
store i32 %0, ptr %switch38, align 4
|
|
br label %switch.entry39
|
|
|
|
switch.entry39: ; preds = %switch.exit
|
|
%20 = load i32, ptr %switch38, align 4
|
|
switch i32 %20, label %switch.exit88 [
|
|
i32 0, label %switch.case40
|
|
i32 1, label %switch.case40
|
|
i32 2, label %switch.case64
|
|
]
|
|
|
|
switch.case40: ; preds = %switch.entry39, %switch.entry39
|
|
%21 = call ptr @std.io.stdout()
|
|
%22 = call i64 @std.io.File.write(ptr %retparam44, ptr %21, ptr @.str.3, i64 8)
|
|
%not_err45 = icmp eq i64 %22, 0
|
|
%23 = call i1 @llvm.expect.i1(i1 %not_err45, i1 true)
|
|
br i1 %23, label %after_check47, label %assign_optional46
|
|
|
|
assign_optional46: ; preds = %switch.case40
|
|
store i64 %22, ptr %error_var42, align 8
|
|
br label %guard_block48
|
|
|
|
after_check47: ; preds = %switch.case40
|
|
br label %noerr_block49
|
|
|
|
guard_block48: ; preds = %assign_optional46
|
|
br label %voiderr63
|
|
|
|
noerr_block49: ; preds = %after_check47
|
|
%24 = load i64, ptr %retparam44, align 8
|
|
store i64 %24, ptr %len41, align 8
|
|
%25 = call i64 @std.io.File.write_byte(ptr %21, i8 zeroext 10)
|
|
%not_err51 = icmp eq i64 %25, 0
|
|
%26 = call i1 @llvm.expect.i1(i1 %not_err51, i1 true)
|
|
br i1 %26, label %after_check53, label %assign_optional52
|
|
|
|
assign_optional52: ; preds = %noerr_block49
|
|
store i64 %25, ptr %error_var50, align 8
|
|
br label %guard_block54
|
|
|
|
after_check53: ; preds = %noerr_block49
|
|
br label %noerr_block55
|
|
|
|
guard_block54: ; preds = %assign_optional52
|
|
br label %voiderr63
|
|
|
|
noerr_block55: ; preds = %after_check53
|
|
%27 = call i64 @std.io.File.flush(ptr %21)
|
|
%not_err57 = icmp eq i64 %27, 0
|
|
%28 = call i1 @llvm.expect.i1(i1 %not_err57, i1 true)
|
|
br i1 %28, label %after_check59, label %assign_optional58
|
|
|
|
assign_optional58: ; preds = %noerr_block55
|
|
store i64 %27, ptr %error_var56, align 8
|
|
br label %guard_block60
|
|
|
|
after_check59: ; preds = %noerr_block55
|
|
br label %noerr_block61
|
|
|
|
guard_block60: ; preds = %assign_optional58
|
|
br label %voiderr63
|
|
|
|
noerr_block61: ; preds = %after_check59
|
|
%29 = load i64, ptr %len41, align 8
|
|
%add62 = add i64 %29, 1
|
|
br label %voiderr63
|
|
|
|
voiderr63: ; preds = %noerr_block61, %guard_block60, %guard_block54, %guard_block48
|
|
br label %switch.exit88
|
|
|
|
switch.case64: ; preds = %switch.entry39
|
|
%30 = call ptr @std.io.stdout()
|
|
%31 = call i64 @std.io.File.write(ptr %retparam68, ptr %30, ptr @.str.4, i64 4)
|
|
%not_err69 = icmp eq i64 %31, 0
|
|
%32 = call i1 @llvm.expect.i1(i1 %not_err69, i1 true)
|
|
br i1 %32, label %after_check71, label %assign_optional70
|
|
|
|
assign_optional70: ; preds = %switch.case64
|
|
store i64 %31, ptr %error_var66, align 8
|
|
br label %guard_block72
|
|
|
|
after_check71: ; preds = %switch.case64
|
|
br label %noerr_block73
|
|
|
|
guard_block72: ; preds = %assign_optional70
|
|
br label %voiderr87
|
|
|
|
noerr_block73: ; preds = %after_check71
|
|
%33 = load i64, ptr %retparam68, align 8
|
|
store i64 %33, ptr %len65, align 8
|
|
%34 = call i64 @std.io.File.write_byte(ptr %30, i8 zeroext 10)
|
|
%not_err75 = icmp eq i64 %34, 0
|
|
%35 = call i1 @llvm.expect.i1(i1 %not_err75, i1 true)
|
|
br i1 %35, label %after_check77, label %assign_optional76
|
|
|
|
assign_optional76: ; preds = %noerr_block73
|
|
store i64 %34, ptr %error_var74, align 8
|
|
br label %guard_block78
|
|
|
|
after_check77: ; preds = %noerr_block73
|
|
br label %noerr_block79
|
|
|
|
guard_block78: ; preds = %assign_optional76
|
|
br label %voiderr87
|
|
|
|
noerr_block79: ; preds = %after_check77
|
|
%36 = call i64 @std.io.File.flush(ptr %30)
|
|
%not_err81 = icmp eq i64 %36, 0
|
|
%37 = call i1 @llvm.expect.i1(i1 %not_err81, i1 true)
|
|
br i1 %37, label %after_check83, label %assign_optional82
|
|
|
|
assign_optional82: ; preds = %noerr_block79
|
|
store i64 %36, ptr %error_var80, align 8
|
|
br label %guard_block84
|
|
|
|
after_check83: ; preds = %noerr_block79
|
|
br label %noerr_block85
|
|
|
|
guard_block84: ; preds = %assign_optional82
|
|
br label %voiderr87
|
|
|
|
noerr_block85: ; preds = %after_check83
|
|
%38 = load i64, ptr %len65, align 8
|
|
%add86 = add i64 %38, 1
|
|
br label %voiderr87
|
|
|
|
voiderr87: ; preds = %noerr_block85, %guard_block84, %guard_block78, %guard_block72
|
|
br label %switch.exit88
|
|
|
|
switch.exit88: ; preds = %voiderr87, %voiderr63, %switch.entry39
|
|
store i32 %0, ptr %switch89, align 4
|
|
br label %switch.entry90
|
|
|
|
switch.entry90: ; preds = %switch.exit88
|
|
%39 = load i32, ptr %switch89, align 4
|
|
switch i32 %39, label %switch.exit117 [
|
|
i32 0, label %switch.case91
|
|
i32 1, label %switch.case92
|
|
i32 2, label %switch.case116
|
|
]
|
|
|
|
switch.case91: ; preds = %switch.entry90
|
|
br label %switch.exit117
|
|
|
|
switch.case92: ; preds = %switch.entry90
|
|
%40 = call ptr @std.io.stdout()
|
|
%41 = call i64 @std.io.File.write(ptr %retparam96, ptr %40, ptr @.str.5, i64 6)
|
|
%not_err97 = icmp eq i64 %41, 0
|
|
%42 = call i1 @llvm.expect.i1(i1 %not_err97, i1 true)
|
|
br i1 %42, label %after_check99, label %assign_optional98
|
|
|
|
assign_optional98: ; preds = %switch.case92
|
|
store i64 %41, ptr %error_var94, align 8
|
|
br label %guard_block100
|
|
|
|
after_check99: ; preds = %switch.case92
|
|
br label %noerr_block101
|
|
|
|
guard_block100: ; preds = %assign_optional98
|
|
br label %voiderr115
|
|
|
|
noerr_block101: ; preds = %after_check99
|
|
%43 = load i64, ptr %retparam96, align 8
|
|
store i64 %43, ptr %len93, align 8
|
|
%44 = call i64 @std.io.File.write_byte(ptr %40, i8 zeroext 10)
|
|
%not_err103 = icmp eq i64 %44, 0
|
|
%45 = call i1 @llvm.expect.i1(i1 %not_err103, i1 true)
|
|
br i1 %45, label %after_check105, label %assign_optional104
|
|
|
|
assign_optional104: ; preds = %noerr_block101
|
|
store i64 %44, ptr %error_var102, align 8
|
|
br label %guard_block106
|
|
|
|
after_check105: ; preds = %noerr_block101
|
|
br label %noerr_block107
|
|
|
|
guard_block106: ; preds = %assign_optional104
|
|
br label %voiderr115
|
|
|
|
noerr_block107: ; preds = %after_check105
|
|
%46 = call i64 @std.io.File.flush(ptr %40)
|
|
%not_err109 = icmp eq i64 %46, 0
|
|
%47 = call i1 @llvm.expect.i1(i1 %not_err109, i1 true)
|
|
br i1 %47, label %after_check111, label %assign_optional110
|
|
|
|
assign_optional110: ; preds = %noerr_block107
|
|
store i64 %46, ptr %error_var108, align 8
|
|
br label %guard_block112
|
|
|
|
after_check111: ; preds = %noerr_block107
|
|
br label %noerr_block113
|
|
|
|
guard_block112: ; preds = %assign_optional110
|
|
br label %voiderr115
|
|
|
|
noerr_block113: ; preds = %after_check111
|
|
%48 = load i64, ptr %len93, align 8
|
|
%add114 = add i64 %48, 1
|
|
br label %voiderr115
|
|
|
|
voiderr115: ; preds = %noerr_block113, %guard_block112, %guard_block106, %guard_block100
|
|
br label %switch.exit117
|
|
|
|
switch.case116: ; preds = %switch.entry90
|
|
br label %switch.exit117
|
|
|
|
switch.exit117: ; preds = %switch.case116, %voiderr115, %switch.case91, %switch.entry90
|
|
store i32 %0, ptr %switch118, align 4
|
|
br label %switch.entry119
|
|
|
|
switch.entry119: ; preds = %switch.exit117
|
|
%49 = load i32, ptr %switch118, align 4
|
|
switch i32 %49, label %switch.default [
|
|
i32 0, label %switch.case120
|
|
i32 1, label %switch.case120
|
|
i32 2, label %switch.case120
|
|
]
|
|
|
|
switch.case120: ; preds = %switch.entry119, %switch.entry119, %switch.entry119
|
|
br label %switch.exit121
|
|
|
|
switch.default: ; preds = %switch.entry119
|
|
br label %switch.exit121
|
|
|
|
switch.exit121: ; preds = %switch.default, %switch.case120
|
|
store i32 %0, ptr %switch122, align 4
|
|
br label %switch.entry123
|
|
|
|
switch.entry123: ; preds = %switch.exit121
|
|
%50 = load i32, ptr %switch122, align 4
|
|
switch i32 %50, label %switch.exit197 [
|
|
i32 0, label %switch.case124
|
|
i32 1, label %switch.case148
|
|
i32 2, label %switch.case173
|
|
]
|
|
|
|
switch.case124: ; preds = %switch.entry123
|
|
store i32 1, ptr %a, align 4
|
|
%51 = call ptr @std.io.stdout()
|
|
%52 = call i64 @std.io.File.write(ptr %retparam128, ptr %51, ptr @.str.6, i64 1)
|
|
%not_err129 = icmp eq i64 %52, 0
|
|
%53 = call i1 @llvm.expect.i1(i1 %not_err129, i1 true)
|
|
br i1 %53, label %after_check131, label %assign_optional130
|
|
|
|
assign_optional130: ; preds = %switch.case124
|
|
store i64 %52, ptr %error_var126, align 8
|
|
br label %guard_block132
|
|
|
|
after_check131: ; preds = %switch.case124
|
|
br label %noerr_block133
|
|
|
|
guard_block132: ; preds = %assign_optional130
|
|
br label %voiderr147
|
|
|
|
noerr_block133: ; preds = %after_check131
|
|
%54 = load i64, ptr %retparam128, align 8
|
|
store i64 %54, ptr %len125, align 8
|
|
%55 = call i64 @std.io.File.write_byte(ptr %51, i8 zeroext 10)
|
|
%not_err135 = icmp eq i64 %55, 0
|
|
%56 = call i1 @llvm.expect.i1(i1 %not_err135, i1 true)
|
|
br i1 %56, label %after_check137, label %assign_optional136
|
|
|
|
assign_optional136: ; preds = %noerr_block133
|
|
store i64 %55, ptr %error_var134, align 8
|
|
br label %guard_block138
|
|
|
|
after_check137: ; preds = %noerr_block133
|
|
br label %noerr_block139
|
|
|
|
guard_block138: ; preds = %assign_optional136
|
|
br label %voiderr147
|
|
|
|
noerr_block139: ; preds = %after_check137
|
|
%57 = call i64 @std.io.File.flush(ptr %51)
|
|
%not_err141 = icmp eq i64 %57, 0
|
|
%58 = call i1 @llvm.expect.i1(i1 %not_err141, i1 true)
|
|
br i1 %58, label %after_check143, label %assign_optional142
|
|
|
|
assign_optional142: ; preds = %noerr_block139
|
|
store i64 %57, ptr %error_var140, align 8
|
|
br label %guard_block144
|
|
|
|
after_check143: ; preds = %noerr_block139
|
|
br label %noerr_block145
|
|
|
|
guard_block144: ; preds = %assign_optional142
|
|
br label %voiderr147
|
|
|
|
noerr_block145: ; preds = %after_check143
|
|
%59 = load i64, ptr %len125, align 8
|
|
%add146 = add i64 %59, 1
|
|
br label %voiderr147
|
|
|
|
voiderr147: ; preds = %noerr_block145, %guard_block144, %guard_block138, %guard_block132
|
|
br label %switch.case148
|
|
|
|
switch.case148: ; preds = %switch.entry123, %voiderr147
|
|
store i32 2, ptr %a149, align 4
|
|
%60 = call ptr @std.io.stdout()
|
|
%61 = call i64 @std.io.File.write(ptr %retparam153, ptr %60, ptr @.str.7, i64 1)
|
|
%not_err154 = icmp eq i64 %61, 0
|
|
%62 = call i1 @llvm.expect.i1(i1 %not_err154, i1 true)
|
|
br i1 %62, label %after_check156, label %assign_optional155
|
|
|
|
assign_optional155: ; preds = %switch.case148
|
|
store i64 %61, ptr %error_var151, align 8
|
|
br label %guard_block157
|
|
|
|
after_check156: ; preds = %switch.case148
|
|
br label %noerr_block158
|
|
|
|
guard_block157: ; preds = %assign_optional155
|
|
br label %voiderr172
|
|
|
|
noerr_block158: ; preds = %after_check156
|
|
%63 = load i64, ptr %retparam153, align 8
|
|
store i64 %63, ptr %len150, align 8
|
|
%64 = call i64 @std.io.File.write_byte(ptr %60, i8 zeroext 10)
|
|
%not_err160 = icmp eq i64 %64, 0
|
|
%65 = call i1 @llvm.expect.i1(i1 %not_err160, i1 true)
|
|
br i1 %65, label %after_check162, label %assign_optional161
|
|
|
|
assign_optional161: ; preds = %noerr_block158
|
|
store i64 %64, ptr %error_var159, align 8
|
|
br label %guard_block163
|
|
|
|
after_check162: ; preds = %noerr_block158
|
|
br label %noerr_block164
|
|
|
|
guard_block163: ; preds = %assign_optional161
|
|
br label %voiderr172
|
|
|
|
noerr_block164: ; preds = %after_check162
|
|
%66 = call i64 @std.io.File.flush(ptr %60)
|
|
%not_err166 = icmp eq i64 %66, 0
|
|
%67 = call i1 @llvm.expect.i1(i1 %not_err166, i1 true)
|
|
br i1 %67, label %after_check168, label %assign_optional167
|
|
|
|
assign_optional167: ; preds = %noerr_block164
|
|
store i64 %66, ptr %error_var165, align 8
|
|
br label %guard_block169
|
|
|
|
after_check168: ; preds = %noerr_block164
|
|
br label %noerr_block170
|
|
|
|
guard_block169: ; preds = %assign_optional167
|
|
br label %voiderr172
|
|
|
|
noerr_block170: ; preds = %after_check168
|
|
%68 = load i64, ptr %len150, align 8
|
|
%add171 = add i64 %68, 1
|
|
br label %voiderr172
|
|
|
|
voiderr172: ; preds = %noerr_block170, %guard_block169, %guard_block163, %guard_block157
|
|
br label %switch.case173
|
|
|
|
switch.case173: ; preds = %switch.entry123, %voiderr172
|
|
%69 = call ptr @std.io.stdout()
|
|
%70 = call i64 @std.io.File.write(ptr %retparam177, ptr %69, ptr @.str.8, i64 1)
|
|
%not_err178 = icmp eq i64 %70, 0
|
|
%71 = call i1 @llvm.expect.i1(i1 %not_err178, i1 true)
|
|
br i1 %71, label %after_check180, label %assign_optional179
|
|
|
|
assign_optional179: ; preds = %switch.case173
|
|
store i64 %70, ptr %error_var175, align 8
|
|
br label %guard_block181
|
|
|
|
after_check180: ; preds = %switch.case173
|
|
br label %noerr_block182
|
|
|
|
guard_block181: ; preds = %assign_optional179
|
|
br label %voiderr196
|
|
|
|
noerr_block182: ; preds = %after_check180
|
|
%72 = load i64, ptr %retparam177, align 8
|
|
store i64 %72, ptr %len174, align 8
|
|
%73 = call i64 @std.io.File.write_byte(ptr %69, i8 zeroext 10)
|
|
%not_err184 = icmp eq i64 %73, 0
|
|
%74 = call i1 @llvm.expect.i1(i1 %not_err184, i1 true)
|
|
br i1 %74, label %after_check186, label %assign_optional185
|
|
|
|
assign_optional185: ; preds = %noerr_block182
|
|
store i64 %73, ptr %error_var183, align 8
|
|
br label %guard_block187
|
|
|
|
after_check186: ; preds = %noerr_block182
|
|
br label %noerr_block188
|
|
|
|
guard_block187: ; preds = %assign_optional185
|
|
br label %voiderr196
|
|
|
|
noerr_block188: ; preds = %after_check186
|
|
%75 = call i64 @std.io.File.flush(ptr %69)
|
|
%not_err190 = icmp eq i64 %75, 0
|
|
%76 = call i1 @llvm.expect.i1(i1 %not_err190, i1 true)
|
|
br i1 %76, label %after_check192, label %assign_optional191
|
|
|
|
assign_optional191: ; preds = %noerr_block188
|
|
store i64 %75, ptr %error_var189, align 8
|
|
br label %guard_block193
|
|
|
|
after_check192: ; preds = %noerr_block188
|
|
br label %noerr_block194
|
|
|
|
guard_block193: ; preds = %assign_optional191
|
|
br label %voiderr196
|
|
|
|
noerr_block194: ; preds = %after_check192
|
|
%77 = load i64, ptr %len174, align 8
|
|
%add195 = add i64 %77, 1
|
|
br label %voiderr196
|
|
|
|
voiderr196: ; preds = %noerr_block194, %guard_block193, %guard_block187, %guard_block181
|
|
br label %switch.exit197
|
|
|
|
switch.exit197: ; preds = %voiderr196, %switch.entry123
|
|
ret void
|
|
} |