compiler: remove parentHandle from calling convention

This removes the parentHandle argument from the internal calling convention.
It was formerly used to implment coroutines.
Now that coroutines have been removed, it is no longer necessary.
This commit is contained in:
Nia Waldvogel
2021-12-31 14:53:19 -05:00
committed by Nia
parent 0c2fefa09b
commit c6ae1c58fc
38 changed files with 443 additions and 487 deletions
+12 -12
View File
@@ -13,27 +13,27 @@ declare void @externalCall(i64)
define void @runtime.initAll() unnamed_addr {
entry:
call void @baz.init(i8* undef, i8* undef)
call void @foo.init(i8* undef, i8* undef)
call void @bar.init(i8* undef, i8* undef)
call void @main.init(i8* undef, i8* undef)
call void @x.init(i8* undef, i8* undef)
call void @y.init(i8* undef, i8* undef)
call void @baz.init(i8* undef)
call void @foo.init(i8* undef)
call void @bar.init(i8* undef)
call void @main.init(i8* undef)
call void @x.init(i8* undef)
call void @y.init(i8* undef)
ret void
}
define internal void @foo.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal void @foo.init(i8* %context) unnamed_addr {
store i64 5, i64* @foo.knownAtRuntime
unreachable ; this triggers a revert of @foo.init.
}
define internal void @bar.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal void @bar.init(i8* %context) unnamed_addr {
%val = load i64, i64* @foo.knownAtRuntime
store i64 %val, i64* @bar.knownAtRuntime
ret void
}
define internal void @baz.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal void @baz.init(i8* %context) unnamed_addr {
; Test extractvalue/insertvalue with more than one index.
%val = load [3 x {i64, i32}], [3 x {i64, i32}]* @baz.someGlobal
%part = extractvalue [3 x {i64, i32}] %val, 0, 1
@@ -41,14 +41,14 @@ define internal void @baz.init(i8* %context, i8* %parentHandle) unnamed_addr {
unreachable ; trigger revert
}
define internal void @main.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal void @main.init(i8* %context) unnamed_addr {
entry:
call void @externalCall(i64 3)
ret void
}
define internal void @x.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal void @x.init(i8* %context) unnamed_addr {
; Test atomic and volatile memory accesses.
store atomic i32 1, i32* @x.atomicNum seq_cst, align 4
%x = load atomic i32, i32* @x.atomicNum seq_cst, align 4
@@ -58,7 +58,7 @@ define internal void @x.init(i8* %context, i8* %parentHandle) unnamed_addr {
ret void
}
define internal void @y.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal void @y.init(i8* %context) unnamed_addr {
entry:
br label %loop
+6 -6
View File
@@ -13,8 +13,8 @@ declare void @externalCall(i64) local_unnamed_addr
define void @runtime.initAll() unnamed_addr {
entry:
call fastcc void @baz.init(i8* undef, i8* undef)
call fastcc void @foo.init(i8* undef, i8* undef)
call fastcc void @baz.init(i8* undef)
call fastcc void @foo.init(i8* undef)
%val = load i64, i64* @foo.knownAtRuntime, align 8
store i64 %val, i64* @bar.knownAtRuntime, align 8
call void @externalCall(i64 3)
@@ -23,20 +23,20 @@ entry:
store i32 %x, i32* @x.atomicNum, align 4
%y = load volatile i32, i32* @x.volatileNum, align 4
store volatile i32 %y, i32* @x.volatileNum, align 4
call fastcc void @y.init(i8* undef, i8* undef)
call fastcc void @y.init(i8* undef)
ret void
}
define internal fastcc void @foo.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal fastcc void @foo.init(i8* %context) unnamed_addr {
store i64 5, i64* @foo.knownAtRuntime, align 8
unreachable
}
define internal fastcc void @baz.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal fastcc void @baz.init(i8* %context) unnamed_addr {
unreachable
}
define internal fastcc void @y.init(i8* %context, i8* %parentHandle) unnamed_addr {
define internal fastcc void @y.init(i8* %context) unnamed_addr {
entry:
br label %loop