diff --git a/cl/_testdata/print/out.ll b/cl/_testdata/print/out.ll index 01c80255..2fd4a841 100644 --- a/cl/_testdata/print/out.ll +++ b/cl/_testdata/print/out.ll @@ -488,10 +488,10 @@ _llgo_11: ; preds = %_llgo_8 %17 = fcmp olt double %16, 0.000000e+00 br i1 %17, label %_llgo_14, label %_llgo_12 -_llgo_12: ; preds = %_llgo_24, %_llgo_23, %_llgo_14, %_llgo_11 - %18 = phi double [ %0, %_llgo_11 ], [ %39, %_llgo_23 ], [ %0, %_llgo_14 ], [ %42, %_llgo_24 ] - %19 = phi i64 [ 0, %_llgo_11 ], [ %32, %_llgo_23 ], [ 0, %_llgo_14 ], [ %41, %_llgo_24 ] - br label %_llgo_25 +_llgo_12: ; preds = %_llgo_24, %_llgo_22, %_llgo_14, %_llgo_11 + %18 = phi double [ %0, %_llgo_11 ], [ %36, %_llgo_22 ], [ %0, %_llgo_14 ], [ %42, %_llgo_24 ] + %19 = phi i64 [ 0, %_llgo_11 ], [ %32, %_llgo_22 ], [ 0, %_llgo_14 ], [ %41, %_llgo_24 ] + br label %_llgo_27 _llgo_13: ; preds = %_llgo_8 %20 = fcmp olt double %0, 0.000000e+00 @@ -525,7 +525,7 @@ _llgo_18: ; preds = %_llgo_20 br label %_llgo_20 _llgo_19: ; preds = %_llgo_20 - br label %_llgo_21 + br label %_llgo_23 _llgo_20: ; preds = %_llgo_18, %_llgo_17 %31 = phi double [ %26, %_llgo_17 ], [ %30, %_llgo_18 ] @@ -533,68 +533,68 @@ _llgo_20: ; preds = %_llgo_18, %_llgo_17 %33 = fcmp olt double %31, 1.000000e+00 br i1 %33, label %_llgo_18, label %_llgo_19 -_llgo_21: ; preds = %_llgo_22, %_llgo_19 - %34 = phi double [ 5.000000e+00, %_llgo_19 ], [ %37, %_llgo_22 ] - %35 = phi i64 [ 0, %_llgo_19 ], [ %38, %_llgo_22 ] - %36 = icmp slt i64 %35, 7 - br i1 %36, label %_llgo_22, label %_llgo_23 +_llgo_21: ; preds = %_llgo_23 + %34 = fdiv double %38, 1.000000e+01 + %35 = add i64 %39, 1 + br label %_llgo_23 -_llgo_22: ; preds = %_llgo_21 - %37 = fdiv double %34, 1.000000e+01 - %38 = add i64 %35, 1 - br label %_llgo_21 +_llgo_22: ; preds = %_llgo_23 + %36 = fadd double %31, %38 + %37 = fcmp oge double %36, 1.000000e+01 + br i1 %37, label %_llgo_24, label %_llgo_12 -_llgo_23: ; preds = %_llgo_21 - %39 = fadd double %31, %34 - %40 = fcmp oge double %39, 1.000000e+01 - br i1 %40, label %_llgo_24, label %_llgo_12 +_llgo_23: ; preds = %_llgo_21, %_llgo_19 + %38 = phi double [ 5.000000e+00, %_llgo_19 ], [ %34, %_llgo_21 ] + %39 = phi i64 [ 0, %_llgo_19 ], [ %35, %_llgo_21 ] + %40 = icmp slt i64 %39, 7 + br i1 %40, label %_llgo_21, label %_llgo_22 -_llgo_24: ; preds = %_llgo_23 +_llgo_24: ; preds = %_llgo_22 %41 = add i64 %32, 1 - %42 = fdiv double %39, 1.000000e+01 + %42 = fdiv double %36, 1.000000e+01 br label %_llgo_12 -_llgo_25: ; preds = %_llgo_26, %_llgo_12 - %43 = phi double [ %18, %_llgo_12 ], [ %53, %_llgo_26 ] - %44 = phi i64 [ 0, %_llgo_12 ], [ %54, %_llgo_26 ] - %45 = icmp slt i64 %44, 7 - br i1 %45, label %_llgo_26, label %_llgo_27 +_llgo_25: ; preds = %_llgo_27 + %43 = fptosi double %59 to i64 + %44 = add i64 %60, 2 + %45 = add i64 %43, 48 + %46 = trunc i64 %45 to i8 + %47 = getelementptr inbounds i8, ptr %11, i64 %44 + store i8 %46, ptr %47, align 1 + %48 = sitofp i64 %43 to double + %49 = fsub double %59, %48 + %50 = fmul double %49, 1.000000e+01 + %51 = add i64 %60, 1 + br label %_llgo_27 -_llgo_26: ; preds = %_llgo_25 - %46 = fptosi double %43 to i64 - %47 = add i64 %44, 2 - %48 = add i64 %46, 48 - %49 = trunc i64 %48 to i8 - %50 = getelementptr inbounds i8, ptr %11, i64 %47 - store i8 %49, ptr %50, align 1 - %51 = sitofp i64 %46 to double - %52 = fsub double %43, %51 - %53 = fmul double %52, 1.000000e+01 - %54 = add i64 %44, 1 - br label %_llgo_25 - -_llgo_27: ; preds = %_llgo_25 +_llgo_26: ; preds = %_llgo_27 + %52 = getelementptr inbounds i8, ptr %11, i64 2 + %53 = load i8, ptr %52, align 1 + %54 = getelementptr inbounds i8, ptr %11, i64 1 + store i8 %53, ptr %54, align 1 %55 = getelementptr inbounds i8, ptr %11, i64 2 - %56 = load i8, ptr %55, align 1 - %57 = getelementptr inbounds i8, ptr %11, i64 1 - store i8 %56, ptr %57, align 1 - %58 = getelementptr inbounds i8, ptr %11, i64 2 - store i8 46, ptr %58, align 1 - %59 = getelementptr inbounds i8, ptr %11, i64 9 - store i8 101, ptr %59, align 1 - %60 = getelementptr inbounds i8, ptr %11, i64 10 - store i8 43, ptr %60, align 1 - %61 = icmp slt i64 %19, 0 - br i1 %61, label %_llgo_28, label %_llgo_29 + store i8 46, ptr %55, align 1 + %56 = getelementptr inbounds i8, ptr %11, i64 9 + store i8 101, ptr %56, align 1 + %57 = getelementptr inbounds i8, ptr %11, i64 10 + store i8 43, ptr %57, align 1 + %58 = icmp slt i64 %19, 0 + br i1 %58, label %_llgo_28, label %_llgo_29 -_llgo_28: ; preds = %_llgo_27 +_llgo_27: ; preds = %_llgo_25, %_llgo_12 + %59 = phi double [ %18, %_llgo_12 ], [ %50, %_llgo_25 ] + %60 = phi i64 [ 0, %_llgo_12 ], [ %51, %_llgo_25 ] + %61 = icmp slt i64 %60, 7 + br i1 %61, label %_llgo_25, label %_llgo_26 + +_llgo_28: ; preds = %_llgo_26 %62 = sub i64 0, %19 %63 = getelementptr inbounds i8, ptr %11, i64 10 store i8 45, ptr %63, align 1 br label %_llgo_29 -_llgo_29: ; preds = %_llgo_28, %_llgo_27 - %64 = phi i64 [ %19, %_llgo_27 ], [ %62, %_llgo_28 ] +_llgo_29: ; preds = %_llgo_28, %_llgo_26 + %64 = phi i64 [ %19, %_llgo_26 ], [ %62, %_llgo_28 ] %65 = sdiv i64 %64, 100 %66 = trunc i64 %65 to i8 %67 = add i8 %66, 48 diff --git a/cl/_testlibc/argv/out.ll b/cl/_testlibc/argv/out.ll index d70c5ede..cb66aef6 100644 --- a/cl/_testlibc/argv/out.ll +++ b/cl/_testlibc/argv/out.ll @@ -25,24 +25,24 @@ _llgo_0: store ptr %1, ptr @__llgo_argv, align 8 call void @"github.com/goplus/llgo/internal/runtime.init"() call void @main.init() - br label %_llgo_1 + br label %_llgo_3 -_llgo_1: ; preds = %_llgo_2, %_llgo_0 - %2 = phi i32 [ 0, %_llgo_0 ], [ %9, %_llgo_2 ] - %3 = load i32, ptr @__llgo_argc, align 4 - %4 = icmp slt i32 %2, %3 - br i1 %4, label %_llgo_2, label %_llgo_3 +_llgo_1: ; preds = %_llgo_3 + %2 = load ptr, ptr @__llgo_argv, align 8 + %3 = getelementptr ptr, ptr %2, i32 %7 + %4 = load ptr, ptr %3, align 8 + %5 = call i32 (ptr, ...) @printf(ptr @0, ptr %4) + %6 = add i32 %7, 1 + br label %_llgo_3 -_llgo_2: ; preds = %_llgo_1 - %5 = load ptr, ptr @__llgo_argv, align 8 - %6 = getelementptr ptr, ptr %5, i32 %2 - %7 = load ptr, ptr %6, align 8 - %8 = call i32 (ptr, ...) @printf(ptr @0, ptr %7) - %9 = add i32 %2, 1 - br label %_llgo_1 - -_llgo_3: ; preds = %_llgo_1 +_llgo_2: ; preds = %_llgo_3 ret i32 0 + +_llgo_3: ; preds = %_llgo_1, %_llgo_0 + %7 = phi i32 [ 0, %_llgo_0 ], [ %6, %_llgo_1 ] + %8 = load i32, ptr @__llgo_argc, align 4 + %9 = icmp slt i32 %7, %8 + br i1 %9, label %_llgo_1, label %_llgo_2 } declare void @"github.com/goplus/llgo/internal/runtime.init"() diff --git a/cl/_testpy/pi/out.ll b/cl/_testpy/pi/out.ll index face3827..78809604 100644 --- a/cl/_testpy/pi/out.ll +++ b/cl/_testpy/pi/out.ll @@ -31,7 +31,7 @@ _llgo_0: call void @main.init() %2 = load ptr, ptr @__llgo_py.math, align 8 %3 = call ptr @PyObject_GetAttrString(ptr %2, ptr @1) - %4 = call double @"(*github.com/goplus/llgo/py.Object).Float64"(ptr %3) + %4 = call double @PyFloat_AsDouble(ptr %3) %5 = call i32 (ptr, ...) @printf(ptr @0, double %4) ret i32 0 } @@ -42,7 +42,7 @@ declare void @"github.com/goplus/llgo/internal/runtime.init"() declare ptr @PyObject_GetAttrString(ptr, ptr) -declare double @"(*github.com/goplus/llgo/py.Object).Float64"(ptr) +declare double @PyFloat_AsDouble(ptr) declare i32 @printf(ptr, ...)