diff options
| author | Guanzhong Chen <gzchen@google.com> | 2019-07-18 21:17:52 +0000 |
|---|---|---|
| committer | Guanzhong Chen <gzchen@google.com> | 2019-07-18 21:17:52 +0000 |
| commit | df4479200b399a8bc4054ab44cfb40a2a6e44bd8 (patch) | |
| tree | dd5ee381cf0d4c8e0868770745a2a8c4eed28d81 /llvm | |
| parent | 1a81d54c77b0dccf07906fb166bfaca53935be8a (diff) | |
| download | bcm5719-llvm-df4479200b399a8bc4054ab44cfb40a2a6e44bd8.tar.gz bcm5719-llvm-df4479200b399a8bc4054ab44cfb40a2a6e44bd8.zip | |
[WebAssembly] Fix __builtin_wasm_tls_base intrinsic
Summary:
Properly generate the outchain for the `__builtin_wasm_tls_base` intrinsic.
Also marked the intrinsic pure, per @sunfish's suggestion.
Reviewers: tlively, aheejin, sbc100, sunfish
Reviewed By: tlively
Subscribers: dschuff, jgravelle-google, hiraditya, cfe-commits, llvm-commits, sunfish
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D64949
llvm-svn: 366499
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp index e57e194fdde..aaf3259e314 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp @@ -235,7 +235,7 @@ void WebAssemblyDAGToDAGISel::Select(SDNode *Node) { assert(PtrVT == MVT::i32 && "only wasm32 is supported for now"); MachineSDNode *TLSBase = CurDAG->getMachineNode( - WebAssembly::GLOBAL_GET_I32, DL, MVT::i32, + WebAssembly::GLOBAL_GET_I32, DL, MVT::i32, MVT::Other, CurDAG->getTargetExternalSymbol("__tls_base", PtrVT), Node->getOperand(0)); ReplaceNode(Node, TLSBase); diff --git a/llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll b/llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll index 975e2ce5569..f121d62346d 100644 --- a/llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll +++ b/llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll @@ -84,6 +84,17 @@ define i8* @tls_base() { ret i8* %1 } +; CHECK-LABEL: tls_base_write: +; CHECK-NEXT: .functype tls_base_write (i32) -> () +define void @tls_base_write(i8** %output) { +; CHECK-NEXT: global.get __tls_base +; CHECK-NEXT: i32.store 0 +; CHECK-NEXT: return + %1 = call i8* @llvm.wasm.tls.base() + store i8* %1, i8** %output + ret void +} + ; CHECK: .type tls,@object ; TLS-NEXT: .section .tbss.tls,"",@ ; NO-TLS-NEXT: .section .bss.tls,"",@ |

