diff options
| author | Thomas Lively <tlively@google.com> | 2019-05-23 01:24:01 +0000 |
|---|---|---|
| committer | Thomas Lively <tlively@google.com> | 2019-05-23 01:24:01 +0000 |
| commit | 1a3cbe720c30ad07545d433e1807222d1ec5b470 (patch) | |
| tree | bb4a3100000e0f8d910592022eab9e704aa36ae3 /llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp | |
| parent | 86c9ca48c322543798ba2415f0e7fe6b93c4f6a0 (diff) | |
| download | bcm5719-llvm-1a3cbe720c30ad07545d433e1807222d1ec5b470.tar.gz bcm5719-llvm-1a3cbe720c30ad07545d433e1807222d1ec5b470.zip | |
[WebAssembly] Implement __builtin_return_address for emscripten
Summary:
In this patch, `ISD::RETURNADDR` is lowered on the emscripten target
to the new Emscripten runtime function `emscripten_return_address`, which
implements the functionality.
Patch by Guanzhong Chen
Reviewers: tlively, aheejin
Reviewed By: tlively
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62210
llvm-svn: 361454
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp index 2bc602034ba..5a86b27cac0 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp @@ -325,6 +325,9 @@ struct RuntimeLibcallSignatureTable { // __stack_chk_fail Table[RTLIB::STACKPROTECTOR_CHECK_FAIL] = func; + // Return address handling + Table[RTLIB::RETURN_ADDRESS] = i32_func_i32; + // Element-wise Atomic memory // TODO: Fix these when we implement atomic support Table[RTLIB::MEMCPY_ELEMENT_UNORDERED_ATOMIC_1] = unsupported; @@ -499,6 +502,8 @@ struct StaticLibcallNameMap { // consistent with the f64 and f128 names. Map["__extendhfsf2"] = RTLIB::FPEXT_F16_F32; Map["__truncsfhf2"] = RTLIB::FPROUND_F32_F16; + + Map["emscripten_return_address"] = RTLIB::RETURN_ADDRESS; } }; |

