Skip to content

Reland "[GlobalISel][LLT] Introduce FPInfo for LLT (Enable bfloat, ppc128float and others in GlobalISel) (#155107)"#188502

Merged
lialan merged 3 commits into
llvm:mainfrom
lialan:fix_gcc_build
Apr 4, 2026
Merged

Reland "[GlobalISel][LLT] Introduce FPInfo for LLT (Enable bfloat, ppc128float and others in GlobalISel) (#155107)"#188502
lialan merged 3 commits into
llvm:mainfrom
lialan:fix_gcc_build

Conversation

@lialan

@lialan lialan commented Mar 25, 2026

Copy link
Copy Markdown
Member

This is a reland of #155107 along with a fix for old gcc builds.

This patch is reverted in #188344 due to compilation failures described in #155107 (comment)

The fix to old gcc builds is to remove constexpr modifiers in the original patch in 0721d8e

lialan added 2 commits March 25, 2026 07:01
…loat, ppc128float and others in GlobalISel) (llvm#155107)" (llvm#188344)"

This reverts commit 6a045c2.
…calling non-constexpr integer()/floatingPoint()

PR llvm#155107 introduced LLT::integer() and LLT::floatingPoint() which are
non-constexpr (they call getUseExtended() which reads a mutable static).
Several constexpr member functions now transitively call these, which
GCC 7/8 eagerly rejects even if the non-constexpr path is never taken
at compile time. GCC 9+ defers this check and accepts the code.

Remove constexpr from: getScalarType, changeElementSize,
changeVectorElementCount, changeElementCount, divide, multiplyElements,
getElementType, changeToInteger, operator==, operator!=.

Convert affected static_asserts in LowLevelTypeTest.cpp to runtime
EXPECT_EQ checks.
@llvmbot

llvmbot commented Mar 25, 2026

Copy link
Copy Markdown
Member

@llvm/pr-subscribers-tablegen
@llvm/pr-subscribers-llvm-globalisel
@llvm/pr-subscribers-backend-amdgpu

@llvm/pr-subscribers-backend-aarch64

Author: Alan Li (lialan)

Changes

This is a reland of #155107 along with a fix for old gcc builds.

This patch is reverted in #188344 due to compilation failures described in #155107 (comment)

The fix to old gcc builds is to remove constexpr modifiers in the original patch in 0721d8e


Patch is 144.96 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/188502.diff

54 Files Affected:

  • (modified) llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h (+2)
  • (modified) llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h (+16-11)
  • (modified) llvm/include/llvm/CodeGen/LowLevelTypeUtils.h (+1-1)
  • (modified) llvm/include/llvm/CodeGen/TargetLowering.h (+1-1)
  • (modified) llvm/include/llvm/CodeGenTypes/LowLevelType.h (+396-139)
  • (modified) llvm/lib/CodeGen/GlobalISel/CallLowering.cpp (+23-9)
  • (modified) llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp (+16-3)
  • (modified) llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp (+40-35)
  • (modified) llvm/lib/CodeGen/GlobalISel/LegalizeMutations.cpp (+11-2)
  • (modified) llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp (+160-73)
  • (modified) llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp (+3-2)
  • (modified) llvm/lib/CodeGen/GlobalISel/Utils.cpp (+22-2)
  • (modified) llvm/lib/CodeGen/LowLevelTypeUtils.cpp (+69-25)
  • (modified) llvm/lib/CodeGen/MIRParser/MIParser.cpp (+79-37)
  • (modified) llvm/lib/CodeGen/MachineVerifier.cpp (+10-1)
  • (modified) llvm/lib/CodeGenTypes/LowLevelType.cpp (+69-14)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp (+5-3)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp (+10-8)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-subvector.ll (+6-2)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/pr168872.ll (+8-10)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll (+3-1)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/translate-sve-formal-argument-multiple.ll (+36-8)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/translate-sve-formal-argument.ll (+17-3)
  • (modified) llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid0.mir (+2-2)
  • (modified) llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid1.mir (+2-2)
  • (modified) llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid2.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/AArch64/parse-low-level-type-invalid3.mir (+3-3)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err0.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err1.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err10.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err11.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err12.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err13.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err14.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err15.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err2.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err3.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err4.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err5.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err6.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err7.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err8.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/Generic/scalable-vector-type-err9.mir (+1-1)
  • (modified) llvm/test/CodeGen/MIR/WebAssembly/typed-immediate-operand-invalid0.mir (+2-2)
  • (modified) llvm/test/CodeGen/MIR/WebAssembly/typed-immediate-operand-invalid1.mir (+2-2)
  • (modified) llvm/test/TableGen/GlobalISelEmitter/GlobalISelEmitter.td (+33-3)
  • (modified) llvm/test/TableGen/GlobalISelEmitter/HwModes.td (+5-5)
  • (modified) llvm/unittests/CodeGen/GlobalISel/CMakeLists.txt (+1)
  • (added) llvm/unittests/CodeGen/GlobalISel/IRTranslatorBF16Test.cpp (+135)
  • (modified) llvm/unittests/CodeGen/LowLevelTypeTest.cpp (+15-15)
  • (modified) llvm/utils/TableGen/Common/CMakeLists.txt (+3)
  • (modified) llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp (+64-39)
  • (modified) llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTableExecutorEmitter.cpp (+10)
  • (modified) llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTableExecutorEmitter.h (+1-1)
diff --git a/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h b/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
index 6d916b76cee55..7815ad686cbaa 100644
--- a/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
+++ b/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
@@ -650,6 +650,8 @@ class IRTranslator : public MachineFunctionPass {
 
   StackProtectorDescriptor SPDescriptor;
 
+  bool mayTranslateUserTypes(const User &U) const;
+
   /// Switch analysis and optimization.
   class GISelSwitchLowering : public SwitchCG::SwitchLowering {
   public:
diff --git a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
index 9afccf86576f2..8d27f85c04b87 100644
--- a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
+++ b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
@@ -402,6 +402,11 @@ LLVM_ABI LegalizeMutation changeElementCountTo(unsigned TypeIdx,
 LLVM_ABI LegalizeMutation changeElementSizeTo(unsigned TypeIdx,
                                               unsigned FromTypeIdx);
 
+/// Change the scalar size or element size to have the same scalar size as the
+/// type \p NewTy. Unlike changeElementTo, this discards pointer types and only
+/// changes the size.
+LLVM_ABI LegalizeMutation changeElementSizeTo(unsigned TypeIdx, LLT NewTy);
+
 /// Widen the scalar type or vector element type for the given type index to the
 /// next power of 2.
 LLVM_ABI LegalizeMutation widenScalarOrEltToNextPow2(unsigned TypeIdx,
@@ -1048,7 +1053,7 @@ class LegalizeRuleSet {
     using namespace LegalizeMutations;
     return actionIf(LegalizeAction::WidenScalar,
                     scalarOrEltNarrowerThan(TypeIdx, Ty.getScalarSizeInBits()),
-                    changeElementTo(typeIdx(TypeIdx), Ty));
+                    changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
 
   /// Ensure the scalar or element is at least as wide as Ty.
@@ -1059,7 +1064,7 @@ class LegalizeRuleSet {
     return actionIf(LegalizeAction::WidenScalar,
                     all(Predicate, scalarOrEltNarrowerThan(
                                        TypeIdx, Ty.getScalarSizeInBits())),
-                    changeElementTo(typeIdx(TypeIdx), Ty));
+                    changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
 
   /// Ensure the vector size is at least as wide as VectorSize by promoting the
@@ -1078,7 +1083,8 @@ class LegalizeRuleSet {
           const LLT VecTy = Query.Types[TypeIdx];
           unsigned NumElts = VecTy.getNumElements();
           unsigned MinSize = VectorSize / NumElts;
-          LLT NewTy = LLT::fixed_vector(NumElts, LLT::scalar(MinSize));
+          LLT NewTy = LLT::fixed_vector(
+              NumElts, VecTy.getElementType().changeElementSize(MinSize));
           return std::make_pair(TypeIdx, NewTy);
         });
   }
@@ -1089,7 +1095,7 @@ class LegalizeRuleSet {
     using namespace LegalizeMutations;
     return actionIf(LegalizeAction::WidenScalar,
                     scalarNarrowerThan(TypeIdx, Ty.getSizeInBits()),
-                    changeTo(typeIdx(TypeIdx), Ty));
+                    changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
   LegalizeRuleSet &minScalar(bool Pred, unsigned TypeIdx, const LLT Ty) {
     if (!Pred)
@@ -1110,7 +1116,7 @@ class LegalizeRuleSet {
                  QueryTy.getSizeInBits() < Ty.getSizeInBits() &&
                  Predicate(Query);
         },
-        changeTo(typeIdx(TypeIdx), Ty));
+        changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
 
   /// Ensure the scalar is at most as wide as Ty.
@@ -1119,7 +1125,7 @@ class LegalizeRuleSet {
     using namespace LegalizeMutations;
     return actionIf(LegalizeAction::NarrowScalar,
                     scalarOrEltWiderThan(TypeIdx, Ty.getScalarSizeInBits()),
-                    changeElementTo(typeIdx(TypeIdx), Ty));
+                    changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
 
   /// Ensure the scalar is at most as wide as Ty.
@@ -1128,7 +1134,7 @@ class LegalizeRuleSet {
     using namespace LegalizeMutations;
     return actionIf(LegalizeAction::NarrowScalar,
                     scalarWiderThan(TypeIdx, Ty.getSizeInBits()),
-                    changeTo(typeIdx(TypeIdx), Ty));
+                    changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
 
   /// Conditionally limit the maximum size of the scalar.
@@ -1146,7 +1152,7 @@ class LegalizeRuleSet {
                  QueryTy.getSizeInBits() > Ty.getSizeInBits() &&
                  Predicate(Query);
         },
-        changeElementTo(typeIdx(TypeIdx), Ty));
+        changeElementSizeTo(typeIdx(TypeIdx), Ty));
   }
 
   /// Limit the range of scalar sizes to MinTy and MaxTy.
@@ -1211,9 +1217,8 @@ class LegalizeRuleSet {
                  Predicate(Query);
         },
         [=](const LegalityQuery &Query) {
-          LLT T = Query.Types[LargeTypeIdx];
-          if (T.isPointerVector())
-            T = T.changeElementType(LLT::scalar(T.getScalarSizeInBits()));
+          LLT T = Query.Types[TypeIdx].changeElementSize(
+              Query.Types[LargeTypeIdx].getScalarSizeInBits());
           return std::make_pair(TypeIdx, T);
         });
   }
diff --git a/llvm/include/llvm/CodeGen/LowLevelTypeUtils.h b/llvm/include/llvm/CodeGen/LowLevelTypeUtils.h
index 51a298eb8b247..f0c1758a4c9cc 100644
--- a/llvm/include/llvm/CodeGen/LowLevelTypeUtils.h
+++ b/llvm/include/llvm/CodeGen/LowLevelTypeUtils.h
@@ -41,6 +41,6 @@ LLVM_ABI LLT getLLTForMVT(MVT Ty);
 /// Get the appropriate floating point arithmetic semantic based on the bit size
 /// of the given scalar LLT.
 LLVM_ABI const llvm::fltSemantics &getFltSemanticForLLT(LLT Ty);
-}
+} // namespace llvm
 
 #endif // LLVM_CODEGEN_LOWLEVELTYPEUTILS_H
diff --git a/llvm/include/llvm/CodeGen/TargetLowering.h b/llvm/include/llvm/CodeGen/TargetLowering.h
index 51c00b2591ecf..a3583013de52d 100644
--- a/llvm/include/llvm/CodeGen/TargetLowering.h
+++ b/llvm/include/llvm/CodeGen/TargetLowering.h
@@ -443,7 +443,7 @@ class LLVM_ABI TargetLoweringBase {
   /// G_INSERT_VECTOR_ELT, G_EXTRACT_VECTOR_ELT,
   /// G_INSERT_SUBVECTOR, and G_EXTRACT_SUBVECTOR
   LLT getVectorIdxLLT(const DataLayout &DL) const {
-    return LLT::scalar(getVectorIdxWidth(DL));
+    return LLT::integer(getVectorIdxWidth(DL));
   }
 
   /// Returns the type to be used for the EVL/AVL operand of VP nodes:
diff --git a/llvm/include/llvm/CodeGenTypes/LowLevelType.h b/llvm/include/llvm/CodeGenTypes/LowLevelType.h
index 92def9209d47a..9c50d356f7d6e 100644
--- a/llvm/include/llvm/CodeGenTypes/LowLevelType.h
+++ b/llvm/include/llvm/CodeGenTypes/LowLevelType.h
@@ -9,27 +9,32 @@
 /// Implement a low-level type suitable for MachineInstr level instruction
 /// selection.
 ///
-/// For a type attached to a MachineInstr, we only care about 2 details: total
-/// size and the number of vector lanes (if any). Accordingly, there are 4
-/// possible valid type-kinds:
+/// For a type attached to a MachineInstr, we care about total
+/// size, the number of vector lanes (if any)
+/// and the kind of the type (anyscalar, integer, float and etc).
+/// Floating point are filled with APFloat::Semantics to make them
+/// distinguishable.
 ///
-///    * `sN` for scalars and aggregates
-///    * `<N x sM>` for vectors, which must have at least 2 elements.
-///    * `pN` for pointers
+/// Earlier other information required for correct selection was expected to be
+/// carried only by the opcode, or non-type flags. For example the distinction
+/// between G_ADD and G_FADD for int/float or fast-math flags.
 ///
-/// Other information required for correct selection is expected to be carried
-/// by the opcode, or non-type flags. For example the distinction between G_ADD
-/// and G_FADD for int/float or fast-math flags.
+/// Now we also able to rely on the kind of the type.
+/// This may be useful to distinguish different types of the same size used at
+/// the same opcode, for example, G_FADD with half vs G_FADD with bfloat16.
 ///
 //===----------------------------------------------------------------------===//
 
 #ifndef LLVM_CODEGEN_LOWLEVELTYPE_H
 #define LLVM_CODEGEN_LOWLEVELTYPE_H
 
+#include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/DenseMapInfo.h"
+#include "llvm/ADT/bit.h"
 #include "llvm/CodeGenTypes/MachineValueType.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/Debug.h"
+#include "llvm/Support/ErrorHandling.h"
 #include <cassert>
 
 namespace llvm {
@@ -39,68 +44,166 @@ class raw_ostream;
 
 class LLT {
 public:
+  using FpSemantics = APFloat::Semantics;
+
+  enum class Kind : uint8_t {
+    INVALID,
+    ANY_SCALAR,
+    INTEGER,
+    FLOAT,
+    POINTER,
+    VECTOR_ANY,
+    VECTOR_INTEGER,
+    VECTOR_FLOAT,
+    VECTOR_POINTER,
+  };
+
+  constexpr static Kind toVector(Kind Ty) {
+    if (Ty == Kind::POINTER)
+      return Kind::VECTOR_POINTER;
+
+    if (Ty == Kind::INTEGER)
+      return Kind::VECTOR_INTEGER;
+
+    if (Ty == Kind::FLOAT)
+      return Kind::VECTOR_FLOAT;
+
+    return Kind::VECTOR_ANY;
+  }
+
+  constexpr static Kind toScalar(Kind Ty) {
+    if (Ty == Kind::VECTOR_POINTER)
+      return Kind::POINTER;
+
+    if (Ty == Kind::VECTOR_INTEGER)
+      return Kind::INTEGER;
+
+    if (Ty == Kind::VECTOR_FLOAT)
+      return Kind::FLOAT;
+
+    return Kind::ANY_SCALAR;
+  }
+
   /// Get a low-level scalar or aggregate "bag of bits".
   static constexpr LLT scalar(unsigned SizeInBits) {
-    return LLT{/*isPointer=*/false, /*isVector=*/false, /*isScalar=*/true,
-               ElementCount::getFixed(0), SizeInBits,
-               /*AddressSpace=*/0};
+    return LLT{Kind::ANY_SCALAR, ElementCount::getFixed(0), SizeInBits};
+  }
+
+  static LLT integer(unsigned SizeInBits) {
+    if (!getUseExtended())
+      return LLT::scalar(SizeInBits);
+
+    return LLT{Kind::INTEGER, ElementCount::getFixed(0), SizeInBits};
+  }
+
+  static LLT floatingPoint(const FpSemantics &Sem) {
+    if (!getUseExtended())
+      return LLT::scalar(
+          APFloat::getSizeInBits(APFloatBase::EnumToSemantics(Sem)));
+
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0),
+               APFloat::getSizeInBits(APFloatBase::EnumToSemantics(Sem)), Sem};
   }
 
   /// Get a low-level token; just a scalar with zero bits (or no size).
   static constexpr LLT token() {
-    return LLT{/*isPointer=*/false, /*isVector=*/false,
-               /*isScalar=*/true,   ElementCount::getFixed(0),
-               /*SizeInBits=*/0,
-               /*AddressSpace=*/0};
+    return LLT{Kind::ANY_SCALAR, ElementCount::getFixed(0),
+               /*SizeInBits=*/0};
   }
 
   /// Get a low-level pointer in the given address space.
   static constexpr LLT pointer(unsigned AddressSpace, unsigned SizeInBits) {
     assert(SizeInBits > 0 && "invalid pointer size");
-    return LLT{/*isPointer=*/true, /*isVector=*/false, /*isScalar=*/false,
-               ElementCount::getFixed(0), SizeInBits, AddressSpace};
+    return LLT{Kind::POINTER, ElementCount::getFixed(0), SizeInBits,
+               AddressSpace};
   }
 
   /// Get a low-level vector of some number of elements and element width.
   static constexpr LLT vector(ElementCount EC, unsigned ScalarSizeInBits) {
     assert(!EC.isScalar() && "invalid number of vector elements");
-    return LLT{/*isPointer=*/false, /*isVector=*/true, /*isScalar=*/false,
-               EC, ScalarSizeInBits, /*AddressSpace=*/0};
+    return LLT{Kind::VECTOR_ANY, EC, ScalarSizeInBits};
   }
 
   /// Get a low-level vector of some number of elements and element type.
   static constexpr LLT vector(ElementCount EC, LLT ScalarTy) {
     assert(!EC.isScalar() && "invalid number of vector elements");
     assert(!ScalarTy.isVector() && "invalid vector element type");
-    return LLT{ScalarTy.isPointer(),
-               /*isVector=*/true,
-               /*isScalar=*/false,
-               EC,
-               ScalarTy.getSizeInBits().getFixedValue(),
-               ScalarTy.isPointer() ? ScalarTy.getAddressSpace() : 0};
+
+    Kind Info = toVector(ScalarTy.Info);
+    if (ScalarTy.isPointer())
+      return LLT{Info, EC, ScalarTy.getSizeInBits().getFixedValue(),
+                 ScalarTy.getAddressSpace()};
+    if (ScalarTy.isFloat())
+      return LLT{Info, EC, ScalarTy.getSizeInBits().getFixedValue(),
+                 ScalarTy.getFpSemantics()};
+
+    return LLT{Info, EC, ScalarTy.getSizeInBits().getFixedValue()};
+  }
+
+  // FIXME: Remove this builder
+  static LLT floatIEEE(unsigned SizeInBits) {
+    if (!getUseExtended())
+      return LLT::scalar(SizeInBits);
+
+    switch (SizeInBits) {
+    default:
+      llvm_unreachable("Wrong SizeInBits for IEEE Floating point!");
+    case 16:
+      return float16();
+    case 32:
+      return float32();
+    case 64:
+      return float64();
+    case 128:
+      return float128();
+    }
   }
 
+  // Get a bfloat16 value.
+  static constexpr LLT bfloat16() {
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 16,
+               FpSemantics::S_BFloat};
+  }
   /// Get a 16-bit IEEE half value.
-  /// TODO: Add IEEE semantics to type - This currently returns a simple `scalar(16)`.
   static constexpr LLT float16() {
-    return scalar(16);
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 16,
+               FpSemantics::S_IEEEhalf};
   }
