aboutsummaryrefslogtreecommitdiffhomepage
path: root/transform/testdata/func-lowering.out.ll
diff options
context:
space:
mode:
Diffstat (limited to 'transform/testdata/func-lowering.out.ll')
-rw-r--r--transform/testdata/func-lowering.out.ll35
1 files changed, 14 insertions, 21 deletions
diff --git a/transform/testdata/func-lowering.out.ll b/transform/testdata/func-lowering.out.ll
index 97621730b..747d6e6e7 100644
--- a/transform/testdata/func-lowering.out.ll
+++ b/transform/testdata/func-lowering.out.ll
@@ -29,9 +29,6 @@ declare void @func1Uint8(i8, i8*, i8*)
declare void @func2Uint8(i8, i8*, i8*)
-; Call a function of which only one function with this signature is used as a
-; function value. This means that lowering it to IR is trivial: simply check
-; whether the func value is nil, and if not, call that one function directly.
define void @runFunc1(i8*, i32, i8, i8* %context, i8* %parentHandle) {
entry:
%3 = icmp eq i32 %1, 0
@@ -39,53 +36,49 @@ entry:
%5 = icmp eq void (i8, i8*, i8*)* %4, null
br i1 %5, label %fpcall.nil, label %fpcall.next
-fpcall.nil:
+fpcall.nil: ; preds = %entry
call void @runtime.nilPanic(i8* undef, i8* null)
unreachable
-fpcall.next:
+fpcall.next: ; preds = %entry
call void %4(i8 %2, i8* %0, i8* undef)
ret void
}
-; There are two functions with this signature used in a func value. That means
-; that we'll have to check at runtime which of the two it is (or whether the
-; func value is nil). This call will thus be lowered to a switch statement.
define void @runFunc2(i8*, i32, i8, i8* %context, i8* %parentHandle) {
entry:
br i1 false, label %fpcall.nil, label %fpcall.next
-fpcall.nil:
+fpcall.nil: ; preds = %entry
call void @runtime.nilPanic(i8* undef, i8* null)
unreachable
-fpcall.next:
+fpcall.next: ; preds = %entry
switch i32 %1, label %func.default [
i32 0, label %func.nil
i32 1, label %func.call1
i32 2, label %func.call2
]
-func.nil:
+func.nil: ; preds = %fpcall.next
call void @runtime.nilPanic(i8* undef, i8* null)
unreachable
-func.call1:
+func.call1: ; preds = %fpcall.next
call void @func1Uint8(i8 %2, i8* %0, i8* undef)
br label %func.next
-func.call2:
+func.call2: ; preds = %fpcall.next
call void @func2Uint8(i8 %2, i8* %0, i8* undef)
br label %func.next
-func.next:
+func.next: ; preds = %func.call2, %func.call1
ret void
-func.default:
+func.default: ; preds = %fpcall.next
unreachable
}
-; Special case for runtime.makeGoroutine.
define void @sleepFuncValue(i8*, i32, i8* nocapture readnone %context, i8* nocapture readnone %parentHandle) {
entry:
switch i32 %1, label %func.default [
@@ -94,21 +87,21 @@ entry:
i32 2, label %func.call2
]
-func.nil:
+func.nil: ; preds = %entry
call void @runtime.nilPanic(i8* undef, i8* null)
unreachable
-func.call1:
+func.call1: ; preds = %entry
call void @"internal/task.start"(i32 ptrtoint (void (i32, i8*, i8*)* @"main$1" to i32), i8* null, i8* undef, i8* null)
br label %func.next
-func.call2:
+func.call2: ; preds = %entry
call void @"internal/task.start"(i32 ptrtoint (void (i32, i8*, i8*)* @"main$2" to i32), i8* null, i8* undef, i8* null)
br label %func.next
-func.next:
+func.next: ; preds = %func.call2, %func.call1
ret void
-func.default:
+func.default: ; preds = %entry
unreachable
}