From 7a4fab410124144f0196bdee6645b649799dec15 Mon Sep 17 00:00:00 2001 From: wanglei Date: Wed, 12 Jun 2024 17:41:26 +0800 Subject: [LoongArch] Emit error messages when using emulated TLS Reviewed By: SixWeining Pull Request: https://github.com/llvm/llvm-project/pull/92483 --- llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp | 4 ++++ llvm/test/CodeGen/LoongArch/emutls.ll | 11 +++++++++++ 2 files changed, 15 insertions(+) create mode 100644 llvm/test/CodeGen/LoongArch/emutls.ll (limited to 'llvm') 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(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 +} -- cgit v1.1