-
   /// Get a 32-bit IEEE float value.
   static constexpr LLT float32() {
-    return scalar(32);
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 32,
+               FpSemantics::S_IEEEsingle};
   }
-
   /// Get a 64-bit IEEE double value.
   static constexpr LLT float64() {
-    return scalar(64);
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 64,
+               FpSemantics::S_IEEEdouble};
+  }
+
+  /// Get a 80-bit X86 floating point value.
+  static constexpr LLT x86fp80() {
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 80,
+               FpSemantics::S_x87DoubleExtended};
+  }
+
+  /// Get a 128-bit IEEE quad value.
+  static constexpr LLT float128() {
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 128,
+               FpSemantics::S_IEEEquad};
+  }
+
+  /// Get a 128-bit PowerPC double double value.
+  static constexpr LLT ppcf128() {
+    return LLT{Kind::FLOAT, ElementCount::getFixed(0), 128,
+               FpSemantics::S_PPCDoubleDouble};
   }
 
   /// Get a low-level fixed-width vector of some number of elements and element
   /// width.
   static constexpr LLT fixed_vector(unsigned NumElements,
                                     unsigned ScalarSizeInBits) {
-    return vector(ElementCount::getFixed(NumElements), ScalarSizeInBits);
+    return vector(ElementCount::getFixed(NumElements),
+                  LLT::scalar(ScalarSizeInBits));
   }
 
   /// Get a low-level fixed-width vector of some number of elements and element
