WebAssembly: Move runtime libcall setting out of TargetLowering (#142624)
RuntimeLibcallInfo needs to be correct outside of codegen contexts.
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-f128:64-n32:64-S128-ni:1:10:20"
|
||||
target triple = "wasm32-unknown-emscripten"
|
||||
|
||||
define ptr @emscripten_return_address() {
|
||||
ret ptr null
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
; RUN: llvm-as %s -o %t.o
|
||||
; RUN: llvm-as %p/Inputs/libcall-return-addr.ll -o %t.return-addr.o
|
||||
; RUN: rm -f %t.a
|
||||
; RUN: llvm-ar rcs %t.a %t.return-addr.o
|
||||
; RUN: not wasm-ld --export-all %t.o %t.a -o %t.wasm 2>&1 | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-f128:64-n32:64-S128-ni:1:10:20"
|
||||
target triple = "wasm32-unknown-emscripten"
|
||||
|
||||
@g_ptr = global ptr null
|
||||
|
||||
define void @_start() {
|
||||
%addr = call ptr @llvm.returnaddress(i32 1)
|
||||
store ptr %addr, ptr @g_ptr
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: wasm-ld: error: {{.*}}return-addr.o): attempt to add bitcode file after LTO (emscripten_return_address)
|
||||
@@ -531,6 +531,11 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) {
|
||||
setLibcallName(RTLIB::MULO_I64, nullptr);
|
||||
}
|
||||
setLibcallName(RTLIB::MULO_I128, nullptr);
|
||||
} else {
|
||||
// Define the emscripten name for return address helper.
|
||||
// TODO: when implementing other Wasm backends, make this generic or only do
|
||||
// this on emscripten depending on what they end up doing.
|
||||
setLibcallName(RTLIB::RETURN_ADDRESS, "emscripten_return_address");
|
||||
}
|
||||
|
||||
if (TT.isSystemZ() && TT.isOSzOS()) {
|
||||
|
||||
@@ -385,11 +385,6 @@ WebAssemblyTargetLowering::WebAssemblyTargetLowering(
|
||||
|
||||
setMaxAtomicSizeInBitsSupported(64);
|
||||
|
||||
// Define the emscripten name for return address helper.
|
||||
// TODO: when implementing other Wasm backends, make this generic or only do
|
||||
// this on emscripten depending on what they end up doing.
|
||||
setLibcallName(RTLIB::RETURN_ADDRESS, "emscripten_return_address");
|
||||
|
||||
// Always convert switches to br_tables unless there is only one case, which
|
||||
// is equivalent to a simple branch. This reduces code size for wasm, and we
|
||||
// defer possible jump table optimizations to the VM.
|
||||
|
||||
Reference in New Issue
Block a user