[llvm] [llvm][lit] Handle case when there is no llvm default target triple (PR #76934)

David Spickett via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 4 02:20:25 PST 2024


https://github.com/DavidSpickett created https://github.com/llvm/llvm-project/pull/76934

This can happen when you do not choose a specific target triple, and do not enable the host architecture when building (if you do enable it, it would become the default target). Such as only enabling RISC-V, when building on an AArch64 machine.

Originally reported https://discourse.llvm.org/t/llvm-test-error-could-not-turn-into-itanium-abi-triple/76013.

When attempting to run a single test via lit you get: `Could not turn '' into Itanium ABI triple`

Setting a default triple with `LLVM_DEFAULT_TARGET_TRIPLE` works around the issue.

This change copies the existing host triple checks to target triple, and adds a note to highlight the potential issue. As `check-clang` on my AArch64 machine failed 32% of tests in this configuration.

Which is to be expected and is ok if you only want to run specific tests, but for anyone unintentionally building this way the note is a clue to the cause.

>From dd71751f6e0e0ece16184a7428ecd160ef320bc6 Mon Sep 17 00:00:00 2001
From: David Spickett <david.spickett at linaro.org>
Date: Thu, 4 Jan 2024 09:56:35 +0000
Subject: [PATCH] [llvm][lit] Handle case when there is no llvm default target
 triple

This can happen when you do not choose a specific target triple,
and do not enable the host architecture when building
(if you do enable it, it would become the default target).
Such as only enabling RISC-V, when building on an AArch64 machine.

Originally reported https://discourse.llvm.org/t/llvm-test-error-could-not-turn-into-itanium-abi-triple/76013.

When attempting to run a single test via lit you get:
`Could not turn '' into Itanium ABI triple`

Setting a default triple with `LLVM_DEFAULT_TARGET_TRIPLE` works
around the issue.

This change copies the existing host triple checks to target triple,
and adds a note to highlight the potential issue. As `check-clang` on my
AArch64 machine failed 32% of tests in this configuration.

Which is to be expected and is ok if you only want to run specific tests,
but for anyone unintentionally building this way the note is a clue to
the cause.
---
 llvm/utils/lit/lit/llvm/config.py | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py
index 79094b839e772e..c39c4c7da8397a 100644
--- a/llvm/utils/lit/lit/llvm/config.py
+++ b/llvm/utils/lit/lit/llvm/config.py
@@ -632,15 +632,28 @@ def use_clang(
             self.add_tool_substitutions(tool_substitutions)
             self.config.substitutions.append(("%resource_dir", builtin_include_dir))
 
-        self.config.substitutions.append(
-            (
-                "%itanium_abi_triple",
-                self.make_itanium_abi_triple(self.config.target_triple),
+        # There will be no default target triple if one was not specifically
+        # set, and the host's architecture is not an enabled target.
+        if (
+            self.config.target_triple
+            and self.config.target_triple != "@LLVM_TARGET_TRIPLE@"
+        ):
+            self.config.substitutions.append(
+                (
+                    "%itanium_abi_triple",
+                    self.make_itanium_abi_triple(self.config.target_triple),
+                )
             )
-        )
-        self.config.substitutions.append(
-            ("%ms_abi_triple", self.make_msabi_triple(self.config.target_triple))
-        )
+            self.config.substitutions.append(
+                ("%ms_abi_triple", self.make_msabi_triple(self.config.target_triple))
+            )
+        else:
+            if not self.lit_config.quiet:
+                self.lit_config.note(
+                    "No default target triple was found, some tests may fail as a result."
+                )
+            self.config.substitutions.append(("%itanium_abi_triple", ""))
+            self.config.substitutions.append(("%ms_abi_triple", ""))
 
         # The host triple might not be set, at least if we're compiling clang
         # from an already installed llvm.



More information about the llvm-commits mailing list