summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorGuanzhong Chen <gzchen@google.com>2019-07-18 21:17:52 +0000
committerGuanzhong Chen <gzchen@google.com>2019-07-18 21:17:52 +0000
commitdf4479200b399a8bc4054ab44cfb40a2a6e44bd8 (patch)
treedd5ee381cf0d4c8e0868770745a2a8c4eed28d81 /llvm
parent1a81d54c77b0dccf07906fb166bfaca53935be8a (diff)
downloadbcm5719-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.cpp2
-rw-r--r--llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll11
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,"",@
OpenPOWER on IntegriCloud