mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 06:38:42 +00:00
compiler: move wasm ABI workaround to transform package
By considering this as a regular transformation, it can be easily tested.
This commit is contained in:
committed by
Ron Evans
parent
91299b6466
commit
4d79d473c4
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
||||
declare i64 @externalCall(i8*, i32, i64)
|
||||
|
||||
define internal i64 @testCall(i8* %ptr, i32 %len, i64 %foo) {
|
||||
%val = call i64 @externalCall(i8* %ptr, i32 %len, i64 %foo)
|
||||
ret i64 %val
|
||||
}
|
||||
|
||||
define internal i64 @testCallNonEntry(i8* %ptr, i32 %len) {
|
||||
entry:
|
||||
br label %bb1
|
||||
|
||||
bb1:
|
||||
%val = call i64 @externalCall(i8* %ptr, i32 %len, i64 3)
|
||||
ret i64 %val
|
||||
}
|
||||
|
||||
define void @exportedFunction(i64 %foo) {
|
||||
%unused = shl i64 %foo, 1
|
||||
ret void
|
||||
}
|
||||
|
||||
define internal void @callExportedFunction(i64 %foo) {
|
||||
call void @exportedFunction(i64 %foo)
|
||||
ret void
|
||||
}
|
||||
Vendored
+45
@@ -0,0 +1,45 @@
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
||||
declare i64 @"externalCall$i64wrap"(i8*, i32, i64)
|
||||
|
||||
define internal i64 @testCall(i8* %ptr, i32 %len, i64 %foo) {
|
||||
%i64asptr = alloca i64
|
||||
%i64asptr1 = alloca i64
|
||||
store i64 %foo, i64* %i64asptr1
|
||||
call void @externalCall(i64* %i64asptr, i8* %ptr, i32 %len, i64* %i64asptr1)
|
||||
%retval = load i64, i64* %i64asptr
|
||||
ret i64 %retval
|
||||
}
|
||||
|
||||
define internal i64 @testCallNonEntry(i8* %ptr, i32 %len) {
|
||||
entry:
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %entry
|
||||
%i64asptr = alloca i64
|
||||
%i64asptr1 = alloca i64
|
||||
store i64 3, i64* %i64asptr1
|
||||
call void @externalCall(i64* %i64asptr, i8* %ptr, i32 %len, i64* %i64asptr1)
|
||||
%retval = load i64, i64* %i64asptr
|
||||
ret i64 %retval
|
||||
}
|
||||
|
||||
define internal void @"exportedFunction$i64wrap"(i64 %foo) unnamed_addr {
|
||||
%unused = shl i64 %foo, 1
|
||||
ret void
|
||||
}
|
||||
|
||||
define internal void @callExportedFunction(i64 %foo) {
|
||||
call void @"exportedFunction$i64wrap"(i64 %foo)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @externalCall(i64*, i8*, i32, i64*)
|
||||
|
||||
define void @exportedFunction(i64*) {
|
||||
entry:
|
||||
%i64 = load i64, i64* %0
|
||||
call void @"exportedFunction$i64wrap"(i64 %i64)
|
||||
ret void
|
||||
}
|
||||
Reference in New Issue
Block a user