diff options
-rw-r--r-- | llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp | 4 | ||||
-rw-r--r-- | llvm/test/CodeGen/LoongArch/emutls.ll | 11 |
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 +} |