aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwanglei <wanglei@loongson.cn>2024-06-12 17:41:26 +0800
committerGitHub <noreply@github.com>2024-06-12 17:41:26 +0800
commit7a4fab410124144f0196bdee6645b649799dec15 (patch)
tree58d18cbba153b2d87727f596a0a0c67320339838
parentea6577a74baebcc287f8b24d8b098f1d70085911 (diff)
downloadllvm-7a4fab410124144f0196bdee6645b649799dec15.zip
llvm-7a4fab410124144f0196bdee6645b649799dec15.tar.gz
llvm-7a4fab410124144f0196bdee6645b649799dec15.tar.bz2
[LoongArch] Emit error messages when using emulated TLS
Reviewed By: SixWeining Pull Request: https://github.com/llvm/llvm-project/pull/92483
-rw-r--r--llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp4
-rw-r--r--llvm/test/CodeGen/LoongArch/emutls.ll11
2 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp b/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
index 9d7e463..1721287 100644
--- a/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+++ b/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
@@ -945,6 +945,10 @@ LoongArchTargetLowering::lowerGlobalTLSAddress(SDValue Op,
GlobalAddressSDNode *N = cast<GlobalAddressSDNode>(Op);
assert(N->getOffset() == 0 && "unexpected offset in global node");
+ if (DAG.getTarget().useEmulatedTLS())
+ report_fatal_error("the emulated TLS is prohibited",
+ /*GenCrashDiag=*/false);
+
bool IsDesc = DAG.getTarget().useTLSDESC();
switch (getTargetMachine().getTLSModel(N->getGlobal())) {
diff --git a/llvm/test/CodeGen/LoongArch/emutls.ll b/llvm/test/CodeGen/LoongArch/emutls.ll
new file mode 100644
index 0000000..7824ce3
--- /dev/null
+++ b/llvm/test/CodeGen/LoongArch/emutls.ll
@@ -0,0 +1,11 @@
+; RUN: not llc --mtriple=loongarch64 -emulated-tls -mattr=+d \
+; RUN: -relocation-model=pic < %s 2>&1 | FileCheck %s
+
+; CHECK: LLVM ERROR: the emulated TLS is prohibited
+
+@x = thread_local global i8 7, align 2
+
+define ptr @get_x() nounwind {
+entry:
+ ret ptr @x
+}