@@ -113,7 +216,8 @@ class LLT {
   /// width.
   static constexpr LLT scalable_vector(unsigned MinNumElements,
                                        unsigned ScalarSizeInBits) {
-    return vector(ElementCount::getScalable(MinNumElements), ScalarSizeInBits);
+    return vector(ElementCount::getScalable(MinNumElements),
+                  LLT::scalar(ScalarSizeInBits));
   }
 
   /// Get a low-level scalable vector of some number of elements and element
@@ -132,27 +236,81 @@ class LLT {
     return scalarOrVector(EC, LLT::scalar(static_cast<unsigned>(ScalarSize)));
   }
 
-  explicit constexpr LLT(bool isPointer, bool isVector, bool isScalar,
-                         ElementCount EC, uint64_t SizeInBits,
+  explicit constexpr LLT(Kind Info, ElementCount EC, uint64_t SizeInBits)
+      : LLT() {
+    init(Info, EC, SizeInBits);
+  }
+
+  explicit constexpr LLT(Kind Info, ElementCount EC, uint64_t SizeInBits,
                          unsigned AddressSpace)
       : LLT() {
-    init(isPointer, isVector, isScalar, EC, SizeInBits, AddressSpace);
+    init(Info, EC, SizeInBits, AddressSpace);
+  }
+
+  explicit constexpr LLT(Kind Info, ElementCount EC, uint64_t SizeInBits,
+                         FpSemantics Sem)
+      : LLT() {
+    init(Info, EC, SizeInBits, Sem);
   }
-  explicit constexpr LLT()
-      : IsScalar(false), IsPointer(false), IsVector(false), RawData(0) {}
 
   LLVM_ABI explicit LLT(MVT VT);
+  explicit constexpr LLT() : RawData(0), Info(static_cast<Kind>(0)) {}
 
-  constexpr bool isValid() const { return IsScalar || RawData != 0; }
-  constexpr bool isScalar() const { return IsScalar; }
-  constexpr bool isToken() const { return IsScalar && RawData == 0; };
-  constexpr bool isVector() const { return isValid() && IsVector; }
-  constexpr bool isPointer() const {
-    return isValid() && IsPointer && !IsVector;
+  constexpr bool isToken() const {
+    return Info == Kind::ANY_SCALAR && RawData == 0;
+  }
+  constexpr bool isValid() const { return isToken() || RawData != 0; }
+  constexpr bool isAnyScalar() const { return Info == Kind::ANY_SCALAR; }
+  constexpr bool isInteger() const { return Info == Kind::INTEGER; }
+  constexpr bool isFloat() const { return Info == Kind::FLOAT; }
+  constexpr bool isPointer() const { return Info == Kind::POINTER; }
+  constexpr bool isAnyVector() const { return Info == Kind::VECTOR_ANY; }
+  constexpr bool isIntegerVector() const {
+    return Info == Kind::VECTOR_INTEGER;
+  }
+  constexpr bool isFloatVector() const { return Info == Kind::VECTOR_FLOAT; }
+  constexpr bool isPointerVector() const {
+    return Info == Kind::VECTOR_POINTER;
   }
-  constexpr bool isPointerVector() const { return IsPointer && isVector(); }
   constexpr bool isPointerOrPointerVector() const {
-    return IsPointer && isValid();
+    return isPointer() || isPointerVector();
+  }
+
+  constexpr bool isScalar() const {
+    return Info == Kind::ANY_SCALAR || Info == Kind::INTEGER ||
+           Info == Kind::FLOAT;
+  }
+  constexpr bool isScalar(unsigned Size) const {
+    return isScalar() && getScalarSizeInBits() == Size;
+  }
+  constexpr bool isVector() const {
+    return Info == Kind::VECTOR_ANY || Info == Kind::VECTOR_INTEGER ||
+           Info == Kind::VECTOR_FLOAT || Info == Kind::VECTOR_POINTER;
+  }
+
+  constexpr bool isInteger(unsigned Size) const {
+    return isInteger() && getScalarSizeInBits() == Size;
+  }
+
+  constexpr bool isFloat(unsigned Size) const {
+    return isFloat() && getScalarSizeInBits() == Size;
+  }
+  constexpr bool isFloat(FpSemantics Sem) const {
+    return isFloat() && getFpSemantics() == Sem;
+  }
+  // FIXME: Remove or rework this predicate
+  constexpr bool isFloatIEEE() const {
+    return isFloat(APFloatBase::S_IEEEhalf) ||
+           isFloat(APFloatBase::S_IEEEsingle) ||
+           isFloat(APFloatBase::S_IEEEdouble) ||
+           isFloat(APFloatBase::S_IEEEquad);
+  }
+  constexpr bool isBFloat16() const { return isFloat(FpSemantics::S_BFloat); }
+  constexpr bool isX86FP80() const {
+    return isFloat(FpSemantics::S_x87DoubleExtended);
+  }
+  constexpr bool isPPCF128() const {
+    return isFloat(FpSemantics::S_PPCDoubleDouble);
   }
 
   /// Returns the number of elements in a vector LLT. Must only be called on
@@ -177,12 +335,18 @@ class LLT {
   /// if the LLT is not a vector type.
   constexpr bool isFixedVector() const { return isVector() && !isScalable(); }
 
+  constexpr bool isFixedVector(unsigned NumElements,
+                               unsigned ScalarSize) const {
+    return isFixedVector() && getNumElements() == NumElements &&
+           getScalarSizeInBits() == ScalarSize;
+  }
+
   /// Returns true if the LLT is a scalable vector. Returns false otherwise,
   /// even if the LLT is not a vector type.
   constexpr bool isScalableVector() const { return isVector() && isScalable(); }
 
   constexpr ElementCount getElementCount() const {
-    assert(IsVector && "cannot get number of elements on scalar/aggregate");
+    assert(isVector() && "cannot get number of elements on scalar/aggregate");
     return ElementCount::get(getFieldValue(VectorElementsFieldInfo),
                              isScalable());
   }
@@ -203,10 +367,18 @@ class LLT {
     return {(BaseSize.getKnownMinValue() + 7) / 8, BaseSize.isScalable()};
   }
 
-  constexpr LLT getScalarType() const {
+  LLT getScalarType() const {
     return isVector() ? getElementType() : *this;
   }
 
+  constexpr FpSemantics getFpSemantics() const {
+    assert((isFloat() || isFloatVector()) &&
+           "cannot get FP info for non float type");
+    return FpSemantics(getFieldValue(FpSemanticFieldInfo));
+  }
+
+  constexpr Kind getKind() const {...
[truncated]

@github-actions

github-actions Bot commented Mar 25, 2026

Copy link
Copy Markdown

✅ With the latest revision this PR passed the C/C++ code formatter.

@lialan

lialan commented Mar 25, 2026

Copy link
Copy Markdown
Member Author

@DenisGZM

@DenisGZM

Copy link
Copy Markdown
Contributor

@lialan Thank you for helping with this!

@lialan

lialan commented Mar 25, 2026

Copy link
Copy Markdown
Member Author

@aengelke This reland is going to give compilation time regression again.

@aengelke

Copy link
Copy Markdown
Contributor

Could you investigate what specifically causes the regression and say to which extent this could be optimized?

@lialan

lialan commented Mar 25, 2026

Copy link
Copy Markdown
Member Author

Could you investigate what specifically causes the regression and say to which extent this could be optimized?

@DenisGZM Maybe you are the better person to answer this question.

@DenisGZM

Copy link
Copy Markdown
Contributor

Could you investigate what specifically causes the regression and say to which extent this could be optimized?

Well, the first obvious guess is that we added checks if extended LLT is available for every new builders and we used them in shared places like IRTranslator or LegalizerHelper instead of constexpr scalar now.

I've tried to quickly reproduce regression in some tests, but I got the opposite result, so it still need to be investigated more deeply. I'll try to look into it this weekend.

@lialan

lialan commented Apr 3, 2026

Copy link
Copy Markdown
Member Author

@joker-eph @aengelke if no objections, i am going to reland this.

@aengelke

aengelke commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

I'm not objecting -- I've personally given up on GISel c-t performance anyway. (I still don't like the regression, but whatever.)

@lialan
lialan merged commit 5e0efc0 into llvm:main Apr 4, 2026
10 checks passed
@lialan
lialan deleted the fix_gcc_build branch April 4, 2026 12:57
@llvm-ci

llvm-ci commented Apr 4, 2026

Copy link
Copy Markdown

LLVM Buildbot has detected a new failure on builder lldb-aarch64-ubuntu running on linaro-lldb-aarch64-ubuntu while building llvm at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/59/builds/33299

Here is the relevant piece of the build log for the reference
Step 6 (test) failure: build (failure)
...
PASS: lldb-api :: commands/log/basic/TestLogHandlers.py (196 of 2524)
PASS: lldb-api :: commands/help/TestHelp.py (197 of 2524)
PASS: lldb-api :: commands/log/invalid-args/TestInvalidArgsLog.py (198 of 2524)
PASS: lldb-api :: commands/memory/write/TestMemoryWrite.py (199 of 2524)
PASS: lldb-api :: commands/platform/basic/TestPlatformPython.py (200 of 2524)
PASS: lldb-api :: commands/platform/basic/TestPlatformCommand.py (201 of 2524)
PASS: lldb-api :: commands/platform/file/close/TestPlatformFileClose.py (202 of 2524)
PASS: lldb-api :: commands/platform/file/read/TestPlatformFileRead.py (203 of 2524)
PASS: lldb-api :: commands/memory/read/TestMemoryRead.py (204 of 2524)
UNRESOLVED: lldb-api :: commands/gui/spawn-threads/TestGuiSpawnThreads.py (205 of 2524)
******************** TEST 'lldb-api :: commands/gui/spawn-threads/TestGuiSpawnThreads.py' FAILED ********************
Script:
--
/usr/bin/python3.10 /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS --env LLVM_LIBS_DIR=/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./lib --env LLVM_INCLUDE_DIR=/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/include --env LLVM_TOOLS_DIR=/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin --arch aarch64 --build-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex --lldb-module-cache-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api --clang-module-cache-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-clang/lldb-api --executable /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin/lldb --compiler /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin/clang --dsymutil /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin/dsymutil --make /usr/bin/gmake --llvm-tools-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./bin --lldb-obj-root /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/tools/lldb --lldb-libs-dir /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/./lib --cmake-build-type Release /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/llvm-project/lldb/test/API/commands/gui/spawn-threads -p TestGuiSpawnThreads.py
--
Exit Code: 1

Command Output (stdout):
--
lldb version 23.0.0git (https://github.com/llvm/llvm-project.git revision 5e0efc0f1d79f6d0050efa0d21a47dd95ace5ddf)
  clang revision 5e0efc0f1d79f6d0050efa0d21a47dd95ace5ddf
  llvm revision 5e0efc0f1d79f6d0050efa0d21a47dd95ace5ddf
Skipping the following test categories: libc++, msvcstl, dsym, pdb, gmodules, debugserver, objc

--
Command Output (stderr):
--
FAIL: LLDB (/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/bin/clang-aarch64) :: test_gui (TestGuiSpawnThreads.TestGuiSpawnThreadsTest)
Log Files:
 - /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/commands/gui/spawn-threads/TestGuiSpawnThreads/Error_test_gui.log
======================================================================
ERROR: test_gui (TestGuiSpawnThreads.TestGuiSpawnThreadsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/llvm-project/lldb/packages/Python/lldbsuite/test/decorators.py", line 160, in wrapper
    return func(*args, **kwargs)
  File "/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/llvm-project/lldb/test/API/commands/gui/spawn-threads/TestGuiSpawnThreads.py", line 44, in test_gui
    self.child.expect_exact(f"thread #{i + 2}: tid =")
  File "/usr/local/lib/python3.10/dist-packages/pexpect/spawnbase.py", line 432, in expect_exact
    return exp.expect_loop(timeout)
  File "/usr/local/lib/python3.10/dist-packages/pexpect/expect.py", line 179, in expect_loop
    return self.eof(e)
  File "/usr/local/lib/python3.10/dist-packages/pexpect/expect.py", line 122, in eof
    raise exc
pexpect.exceptions.EOF: End Of File (EOF). Exception style platform.
<pexpect.pty_spawn.spawn object at 0xe4d01b95c670>
command: /home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/bin/lldb
args: ['/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/bin/lldb', '--no-lldbinit', '--no-use-colors', '-O', 'settings clear --all', '-O', 'settings set symbols.enable-external-lookup false', '-O', 'settings set target.inherit-tcc true', '-O', 'settings set target.disable-aslr false', '-O', 'settings set target.detach-on-error false', '-O', 'settings set target.auto-apply-fixits false', '-O', 'settings set plugin.process.gdb-remote.packet-timeout 60', '-O', 'settings set symbols.clang-modules-cache-path "/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api"', '-O', 'settings set use-color false', '-O', 'settings set show-statusline false', '--file', '/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lldb-test-build.noindex/commands/gui/spawn-threads/TestGuiSpawnThreads/a.out']
buffer (last 100 chars): b''

@llvm-ci

llvm-ci commented Apr 6, 2026

Copy link
Copy Markdown

LLVM Buildbot has detected a new failure on builder clang-sparc64-linux running on debian-stadler-sparc64 while building llvm at step 6 "build stage 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/114/builds/343

Here is the relevant piece of the build log for the reference
Step 6 (build stage 1) failure: 'ninja' (failure)

@llvm-ci

llvm-ci commented May 3, 2026

Copy link
Copy Markdown

LLVM Buildbot has detected a new failure on builder flang-aarch64-debug-reverse-iteration running on linaro-flang-aarch64-debug-reverse-iteration while building llvm at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/20/builds/15716

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
4132.728 [362/11/7134] Linking CXX executable bin/llvm-gsymutil
4133.006 [362/10/7135] Linking CXX executable bin/llvm-isel-fuzzer
4133.713 [362/9/7136] Linking CXX executable bin/llvm-exegesis
4134.607 [362/8/7137] Building CXX object tools/llvm-lto2/CMakeFiles/llvm-lto2.dir/llvm-lto2.cpp.o
4135.020 [362/7/7138] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-coff.cpp.o
4135.746 [362/6/7139] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-statistics.cpp.o
4136.333 [362/5/7140] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-elf.cpp.o
4136.794 [362/4/7141] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-macho.cpp.o
4153.221 [362/3/7142] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink.cpp.o
4159.963 [362/2/7143] Linking CXX executable bin/bbc
FAILED: bin/bbc 
: && /usr/local/bin/c++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -Xclang -fno-pch-timestamp -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -g -DDEBUGF18 -fuse-ld=lld -Wl,--color-diagnostics tools/flang/tools/bbc/CMakeFiles/bbc.dir/bbc.cpp.o -o bin/bbc  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMPasses.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMTargetParser.a  lib/libCUFAttrs.a  lib/libCUFDialect.a  lib/libFIRDialect.a  lib/libFIRDialectSupport.a  lib/libFIROpenACCSupport.a  lib/libFIROpenMPSupport.a  lib/libFIRSupport.a  lib/libFIRTransforms.a  lib/libFIRBuilder.a  lib/libHLFIRDialect.a  lib/libHLFIRTransforms.a  lib/libflangFrontend.a  lib/libflangPasses.a  lib/libFlangOpenMPTransforms.a  lib/libFortranSupport.a  lib/libFortranParser.a  lib/libFortranEvaluate.a  lib/libFortranSemantics.a  lib/libFortranLower.a  lib/libMIFDialect.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRAffineDialect.a  lib/libMLIRAffineTransforms.a  lib/libMLIRAffineTransformOps.a  lib/libMLIRAffineUtils.a  lib/libMLIRAMDGPUDialect.a  lib/libMLIRAMDGPUTransforms.a  lib/libMLIRAMDGPUUtils.a  lib/libMLIRArithDialect.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a  lib/libMLIRArithTransforms.a  lib/libMLIRArithUtils.a  lib/libMLIRArmNeonDialect.a  lib/libMLIRArmNeonTransforms.a  lib/libMLIRArmNeonVectorTransformOps.a  lib/libMLIRArmSMEDialect.a  lib/libMLIRArmSMETransforms.a  lib/libMLIRArmSVEDialect.a  lib/libMLIRArmSVETransforms.a  lib/libMLIRArmSVEVectorTransformOps.a  lib/libMLIRAsyncDialect.a  lib/libMLIRAsyncTransforms.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRBufferizationPipelines.a  lib/libMLIRBufferizationTransformOps.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRComplexDialect.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIRDLTITransformOps.a  lib/libMLIRDLTIDialect.a  lib/libMLIREmitCDialect.a  lib/libMLIREmitCTransforms.a  lib/libMLIRFuncDialect.a  lib/libMLIRFuncTransforms.a  lib/libMLIRFuncTransformOps.a  lib/libMLIRFuncUtils.a  lib/libMLIRGPUDialect.a  lib/libMLIRGPUTransforms.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUPipelines.a  lib/libMLIRGPUUtils.a  lib/libMLIRIndexDialect.a  lib/libMLIRIRDL.a  lib/libMLIRLinalgDialect.a  lib/libMLIRLinalgTransformOps.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRLinalgUtils.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRLLVMDialect.a  lib/libMLIRNVVMDialect.a  lib/libMLIRROCDLDialect.a  lib/libMLIRVCIXDialect.a  lib/libMLIRXeVMDialect.a  lib/libMLIRMathDialect.a  lib/libMLIRMathTransforms.a  lib/libMLIRMemRefDialect.a  lib/libMLIRMemRefTransformOps.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRMemRefUtils.a  lib/libMLIRShardDialect.a  lib/libMLIRShardTransforms.a  lib/libMLIRMLProgramDialect.a  lib/libMLIRMLProgramTransforms.a  lib/libMLIRMPIDialect.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRNVGPUUtils.a  lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUTransforms.a  lib/libMLIROpenACCAnalysis.a  lib/libMLIROpenACCDialect.a  lib/libMLIROpenACCUtils.a  lib/libMLIROpenACCTransforms.a  lib/libMLIROpenMPTransforms.a  lib/libMLIROpenMPDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRPDLInterpDialect.a  lib/libMLIRPtrMemorySpaceInterfaces.a  lib/libMLIRPtrDialect.a  lib/libMLIRQuantDialect.a  lib/libMLIRQuantTransforms.a  lib/libMLIRQuantUtils.a  lib/libMLIRSCFDialect.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRSCFTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRShapeDialect.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRSMT.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRSparseTensorTransformOps.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVDialect.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorDialect.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRTensorTransforms.a  lib/libMLIRTensorTransformOps.a  lib/libMLIRTensorUtils.a  lib/libMLIRTosaDialect.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRTosaTransforms.a  lib/libMLIRTransformDebugExtension.a  lib/libMLIRTransformDialect.a  lib/libMLIRTransformDialectIRDLExtension.a  lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a  lib/libMLIRTransformSMTExtension.a  lib/libMLIRTransformDialectTransforms.a  lib/libMLIRTransformTuneExtension.a  lib/libMLIRTransformDialectUtils.a  lib/libMLIRUBDialect.a  lib/libMLIRVectorDialect.a  lib/libMLIRVectorTransforms.a  lib/libMLIRVectorTransformOps.a  lib/libMLIRVectorUtils.a  lib/libMLIRWasmSSADialect.a  lib/libMLIRX86Dialect.a  lib/libMLIRX86Transforms.a  lib/libMLIRX86TransformOps.a  lib/libMLIRX86Utils.a  lib/libMLIRXeGPUDialect.a  lib/libMLIRXeGPUTransforms.a  lib/libMLIRXeGPUUtils.a  lib/libMLIRXeGPUTransformOps.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRTargetLLVMIRTransforms.a  lib/libMLIRNVVMTarget.a  lib/libMLIRROCDLTarget.a  lib/libMLIRXeVMTarget.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRXeGPUTestPasses.a  lib/libMLIRBufferizationShardingExtensions.a  lib/libMLIRBufferizationAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRFuncShardingExtensions.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRTensorShardingExtensions.a  lib/libMLIRTensorAllExtensions.a  lib/libMLIRAffineToStandard.a  lib/libMLIRSCFToControlFlow.a  lib/libHLFIRTransforms.a  lib/libFlangOpenMPTransforms.a  lib/libFIRTransforms.a  lib/libFortranSemantics.a  lib/libFortranUtils.a  lib/libFIRCodeGen.a  lib/libFIROpenACCSupport.a  lib/libFIROpenMPSupport.a  lib/libFIRBuilder.a  lib/libFortranEvaluate.a  lib/libFortranParser.a  lib/libFortranSupport.a  lib/libFortranDecimal.a  lib/libFIRCodeGenDialect.a  lib/libFIRAnalysis.a  lib/libCUFDialect.a  lib/libFIRSupport.a  lib/libMIFDialect.a  lib/libMLIROpenACCToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVMIRTranslation.a  lib/libMLIRRegisterAllDialects.a  lib/libMLIRRegisterAllExtensions.a  lib/libMLIRBufferizationAllExtensions.a  lib/libMLIRBufferizationShardingExtensions.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRFuncShardingExtensions.a  lib/libMLIRTensorAllExtensions.a  lib/libMLIRTensorShardingExtensions.a  lib/libMLIRArithToAMDGPU.a  lib/libMLIRArithToAPFloat.a  lib/libMLIRMathToAPFloat.a  lib/libMLIRArithAndMathToAPFloatUtils.a  lib/libMLIRArithToArmSME.a  lib/libMLIRArmNeon2dToIntr.a  lib/libMLIRArmSMEToSCF.a  lib/libMLIRArmSMEToLLVM.a  lib/libMLIRBufferizationToMemRef.a  lib/libMLIRComplexToSPIRV.a  lib/libMLIRControlFlowToSCF.a  lib/libMLIRControlFlowToSPIRV.a  lib/libMLIRConvertToEmitC.a  lib/libMLIRArithToEmitC.a  lib/libMLIRFuncToEmitC.a  lib/libMLIRGPUToSPIRV.a  lib/libMLIRLinalgToStandard.a  lib/libMLIRMathToEmitC.a  lib/libMLIRMathToSPIRV.a  lib/libMLIRMemRefToEmitC.a  lib/libMLIRShardToMPI.a  lib/libMLIRMPIToLLVM.a  lib/libMLIROpenACCToSCF.a  lib/libMLIRPtrToLLVM.a  lib/libMLIRSCFToEmitC.a  lib/libMLIRSCFToGPU.a  lib/libMLIRSCFToOpenMP.a  lib/libMLIRSCFToSPIRV.a  lib/libMLIRIndexToSPIRV.a  lib/libMLIRMemRefToSPIRV.a  lib/libMLIRShapeToStandard.a  lib/libMLIRSPIRVToLLVM.a  lib/libMLIRTensorToLinalg.a  lib/libMLIRTensorToSPIRV.a  lib/libMLIRArithToSPIRV.a  lib/libMLIRFuncToSPIRV.a  lib/libMLIRTosaToArith.a  lib/libMLIRTosaToLinalg.a  lib/libMLIRTosaToMLProgram.a  lib/libMLIRTosaToSCF.a  lib/libMLIRTosaToTensor.a  lib/libMLIRVectorToAMX.a  lib/libMLIRVectorToArmSME.a  lib/libMLIRVectorToSPIRV.a  lib/libMLIRUBToSPIRV.a  lib/libMLIRVectorToXeGPU.a  lib/libMLIRVectorToGPU.a  lib/libHLFIRDialect.a  lib/libFIRDialect.a  lib/libCUFAttrs.a  lib/libFIRDialectSupport.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVM.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRAffineTransformOps.a  lib/libMLIRAMDGPUTransforms.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a  lib/libMLIRArmNeonVectorTransformOps.a  lib/libMLIRArmSMETransforms.a  lib/libMLIRArmSMEDialect.a  lib/libMLIRArmSVEVectorTransformOps.a  lib/libMLIRAsyncTransforms.a  lib/libMLIRBufferizationPipelines.a  lib/libMLIRBufferizationTransformOps.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIRDLTITransformOps.a  lib/libMLIREmitCTransforms.a  lib/libMLIREmitCDialect.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUToROCDLTransforms.a  lib/libMLIRAMDGPUToROCDL.a  lib/libMLIRGPUPipelines.a  lib/libMLIRGPUToLLVMSPV.a  lib/libMLIRSPIRVAttrToLLVMConversion.a  lib/libMLIRMathToXeVM.a  lib/libMLIRNVVMToLLVM.a  lib/libMLIRXeGPUToXeVM.a  lib/libMLIRXeVMToLLVM.a  lib/libMLIRVCIXDialect.a  lib/libMLIRMemRefTransformOps.a  lib/libMLIRMLProgramTransforms.a  lib/libMLIRMLProgramDialect.a  lib/libMLIRMPIDialect.a  lib/libMLIRNVGPUUtils.a  lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUTransforms.a  lib/libMLIROpenACCTransforms.a  lib/libMLIROpenACCAnalysis.a  lib/libMLIROpenMPTransforms.a  lib/libMLIRPtrDialect.a  lib/libMLIRQuantTransforms.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRShapeDialect.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRAffineToStandard.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRReconcileUnrealizedCasts.a  lib/libMLIRGPUToNVVMTransforms.a  lib/libMLIRNVGPUToNVVM.a  lib/libMLIRVectorToLLVMPass.a  lib/libMLIRArmNeonTransforms.a  lib/libMLIRArmNeonDialect.a  lib/libMLIRArmSVETransforms.a  lib/libMLIRArmSVEDialect.a  lib/libMLIRComplexToLibm.a  lib/libMLIRUBToLLVM.a  lib/libMLIRSparseTensorTransformOps.a  lib/libMLIRLinalgTransformOps.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRShardTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRLinalgUtils.a  lib/libMLIRTensorTransformOps.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRTosaTransforms.a  lib/libMLIRFuncTransformOps.a  lib/libMLIRFuncUtils.a  lib/libMLIRTransformDebugExtension.a  lib/libMLIRTransformDialectIRDLExtension.a  lib/libMLIRIRDL.a  lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a  lib/libMLIRTransformSMTExtension.a  lib/libMLIRSMT.a  lib/libMLIRTransformDialectTransforms.a  lib/libMLIRTransformTuneExtension.a  lib/libMLIRVectorTransformOps.a  lib/libMLIRVectorToSCF.a  lib/libMLIRWasmSSADialect.a  lib/libMLIRX86TransformOps.a  lib/libMLIRX86Transforms.a  lib/libMLIRX86Utils.a  lib/libMLIRXeGPUTransformOps.a  lib/libMLIRTransformDialect.a  lib/libMLIRTransformDialectInterfaces.a  lib/libMLIRTransformDialectUtils.a  lib/libMLIRTargetLLVMIRTransforms.a  lib/libLLVMAArch64CodeGen.a  lib/libMLIRTargetLLVMIRImport.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libMLIRXeVMTarget.a  lib/libMLIRXeVMToLLVMIRTranslation.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a  lib/libMLIRXeGPUTestPasses.a  lib/libMLIRXeGPUTransforms.a  lib/libMLIRXeGPUUtils.a  lib/libMLIRSCFTransforms.a  lib/libMLIRTensorTransforms.a  lib/libMLIRTensorUtils.a  lib/libMLIRTilingInterface.a  lib/libMLIRXeGPUDialect.a  lib/libLLVMAsmPrinter.a  lib/libMLIRMathTransforms.a  lib/libMLIRX86Dialect.a  lib/libMLIROpenACCUtils.a  lib/libMLIROpenACCDialect.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRMathToLLVM.a  lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRComplexDivisionConversion.a  lib/libMLIRMathToLibm.a  lib/libMLIRComplexToROCDLLibraryCalls.a  lib/libMLIRMathToFuncs.a  lib/libMLIRMathToNVVM.a  lib/libMLIRMathToROCDL.a  lib/libMLIRAMDGPUUtils.a  lib/libMLIRGPUToGPURuntimeTransforms.a  lib/libMLIRGPUTransforms.a  lib/libMLIRAMDGPUDialect.a  lib/libMLIRIndexDialect.a  lib/libMLIRXeVMDialect.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRSPIRVSerialization.a  lib/libMLIRSPIRVDialect.a  lib/libMLIRSPIRVImageInterfaces.a  lib/libMLIRSPIRVBinaryUtils.a  lib/libMLIRNVVMTarget.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libMLIRTargetLLVM.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRExecutionEngineUtils.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMCodeGen.a  lib/libLLVMCGData.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMTarget.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMBitWriter.a  lib/libLLVMLinker.a  lib/libLLVMVectorize.a  lib/libLLVMSandboxIR.a  lib/libMLIRMemRefToLLVM.a  lib/libMLIRVectorToLLVM.a  lib/libMLIRVectorTransforms.a  lib/libMLIRGPUUtils.a  lib/libMLIRLinalgDialect.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRAffineUtils.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRMemRefUtils.a  lib/libMLIRVectorUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRNVVMDialect.a  lib/libMLIRGPUDialect.a  lib/libMLIRDLTIDialect.a  lib/libMLIRMathDialect.a  lib/libMLIROpenMPDialect.a  lib/libMLIROpenACCMPCommon.a  lib/libMLIRTranslateLib.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRAsyncToLLVM.a  lib/libMLIRAsyncDialect.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRArithToLLVM.a  lib/libMLIRArithTransforms.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRSCFDialect.a  lib/libMLIRMemorySlotUtils.a  lib/libMLIRFuncTransforms.a  lib/libMLIRFuncDialect.a  lib/libMLIRVectorDialect.a  lib/libMLIRIndexingMapOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRShardingInterface.a  lib/libMLIRShardDialect.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRArithUtils.a  lib/libMLIRAsmParser.a  lib/libMLIRComplexDialect.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRDialectUtils.a  lib/libMLIRArithAttrToLLVMConversion.a  lib/libMLIRControlFlowToLLVM.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRCastInterfaces.a  lib/libMLIRDialect.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRConvertToLLVMPass.a  lib/libMLIRLLVMCommonConversion.a  lib/libMLIRLLVMDialect.a  lib/libMLIRPtrMemorySpaceInterfaces.a  lib/libMLIRConvertToLLVMInterface.a  lib/libLLVMPlugins.a  lib/libLLVMExtensions.a  lib/libLLVMFrontendDriver.a  lib/libLLVMInstrumentation.a  lib/libLLVMFrontendOpenACC.a  lib/libclangOptions.a  lib/libLLVMOption.a  lib/libclangBasic.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMTransformUtils.a  lib/libLLVMObjectYAML.a  lib/libLLVMFrontendDirective.a  lib/libLLVMFrontendAtomic.a  lib/libLLVMAnalysis.a  lib/libLLVMFrontendHLSL.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoGSYM.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMObject.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMBitReader.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoDWARFLowLevel.a  lib/libLLVMTextAPI.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libMLIRTransforms.a  lib/libMLIRUBDialect.a  lib/libMLIRTransformUtils.a  lib/libMLIRSubsetOpInterface.a  lib/libMLIRValueBoundsOpInterface.a  lib/libMLIRDestinationStyleOpInterface.a  lib/libMLIRRewrite.a  lib/libMLIRRewritePDL.a  lib/libMLIRPDLToPDLInterp.a  lib/libMLIRPDLInterpDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRPass.a  lib/libMLIRAnalysis.a  lib/libMLIRInferTypeOpInterface.a  lib/libMLIRPresburger.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRInferStridedMetadataInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRSideEffectInterfaces.a  lib/libMLIRLoopLikeInterface.a  lib/libMLIRControlFlowInterfaces.a  lib/libMLIRFunctionInterfaces.a  lib/libMLIRCallInterfaces.a  lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRMemOpInterfaces.a  lib/libMLIRRuntimeVerifiableOpInterface.a  lib/libMLIRIR.a  lib/libMLIRSupport.a  lib/libLLVMSupport.a  lib/libLLVMDemangle.a  -lrt  -ldl  -lm  /usr/lib/aarch64-linux-gnu/libz.so && :
clang++: error: unable to execute command: Bus error (core dumped)
clang++: error: linker command failed due to signal (use -v to see invocation)
4162.426 [362/1/7144] Linking CXX executable bin/flang-23
FAILED: bin/flang-23 
: && /usr/local/bin/c++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -Xclang -fno-pch-timestamp -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -g -DDEBUGF18 -fuse-ld=lld -Wl,--color-diagnostics   -Wl,--export-dynamic tools/flang/tools/flang-driver/CMakeFiles/flang.dir/driver.cpp.o tools/flang/tools/flang-driver/CMakeFiles/flang.dir/fc1_main.cpp.o -o bin/flang-23 -L/home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/./lib:"  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMMC.a  lib/libLLVMOption.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  lib/libflangFrontend.a  lib/libflangFrontendTool.a  lib/libclangDriver.a  lib/libclangOptions.a  lib/libclangBasic.a  lib/libLLVMMCDisassembler.a  lib/libflangFrontend.a  lib/libFortranLower.a  lib/libFortranSemantics.a  lib/libflangPasses.a  lib/libHLFIRTransforms.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libFIROpenACCSupport.a  lib/libFIROpenMPSupport.a  lib/libFlangOpenMPTransforms.a  lib/libFIRCodeGenDialect.a  lib/libFortranUtils.a  lib/libFIRBuilder.a  lib/libFortranEvaluate.a  lib/libFortranParser.a  lib/libFortranDecimal.a  lib/libFortranSupport.a  lib/libFIRAnalysis.a  lib/libCUFDialect.a  lib/libFIRSupport.a  lib/libMLIROpenACCToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVMIRTranslation.a  lib/libMLIRRegisterAllDialects.a  lib/libMLIRRegisterAllExtensions.a  lib/libMLIRComplexToROCDLLibraryCalls.a  lib/libMLIRMathToFuncs.a  lib/libMLIRArithToAMDGPU.a  lib/libMLIRArithToAPFloat.a  lib/libMLIRMathToAPFloat.a  lib/libMLIRArithAndMathToAPFloatUtils.a  lib/libMLIRArithToArmSME.a  lib/libMLIRArmNeon2dToIntr.a  lib/libMLIRArmSMEToSCF.a  lib/libMLIRArmSMEToLLVM.a  lib/libMLIRBufferizationToMemRef.a  lib/libMLIRComplexToSPIRV.a  lib/libMLIRControlFlowToSCF.a  lib/libMLIRControlFlowToSPIRV.a  lib/libMLIRConvertToEmitC.a  lib/libMLIRArithToEmitC.a  lib/libMLIRFuncToEmitC.a  lib/libMLIRGPUToSPIRV.a  lib/libMLIRLinalgToStandard.a  lib/libMLIRMathToEmitC.a  lib/libMLIRMathToSPIRV.a  lib/libMLIRMemRefToEmitC.a  lib/libMLIRShardToMPI.a  lib/libMLIRMPIToLLVM.a  lib/libMLIROpenACCToSCF.a  lib/libMLIRPtrToLLVM.a  lib/libMLIRSCFToEmitC.a  lib/libMLIRSCFToGPU.a  lib/libMLIRSCFToOpenMP.a  lib/libMLIRSCFToSPIRV.a  lib/libMLIRIndexToSPIRV.a  lib/libMLIRMemRefToSPIRV.a  lib/libMLIRShapeToStandard.a  lib/libMLIRSPIRVToLLVM.a  lib/libMLIRTensorToLinalg.a  lib/libMLIRTensorToSPIRV.a  lib/libMLIRArithToSPIRV.a  lib/libMLIRFuncToSPIRV.a  lib/libMLIRTosaToArith.a  lib/libMLIRTosaToLinalg.a  lib/libMLIRTosaToMLProgram.a  lib/libMLIRTosaToSCF.a  lib/libMLIRTosaToTensor.a  lib/libMLIRVectorToAMX.a  lib/libMLIRVectorToArmSME.a  lib/libMLIRVectorToSPIRV.a  lib/libMLIRUBToSPIRV.a  lib/libMLIRVectorToXeGPU.a  lib/libMLIRVectorToGPU.a  lib/libHLFIRDialect.a  lib/libMIFDialect.a  lib/libFIRDialect.a  lib/libCUFAttrs.a  lib/libMLIROpenMPToLLVM.a  lib/libFIRDialectSupport.a  lib/libLLVMExtensions.a  lib/libLLVMFrontendDriver.a  lib/libLLVMFrontendOpenACC.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRAffineTransformOps.a  lib/libMLIRAMDGPUTransforms.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a  lib/libMLIRArmNeonVectorTransformOps.a  lib/libMLIRArmSMETransforms.a  lib/libMLIRArmSMEDialect.a  lib/libMLIRArmSVEVectorTransformOps.a  lib/libMLIRAsyncTransforms.a  lib/libMLIRBufferizationPipelines.a  lib/libMLIRBufferizationTransformOps.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIRDLTITransformOps.a  lib/libMLIREmitCTransforms.a  lib/libMLIREmitCDialect.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUToROCDLTransforms.a  lib/libMLIRMathToROCDL.a  lib/libMLIRAMDGPUToROCDL.a  lib/libMLIRAMDGPUUtils.a  lib/libMLIRGPUPipelines.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRGPUToLLVMSPV.a  lib/libMLIRSPIRVAttrToLLVMConversion.a  lib/libMLIRMathToXeVM.a  lib/libMLIRNVVMToLLVM.a  lib/libMLIRXeGPUToXeVM.a  lib/libMLIRXeVMToLLVM.a  lib/libMLIRVCIXDialect.a  lib/libMLIRMathTransforms.a  lib/libMLIRMemRefTransformOps.a  lib/libMLIRMLProgramTransforms.a  lib/libMLIRMLProgramDialect.a  lib/libMLIRMPIDialect.a  lib/libMLIRNVGPUUtils.a  lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUTransforms.a  lib/libMLIROpenACCTransforms.a  lib/libMLIROpenACCAnalysis.a  lib/libMLIROpenACCUtils.a  lib/libMLIROpenACCDialect.a  lib/libMLIROpenMPTransforms.a  lib/libMLIRPtrDialect.a  lib/libMLIRQuantTransforms.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRShapeDialect.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRAffineToStandard.a  lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRComplexDivisionConversion.a  lib/libMLIRMathToLLVM.a  lib/libMLIRMathToLibm.a  lib/libMLIRReconcileUnrealizedCasts.a  lib/libMLIRGPUToNVVMTransforms.a  lib/libMLIRMathToNVVM.a  lib/libMLIRNVGPUToNVVM.a  lib/libMLIRGPUToGPURuntimeTransforms.a  lib/libMLIRGPUTransforms.a  lib/libMLIRAMDGPUDialect.a  lib/libMLIRAsyncToLLVM.a  lib/libMLIRAsyncDialect.a  lib/libMLIRConvertToLLVMPass.a  lib/libMLIRConvertToLLVMInterface.a  lib/libMLIRVectorToLLVMPass.a  lib/libMLIRArmNeonTransforms.a  lib/libMLIRArmNeonDialect.a  lib/libMLIRArmSVETransforms.a  lib/libMLIRArmSVEDialect.a  lib/libMLIRComplexToLibm.a  lib/libMLIRMemRefToLLVM.a  lib/libMLIRUBToLLVM.a  lib/libMLIRSparseTensorTransformOps.a  lib/libMLIRLinalgTransformOps.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRShardTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRLinalgUtils.a  lib/libMLIRTensorTransformOps.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRTosaTransforms.a  lib/libMLIRFuncTransformOps.a  lib/libMLIRFuncUtils.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRArithToLLVM.a  lib/libMLIRControlFlowToLLVM.a  lib/libMLIRTransformDebugExtension.a  lib/libMLIRTransformDialectIRDLExtension.a  lib/libMLIRIRDL.a  lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a  lib/libMLIRTransformSMTExtension.a  lib/libMLIRSMT.a  lib/libMLIRTransformDialectTransforms.a  lib/libMLIRTransformTuneExtension.a  lib/libMLIRVectorTransformOps.a  lib/libMLIRVectorToLLVM.a  lib/libMLIRArithAttrToLLVMConversion.a  lib/libMLIRVectorToSCF.a  lib/libMLIRWasmSSADialect.a  lib/libMLIRX86TransformOps.a  lib/libMLIRX86Transforms.a  lib/libMLIRX86Dialect.a  lib/libMLIRX86Utils.a  lib/libMLIRXeGPUTransformOps.a  lib/libMLIRTransformDialect.a  lib/libMLIRLLVMCommonConversion.a  lib/libMLIRTransformDialectInterfaces.a  lib/libMLIRTransformDialectUtils.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRSPIRVSerialization.a  lib/libMLIRSPIRVDialect.a  lib/libMLIRSPIRVImageInterfaces.a  lib/libMLIRSPIRVBinaryUtils.a  lib/libMLIRTargetLLVMIRTransforms.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Utils.a  lib/libLLVMAArch64Info.a  lib/libMLIRTargetLLVMIRImport.a  lib/libMLIRNVVMTarget.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRXeVMTarget.a  lib/libMLIRTargetLLVM.a  lib/libMLIRExecutionEngineUtils.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMCodeGen.a  lib/libLLVMCGData.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMTarget.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMHipStdPar.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a  lib/libLLVMSandboxIR.a  lib/libLLVMBitWriter.a  lib/libLLVMInstrumentation.a  lib/libLLVMLinker.a  lib/libMLIRXeVMToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRNVVMDialect.a  lib/libMLIRTranslateLib.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a  lib/libMLIRXeGPUTestPasses.a  lib/libMLIRXeGPUTransforms.a  lib/libMLIRVectorTransforms.a  lib/libMLIRGPUUtils.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRArithTransforms.a  lib/libMLIRFuncTransforms.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRXeGPUUtils.a  lib/libMLIRSCFTransforms.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRTensorTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRMemRefUtils.a  lib/libMLIRSCFUtils.a  lib/libMLIRTransforms.a  lib/libMLIRLinalgDialect.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRTensorUtils.a  lib/libMLIRVectorUtils.a  lib/libMLIRTilingInterface.a  lib/libMLIRXeGPUDialect.a  lib/libMLIRAffineUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRSCFDialect.a  lib/libMLIRMemorySlotUtils.a  lib/libMLIRTransformUtils.a  lib/libMLIRRewrite.a  lib/libMLIRRewritePDL.a  lib/libMLIRPDLToPDLInterp.a  lib/libMLIRPDLInterpDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRGPUDialect.a  lib/libMLIRDLTIDialect.a  lib/libMLIRMathDialect.a  lib/libMLIRIndexDialect.a  lib/libMLIRXeVMDialect.a  lib/libMLIROpenMPDialect.a  lib/libMLIRLLVMDialect.a  lib/libMLIRPtrMemorySpaceInterfaces.a  lib/libMLIROpenACCMPCommon.a  lib/libMLIRVectorDialect.a  lib/libMLIRIndexingMapOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRBufferizationAllExtensions.a  lib/libMLIRBufferizationShardingExtensions.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRSubsetOpInterface.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRFuncShardingExtensions.a  lib/libMLIRFuncDialect.a  lib/libMLIRTensorAllExtensions.a  lib/libMLIRTensorShardingExtensions.a  lib/libMLIRShardingInterface.a  lib/libMLIRShardDialect.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRMemOpInterfaces.a  lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRArithUtils.a  lib/libMLIRAsmParser.a  lib/libMLIRComplexDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRUBDialect.a  lib/libMLIRDialect.a  lib/libMLIRRuntimeVerifiableOpInterface.a  lib/libMLIRValueBoundsOpInterface.a  lib/libMLIRCastInterfaces.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRDestinationStyleOpInterface.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRDialectUtils.a  lib/libclangDependencyScanning.a  lib/libclangScalableStaticAnalysisFrameworkAnalyses.a  lib/libclangScalableStaticAnalysisFrameworkFrontend.a  lib/libclangFrontend.a  lib/libclangParse.a  lib/libclangScalableStaticAnalysisFrameworkCore.a  lib/libclangUnifiedSymbolResolution.a  lib/libclangSerialization.a  lib/libclangSema.a  lib/libclangAPINotes.a  lib/libclangEdit.a  lib/libclangAnalysisLifetimeSafety.a  lib/libclangAnalysis.a  lib/libclangASTMatchers.a  lib/libclangAST.a  lib/libclangSupport.a  lib/libclangLex.a  lib/libLLVMWindowsDriver.a  lib/libclangOptions.a  lib/libLLVMOption.a  lib/libclangBasic.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendDirective.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMTransformUtils.a  lib/libLLVMObjectYAML.a  lib/libLLVMFrontendAtomic.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoGSYM.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoDWARFLowLevel.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMTextAPI.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMFrontendHLSL.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMPlugins.a  lib/libMLIRPass.a  lib/libMLIRAnalysis.a  lib/libMLIRLoopLikeInterface.a  lib/libMLIRFunctionInterfaces.a  lib/libMLIRSideEffectInterfaces.a  lib/libMLIRCallInterfaces.a  lib/libMLIRControlFlowInterfaces.a  lib/libMLIRInferTypeOpInterface.a  lib/libMLIRPresburger.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRInferStridedMetadataInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRIR.a  lib/libMLIRSupport.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/aarch64-linux-gnu/libz.so  lib/libLLVMDemangle.a && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
LLVM ERROR: IO failure on output stream: No space left on device
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

zwu-2025 pushed a commit to zwu-2025/llvm-project that referenced this pull request May 17, 2026
…c128float and others in GlobalISel) (llvm#155107)" (llvm#188502)

This is a reland of llvm#155107
along with a fix for old gcc builds.

This patch is reverted in
llvm#188344 due to compilation
failures described in
llvm#155107 (comment)

The fix to old gcc builds is to remove `constexpr` modifiers in the
original patch in 0721d8e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants