[PATCH] D135005: [WebAssembly] Fix return type of __builtin_return_address under wasm64
Sam Clegg via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 30 18:30:02 PDT 2022
sbc100 created this revision.
Herald added subscribers: pmatos, asb, wingo, ecnelises, sunfish, hiraditya, jgravelle-google, dschuff.
Herald added a project: All.
sbc100 requested review of this revision.
Herald added subscribers: llvm-commits, aheejin.
Herald added a project: LLVM.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D135005
Files:
llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
llvm/test/CodeGen/WebAssembly/return-address-emscripten.ll
Index: llvm/test/CodeGen/WebAssembly/return-address-emscripten.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/return-address-emscripten.ll
+++ llvm/test/CodeGen/WebAssembly/return-address-emscripten.ll
@@ -1,11 +1,10 @@
-; RUN: llc < %s -asm-verbose=false | FileCheck %s
-
-target triple = "wasm32-unknown-emscripten"
+; RUN: llc -mtriple=wasm32-unknown-emscripten < %s -asm-verbose=false | FileCheck -DPTR=32 %s
+; RUN: llc -mtriple=wasm64-unknown-emscripten < %s -asm-verbose=false | FileCheck -DPTR=64 %s
; This tests the implementation of __builtin_return_address on emscripten
; CHECK-LABEL: test_returnaddress:
-; CHECK-NEXT: .functype test_returnaddress () -> (i32){{$}}
+; CHECK-NEXT: .functype test_returnaddress () -> (i[[PTR]]){{$}}
; CHECK-NEXT: {{^}} i32.const 0{{$}}
; CHECK-NEXT: {{^}} call emscripten_return_address{{$}}
; CHECK-NEXT: {{^}} end_function{{$}}
Index: llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
===================================================================
--- llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
+++ llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
@@ -71,6 +71,7 @@
i64_i64_func_i64_i64_i64_i64_iPTR,
i64_i64_i64_i64_func_i64_i64_i64_i64,
i64_i64_func_i64_i64_i32,
+ iPTR_func_i32,
iPTR_func_iPTR_i32_iPTR,
iPTR_func_iPTR_iPTR_iPTR,
f32_func_f32_f32_f32,
@@ -329,7 +330,7 @@
Table[RTLIB::STACKPROTECTOR_CHECK_FAIL] = func;
// Return address handling
- Table[RTLIB::RETURN_ADDRESS] = i32_func_i32;
+ Table[RTLIB::RETURN_ADDRESS] = iPTR_func_i32;
// Element-wise Atomic memory
// TODO: Fix these when we implement atomic support
@@ -785,6 +786,10 @@
Params.push_back(wasm::ValType::I64);
Params.push_back(wasm::ValType::I32);
break;
+ case iPTR_func_i32:
+ Rets.push_back(PtrTy);
+ Params.push_back(wasm::ValType::I32);
+ break;
case iPTR_func_iPTR_i32_iPTR:
Rets.push_back(PtrTy);
Params.push_back(PtrTy);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D135005.464453.patch
Type: text/x-patch
Size: 2073 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221001/1377326e/attachment.bin>
More information about the llvm-commits
mailing list