declare void @llvm.gcroot(i8**, i8*) @gc_metadata = external constant i8 define cc 11 {i64, i64, i64} @test.hello.1(i64 %hp_in, i64 %p_in, i64 %v19) nounwind noredzone gc "erlang_gc" { Entry: %exception_sync = alloca double %p_reg_var = alloca i64 store i64 %p_in, i64* %p_reg_var %hp_reg_var = alloca i64 store i64 %hp_in, i64* %hp_reg_var %root19 = alloca i64 %t1 = bitcast i64* %root19 to i8** call void @llvm.gcroot(i8** %t1, i8* @gc_metadata) store i64 -5, i64* %root19 %root22 = alloca i64 %t0 = bitcast i64* %root22 to i8** call void @llvm.gcroot(i8** %t0, i8* @gc_metadata) store i64 -5, i64* %root22 %DL0_var = ptrtoint i8* @DL0 to i64 store i64 %v19, i64* %root19 br label %L1 L12: br label %L1 L1: ; get_fcalls %t3 = load i64* %p_reg_var %t4 = inttoptr i64 %t3 to i64* %t5 = getelementptr i64* %t4, i64 30 %t6 = load i64* %t5 %t2 = sub i64 %t6, 1 %t7 = load i64* %p_reg_var %t8 = inttoptr i64 %t7 to i64* %t9 = getelementptr i64* %t8, i64 30 store i64 %t2, i64* %t9 %t10 = load i64* %p_reg_var %t11 = inttoptr i64 %t10 to i64* %t12 = getelementptr i64* %t11, i64 30 %t13 = load i64* %t12 %t14 = icmp slt i64 %t13, 0 br i1 %t14, label %L3, label %L5 L3: %p17 = load i64* %p_reg_var %hp16 = load i64* %hp_reg_var %t18 = call cc 11 {i64, i64, i64} @suspend_0(i64 %hp16, i64 %p17) %p20 = extractvalue {i64, i64, i64} %t18, 1 %hp19 = extractvalue {i64, i64, i64} %t18, 0 store i64 %p20, i64* %p_reg_var store i64 %hp19, i64* %hp_reg_var br label %L5 L5: ; get_heap_pointer ; get_heap_limit %t21 = load i64* %p_reg_var %t22 = inttoptr i64 %t21 to i64* %t23 = getelementptr i64* %t22, i64 1 %t24 = load i64* %t23 %t25 = load i64* %hp_reg_var %r20 = sub i64 %t24, %t25 %t26 = icmp slt i64 %r20, 16 br i1 %t26, label %L11, label %L10 L11: %p29 = load i64* %p_reg_var %hp28 = load i64* %hp_reg_var %t30 = call cc 11 {i64, i64, i64} @gc_1(i64 %hp28, i64 %p29, i64 47) %p32 = extractvalue {i64, i64, i64} %t30, 1 %hp31 = extractvalue {i64, i64, i64} %t30, 0 store i64 %p32, i64* %p_reg_var store i64 %hp31, i64* %hp_reg_var br label %L10 L10: ; get_heap_pointer %t33 = load i64* %hp_reg_var %t34 = load i64* %root19 store i64 -5, i64* %root19 %t35 = add i64 %t33, 0 %t36 = inttoptr i64 %t35 to i64* store i64 %t34, i64* %t36 %t37 = load i64* %hp_reg_var %t38 = add i64 %t37, 8 %t39 = inttoptr i64 %t38 to i64* store i64 -5, i64* %t39 %t40 = load i64* %hp_reg_var %r21 = select i1 true, i64 %t40, i64 undef %t41 = add i64 %r21, 1 store i64 %t41, i64* %root22 %t43 = load i64* %hp_reg_var %t42 = add i64 %t43, 16 store i64 %t42, i64* %hp_reg_var ; put_heap_pointer %t44 = load i64* %root22 store i64 -5, i64* %root22 %p46 = load i64* %p_reg_var %hp45 = load i64* %hp_reg_var %t47 = tail call cc 11 {i64, i64, i64} @io.format.2(i64 %hp45, i64 %p46, i64 %DL0_var, i64 %t44) ret {i64, i64, i64} %t47 } @DL0 = external constant i8 declare cc 11 {i64, i64, i64} @suspend_0(i64, i64) declare cc 11 {i64, i64, i64} @gc_1(i64, i64, i64) declare cc 11 {i64, i64, i64} @io.format.2(i64, i64, i64, i64)