[LoongArch] Ignore warnings when there is no environment in triple
authorWang Rui <wangrui@loongson.cn>
Wed, 14 Jun 2023 05:21:25 +0000 (13:21 +0800)
committerWeining Lu <luweining@loongson.cn>
Wed, 14 Jun 2023 05:23:54 +0000 (13:23 +0800)
In Rust bare-metal targets, there is no environment component in triple name. This patch ignores warnings that look like:

```
warning: triple-implied ABI conflicts with provided target-abi ‘lp64s', using target-abi
```

Reviewed By: SixWeining, xen0n

Differential Revision: https://reviews.llvm.org/D152778

llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchBaseInfo.cpp
llvm/test/CodeGen/LoongArch/target-abi-from-triple-edge-cases.ll

index 3b9ce94..928adb0 100644 (file)
@@ -73,7 +73,7 @@ ABI computeTargetABI(const Triple &TT, StringRef ABIName) {
     break;
   }
 
-  if (!ABIName.empty() && ArgProvidedABI != TripleABI)
+  if (!ABIName.empty() && TT.hasEnvironment() && ArgProvidedABI != TripleABI)
     errs() << "warning: triple-implied ABI conflicts with provided target-abi '"
            << ABIName << "', using target-abi\n";
 
index f30fcb8..1d5ed08 100644 (file)
 ; CONFLICT-ILP32D: warning: triple-implied ABI conflicts with provided target-abi 'ilp32d', using target-abi
 ; CONFLICT-LP64D:  warning: triple-implied ABI conflicts with provided target-abi 'lp64d', using target-abi
 
+;; Check that no warning is reported when there is no environment component in
+;; triple-supplied ABI modifiers and --target-abi is used.
+; RUN: llc --mtriple=loongarch64-linux --target-abi=lp64d --mattr=+d < %s 2>&1 \
+; RUN:   | FileCheck %s --check-prefixes=LP64D,NO-WARNING
+
+; NO-WARNING-NOT:  warning: triple-implied ABI conflicts with provided target-abi 'lp64d', using target-abi
+
 ;; Check that ILP32-on-LA64 and LP64-on-LA32 combinations are handled properly.
 ; RUN: llc --mtriple=loongarch64 --target-abi=ilp32d --mattr=+d < %s 2>&1 \
 ; RUN:   | FileCheck %s --check-prefixes=LP64D,32ON64