Skip to content

[X86][AtomicExpand] Remove X86's shouldCastAtomicLoadInIR override#198651

Closed
jofrn wants to merge 1 commit into
mainfrom
users/jofrn/x86-remove-shouldcastatomicloadinir
Closed

[X86][AtomicExpand] Remove X86's shouldCastAtomicLoadInIR override#198651
jofrn wants to merge 1 commit into
mainfrom
users/jofrn/x86-remove-shouldcastatomicloadinir

Conversation

@jofrn

@jofrn jofrn commented May 19, 2026

Copy link
Copy Markdown
Contributor

(added in #148899)
So that atomic floating-point and FP-vector loads are no longer bitcast to an integer at the IR level by AtomicExpand.

@llvmorg-github-actions

llvmorg-github-actions Bot commented May 19, 2026

Copy link
Copy Markdown

@llvm/pr-subscribers-llvm-transforms

@llvm/pr-subscribers-backend-x86

Author: jofrn

Changes

So that atomic floating-point and FP-vector loads are no longer bitcast to an integer at the IR level by AtomicExpand.


Full diff: https://github.com/llvm/llvm-project/pull/198651.diff

3 Files Affected:

  • (modified) llvm/lib/CodeGen/AtomicExpandPass.cpp (+14-1)
  • (modified) llvm/lib/Target/X86/X86ISelLowering.cpp (+32-7)
  • (modified) llvm/lib/Target/X86/X86ISelLowering.h (-2)
diff --git a/llvm/lib/CodeGen/AtomicExpandPass.cpp b/llvm/lib/CodeGen/AtomicExpandPass.cpp
index 7327290f62970..fc083a54132a5 100644
--- a/llvm/lib/CodeGen/AtomicExpandPass.cpp
+++ b/llvm/lib/CodeGen/AtomicExpandPass.cpp
@@ -673,13 +673,26 @@ bool AtomicExpandImpl::expandAtomicLoadToCmpXchg(LoadInst *LI) {
 
   Value *Addr = LI->getPointerOperand();
   Type *Ty = LI->getType();
-  Constant *DummyVal = Constant::getNullValue(Ty);
+
+  // cmpxchg only supports integer and pointer operand types. Bitcast scalar
+  // floating-point types and vectors of floating-point to an integer of the
+  // same bit width so the expansion is valid IR; bitcast the result back
+  // afterwards.
+  Type *CmpXchgTy = Ty;
+  bool NeedBitcast = Ty->getScalarType()->isFloatingPointTy();
+  if (NeedBitcast)
+    CmpXchgTy = Builder.getIntNTy(Ty->getPrimitiveSizeInBits());
+
+  Constant *DummyVal = Constant::getNullValue(CmpXchgTy);
 
   Value *Pair = Builder.CreateAtomicCmpXchg(
       Addr, DummyVal, DummyVal, LI->getAlign(), Order,
       AtomicCmpXchgInst::getStrongestFailureOrdering(Order));
   Value *Loaded = Builder.CreateExtractValue(Pair, 0, "loaded");
 
+  if (NeedBitcast)
+    Loaded = Builder.CreateBitCast(Loaded, Ty);
+
   LI->replaceAllUsesWith(Loaded);
   LI->eraseFromParent();
 
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index bc28df877ba9c..4ab509d0e4ff3 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -2781,6 +2781,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
                        ISD::FMINNUM,
                        ISD::FMAXNUM,
                        ISD::SUB,
+                       ISD::ATOMIC_LOAD,
                        ISD::LOAD,
                        ISD::LRINT,
                        ISD::LLRINT,
@@ -33013,13 +33014,6 @@ X86TargetLowering::shouldExpandAtomicRMWInIR(const AtomicRMWInst *AI) const {
   }
 }
 
-TargetLowering::AtomicExpansionKind
-X86TargetLowering::shouldCastAtomicLoadInIR(LoadInst *LI) const {
-  if (LI->getType()->getScalarType()->isFloatingPointTy())
-    return AtomicExpansionKind::CastToInteger;
-  return AtomicExpansionKind::None;
-}
-
 LoadInst *
 X86TargetLowering::lowerIdempotentRMWIntoFencedLoad(AtomicRMWInst *AI) const {
   unsigned NativeWidth = Subtarget.is64Bit() ? 64 : 32;
@@ -54095,6 +54089,36 @@ static SDValue combineConstantPoolLoads(SDNode *N, const SDLoc &dl,
   return SDValue();
 }
 
+// For atomic loads of floating-point or floating-point vector results, rewrite
+// to an integer atomic load of the same width plus a bitcast. This is the DAG
+// equivalent of the shouldCastAtomicLoadInIR -> CastToInteger transform; it
+// lets X86's existing integer atomic load lowering (and DAG combines such as
+// load-into-xmm folding) handle FP types we have no direct selection for.
+static SDValue combineAtomicLoad(SDNode *N, SelectionDAG &DAG,
+                                 TargetLowering::DAGCombinerInfo &DCI) {
+  if (!DCI.isBeforeLegalize())
+    return SDValue();
+
+  auto *AN = cast<AtomicSDNode>(N);
+  EVT VT = AN->getValueType(0);
+  if (!VT.getScalarType().isFloatingPoint())
+    return SDValue();
+
+  unsigned BitWidth = VT.getStoreSizeInBits();
+  if (BitWidth == 0 || BitWidth != VT.getSizeInBits())
+    return SDValue();
+
+  SDLoc DL(N);
+  EVT IntVT = EVT::getIntegerVT(*DAG.getContext(), BitWidth);
+  SDValue IntLoad =
+      DAG.getAtomic(ISD::ATOMIC_LOAD, DL, IntVT,
+                    DAG.getVTList(IntVT, MVT::Other),
+                    {AN->getChain(), AN->getBasePtr()}, AN->getMemOperand());
+  SDValue Cast = DAG.getBitcast(VT, IntLoad);
+  DAG.ReplaceAllUsesOfValueWith(SDValue(N, 1), IntLoad.getValue(1));
+  return Cast;
+}
+
 static SDValue combineLoad(SDNode *N, SelectionDAG &DAG,
                            TargetLowering::DAGCombinerInfo &DCI,
                            const X86Subtarget &Subtarget) {
@@ -62699,6 +62723,7 @@ SDValue X86TargetLowering::PerformDAGCombine(SDNode *N,
   case ISD::AVGCEILU:
   case ISD::AVGFLOORS:
   case ISD::AVGFLOORU:      return combineAVG(N, DAG, DCI, Subtarget);
+  case ISD::ATOMIC_LOAD:    return combineAtomicLoad(N, DAG, DCI);
   case ISD::LOAD:           return combineLoad(N, DAG, DCI, Subtarget);
   case ISD::MLOAD:          return combineMaskedLoad(N, DAG, DCI, Subtarget);
   case ISD::STORE:          return combineStore(N, DAG, DCI, Subtarget);
diff --git a/llvm/lib/Target/X86/X86ISelLowering.h b/llvm/lib/Target/X86/X86ISelLowering.h
index 9a958525057b6..0d05c5772a707 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.h
+++ b/llvm/lib/Target/X86/X86ISelLowering.h
@@ -892,8 +892,6 @@ namespace llvm {
     shouldExpandAtomicRMWInIR(const AtomicRMWInst *AI) const override;
     TargetLoweringBase::AtomicExpansionKind
     shouldExpandLogicAtomicRMWInIR(const AtomicRMWInst *AI) const;
-    TargetLoweringBase::AtomicExpansionKind
-    shouldCastAtomicLoadInIR(LoadInst *LI) const override;
     void emitBitTestAtomicRMWIntrinsic(AtomicRMWInst *AI) const override;
     void emitCmpArithAtomicRMWIntrinsic(AtomicRMWInst *AI) const override;
 

@github-actions

github-actions Bot commented May 19, 2026

Copy link
Copy Markdown

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

@github-actions

github-actions Bot commented May 19, 2026

Copy link
Copy Markdown

🐧 Linux x64 Test Results

  • 170250 tests passed
  • 3160 tests skipped

All executed tests passed, but another part of the build failed. Click on a failure below to see the details.

bin/tco (Likely Already Failing) This test is already failing at the base commit.
FAILED: bin/tco
: && /opt/llvm/bin/clang++ -gmlt -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -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 -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O3 -DNDEBUG -no-pie -fuse-ld=lld -Wl,--color-diagnostics    -Wl,--gc-sections tools/flang/tools/tco/CMakeFiles/tco.dir/tco.cpp.o -o bin/tco  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMPasses.a  lib/libCUFAttrs.a  lib/libCUFDialect.a  lib/libFIRCodeGen.a  lib/libFIRCodeGenDialect.a  lib/libFIRDialect.a  lib/libFIRDialectSupport.a  lib/libFIRSupport.a  lib/libFIRTransforms.a  lib/libFIRBuilder.a  lib/libHLFIRDialect.a  lib/libHLFIRTransforms.a  lib/libflangPasses.a  lib/libFIROpenACCSupport.a  lib/libFIROpenMPSupport.a  lib/libFlangOpenMPTransforms.a  lib/libFortranSupport.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/libMLIROpenMPDialect.a  lib/libMLIROpenMPTransforms.a  lib/libMLIROpenMPUtils.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/libMLIRIR.a  lib/libMLIRLLVMDialect.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRPass.a  lib/libMLIRTransforms.a  lib/libMLIRAffineToStandard.a  lib/libMLIRAnalysis.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRParser.a  lib/libMLIRSupport.a  lib/libMLIRVectorToLLVM.a  lib/libHLFIRTransforms.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libFIROpenMPSupport.a  lib/libFlangOpenMPTransforms.a  lib/libFortranUtils.a  lib/libFIROpenACCTransforms.a  lib/libFIROpenACCAnalysis.a  lib/libFIROpenACCSupport.a  lib/libFIRCodeGenDialect.a  lib/libFIRBuilder.a  lib/libFortranEvaluate.a  lib/libFortranDecimal.a  lib/libFortranParser.a  lib/libFortranSupport.a  lib/libLLVMFrontendOpenACC.a  -lquadmath  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/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/libFIRDialect.a  lib/libCUFAttrs.a  lib/libFIRDialectSupport.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVM.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/libMLIRGPUPipelines.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRGPUToROCDLTransforms.a  lib/libMLIRMathToROCDL.a  lib/libMLIRAMDGPUToROCDL.a  lib/libMLIRAMDGPUUtils.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/libMLIROpenMPUtils.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/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRComplexDivisionConversion.a  lib/libMLIRMathToLLVM.a  lib/libMLIRMathToLibm.a  lib/libMLIRUBToLLVM.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/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/libMLIRX86Utils.a  lib/libMLIRXeGPUTransformOps.a  lib/libMLIRTransformDialect.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/libMLIRTargetLLVMIRImport.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMLoongArchAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMVEAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLoongArchCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMVECodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMWebAssemblyUtils.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Utils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMUtils.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMVEDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMMCDisassembler.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Info.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMVEInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libMLIRNVVMTarget.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMNVPTXInfo.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMMIRParser.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMAMDGPUInfo.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRXeVMTarget.a  lib/libLLVMSPIRVCodeGen.a  lib/libLLVMSPIRVAnalysis.a  lib/libLLVMSPIRVDesc.a  lib/libLLVMSPIRVInfo.a  lib/libMLIRTargetLLVM.a  lib/libMLIRExecutionEngineUtils.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMInstrumentation.a  lib/libLLVMVectorize.a  lib/libLLVMSandboxIR.a  lib/libLLVMLinker.a  lib/libMLIRXeVMToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRTranslateLib.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMObjectYAML.a  lib/libLLVMFrontendAtomic.a  lib/libLLVMFrontendDirective.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/libMLIRShardingInterface.a  lib/libMLIRShardDialect.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRNVVMDialect.a  lib/libMLIRXeGPUUtils.a  lib/libMLIRSCFTransforms.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRTensorTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRMemRefUtils.a  lib/libMLIRLinalgDialect.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRTensorUtils.a  lib/libMLIRVectorUtils.a  lib/libMLIRTilingInterface.a  lib/libMLIRXeGPUDialect.a  lib/libMLIRAffineUtils.a  lib/libMLIRIndexDialect.a  lib/libMLIRXeVMDialect.a  lib/libLLVMAsmPrinter.a  lib/libLLVMCodeGen.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMTransformUtils.a  lib/libLLVMCGData.a  lib/libLLVMBitWriter.a  lib/libLLVMTarget.a  lib/libLLVMAnalysis.a  lib/libLLVMFrontendHLSL.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoGSYM.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMBitReader.a  lib/libLLVMTextAPI.a  lib/libLLVMDebugInfoDWARFLowLevel.a  lib/libMLIRMathTransforms.a  lib/libMLIRVectorDialect.a  lib/libMLIRIndexingMapOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRX86Dialect.a  lib/libMLIRLLVMCommonConversion.a  lib/libMLIROpenACCUtils.a  lib/libMLIROpenACCDialect.a  lib/libMLIRGPUDialect.a  lib/libMLIRDLTIDialect.a  lib/libMLIRMathDialect.a  lib/libMLIRSCFUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRSCFDialect.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRArithUtils.a  lib/libMLIRAsmParser.a  lib/libMLIRComplexDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRDialect.a  lib/libMLIRCastInterfaces.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRMemorySlotUtils.a  lib/libMLIROpenMPDialect.a  lib/libMLIRFuncDialect.a  lib/libMLIRLLVMDialect.a  lib/libMLIRPtrMemorySpaceInterfaces.a  lib/libMLIROpenACCMPCommon.a  lib/libMLIRReconcileUnrealizedCasts.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/libMLIRDialectUtils.a  lib/libMLIRPresburger.a  lib/libMLIRInferIntDivisibilityOpInterface.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRInferStridedMetadataInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRInferTypeOpInterface.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/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMSupport.a  lib/libLLVMDemangle.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so && :
ld.lld: error: undefined symbol: Fortran::semantics::DerivedTypeSpec::VectorTypeAsFortran[abi:cxx11]() const
>>> referenced by formatting.cpp:680 (/home/gha/actions-runner/_work/llvm-project/llvm-project/flang/lib/Evaluate/formatting.cpp:680)
>>>               formatting.cpp.o:(Fortran::evaluate::DynamicType::AsFortran[abi:cxx11]() const) in archive lib/libFortranEvaluate.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
bin/fir-opt (Likely Already Failing) This test is already failing at the base commit.
FAILED: bin/fir-opt
: && /opt/llvm/bin/clang++ -gmlt -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -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 -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O3 -DNDEBUG -no-pie -fuse-ld=lld -Wl,--color-diagnostics    -Wl,--gc-sections tools/flang/tools/fir-opt/CMakeFiles/fir-opt.dir/fir-opt.cpp.o -o bin/fir-opt  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libCUFAttrs.a  lib/libCUFDialect.a  lib/libFIRDialect.a  lib/libFIRSupport.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libFIRCodeGenDialect.a  lib/libHLFIRDialect.a  lib/libHLFIRTransforms.a  lib/libFIROpenACCSupport.a  lib/libFIROpenACCTransforms.a  lib/libFIROpenMPSupport.a  lib/libFlangOpenMPTransforms.a  lib/libFIRAnalysis.a  lib/libMIFDialect.a  lib/libflangPasses.a  lib/libFIRTestAnalysis.a  lib/libFIRTestOpenACCInterfaces.a  lib/libMLIROpenACCTestPasses.a  lib/libMLIRTestIR.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/libMLIROpenMPDialect.a  lib/libMLIROpenMPTransforms.a  lib/libMLIROpenMPUtils.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/libMLIRIR.a  lib/libMLIRLLVMDialect.a  lib/libMLIRPass.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRTransforms.a  lib/libMLIRAffineToStandard.a  lib/libMLIRAnalysis.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRParser.a  lib/libMLIRSupport.a  lib/libMLIRVectorToLLVM.a  lib/libMLIROptLib.a  lib/libHLFIRTransforms.a  lib/libFIROpenACCTransforms.a  lib/libFIROpenACCAnalysis.a  lib/libFlangOpenMPTransforms.a  lib/libFortranUtils.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libFIROpenMPSupport.a  lib/libMLIRTestAnalysis.a  lib/libFIROpenACCSupport.a  lib/libFIRCodeGenDialect.a  lib/libFIRBuilder.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/libMIFDialect.a  lib/libHLFIRDialect.a  lib/libFIRDialect.a  lib/libCUFAttrs.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVM.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRBufferizationAllExtensions.a  lib/libMLIRBufferizationShardingExtensions.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRFuncShardingExtensions.a  lib/libMLIRTensorAllExtensions.a  lib/libMLIRTensorShardingExtensions.a  lib/libFIRDialectSupport.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/libMLIRDLTITransformOps.a  lib/libMLIREmitCTransforms.a  lib/libMLIREmitCDialect.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUPipelines.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRGPUToROCDLTransforms.a  lib/libMLIRMathToROCDL.a  lib/libMLIRAMDGPUToROCDL.a  lib/libMLIRAMDGPUUtils.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/libMLIROpenMPTransforms.a  lib/libMLIROpenMPUtils.a  lib/libMLIRQuantTransforms.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRShapeDialect.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRAffineToStandard.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRComplexDivisionConversion.a  lib/libMLIRMathToLLVM.a  lib/libMLIRMathToLibm.a  lib/libMLIRUBToLLVM.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/libMLIRSparseTensorTransformOps.a  lib/libMLIRLinalgTransformOps.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTransformOps.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/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/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/libMLIRTargetLLVMIRImport.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMLoongArchAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMVEAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLoongArchCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMVECodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMWebAssemblyUtils.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Utils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMUtils.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMVEDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMMCDisassembler.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Info.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMVEInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libMLIRNVVMTarget.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMNVPTXInfo.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMMIRParser.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMAMDGPUInfo.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRXeVMTarget.a  lib/libLLVMSPIRVCodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMSPIRVAnalysis.a  lib/libLLVMSPIRVDesc.a  lib/libLLVMSPIRVInfo.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/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCoroutines.a  lib/libLLVMTarget.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a  lib/libLLVMSandboxIR.a  lib/libLLVMInstrumentation.a  lib/libLLVMBitWriter.a  lib/libLLVMLinker.a  lib/libMLIRXeVMToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRTranslateLib.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRXeGPUTestPasses.a  lib/libMLIRXeGPUTransforms.a  lib/libMLIRXeGPUUtils.a  lib/libMLIRXeGPUDialect.a  lib/libMLIRXeVMDialect.a  lib/libFortranEvaluate.a  lib/libFortranDecimal.a  lib/libFortranParser.a  lib/libFortranSupport.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMObjectYAML.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMTransformUtils.a  lib/libLLVMFrontendAtomic.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoGSYM.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMFrontendHLSL.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoDWARFLowLevel.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMTextAPI.a  lib/libLLVMFrontendOpenACC.a  lib/libLLVMFrontendDirective.a  -lquadmath  lib/libMLIROpenACCAnalysis.a  lib/libMLIROpenACCUtils.a  lib/libMLIROpenACCDialect.a  lib/libMLIRTestDialect.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRShardTransforms.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a  lib/libMLIRSCFTransforms.a  lib/libMLIRIndexDialect.a  lib/libMLIRTensorTransforms.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRLinalgUtils.a  lib/libMLIRTensorUtils.a  lib/libMLIRTilingInterface.a  lib/libMLIRVectorToSCF.a  lib/libMLIRVectorTransforms.a  lib/libMLIRGPUUtils.a  lib/libMLIRLinalgDialect.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRAffineUtils.a  lib/libMLIRArithTransforms.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRFuncTransforms.a  lib/libMLIRShardingInterface.a  lib/libMLIRShardDialect.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRMemRefUtils.a  lib/libMLIRVectorUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRSCFDialect.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRMemorySlotUtils.a  lib/libMLIRVectorDialect.a  lib/libMLIRIndexingMapOpInterface.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRNVVMDialect.a  lib/libMLIRGPUDialect.a  lib/libMLIRDLTIDialect.a  lib/libMLIRMathDialect.a  lib/libMLIROpenMPDialect.a  lib/libMLIRFuncDialect.a  lib/libMLIRLLVMDialect.a  lib/libMLIROpenACCMPCommon.a  lib/libLLVMAsmParser.a  lib/libMLIRPtrDialect.a  lib/libMLIRPtrMemorySpaceInterfaces.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRArithUtils.a  lib/libMLIRComplexDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRCastInterfaces.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRTransforms.a  lib/libMLIRUBDialect.a  lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRMemOpInterfaces.a  lib/libMLIRRuntimeVerifiableOpInterface.a  lib/libMLIRDerivedAttributeOpInterface.a  lib/libMLIRReduce.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/libMLIRIRDL.a  lib/libMLIRDialect.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRAsmParser.a  lib/libMLIRBytecodeWriter.a  lib/libMLIRBytecodeOpInterface.a  lib/libMLIRDebug.a  lib/libMLIRObservers.a  lib/libMLIRPluginsLib.a  lib/libMLIRPass.a  lib/libMLIRAnalysis.a  lib/libMLIRDialectUtils.a  lib/libMLIRInferTypeOpInterface.a  lib/libMLIRSideEffectInterfaces.a  lib/libMLIRPresburger.a  lib/libMLIRInferIntDivisibilityOpInterface.a  lib/libMLIRLoopLikeInterface.a  lib/libMLIRFunctionInterfaces.a  lib/libMLIRCallInterfaces.a  lib/libMLIRControlFlowInterfaces.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRInferStridedMetadataInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRRemarkStreamer.a  lib/libMLIRIR.a  lib/libMLIRSupport.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMBitstreamReader.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so  lib/libLLVMDemangle.a && :
ld.lld: error: undefined symbol: Fortran::semantics::DerivedTypeSpec::VectorTypeAsFortran[abi:cxx11]() const
>>> referenced by formatting.cpp:680 (/home/gha/actions-runner/_work/llvm-project/llvm-project/flang/lib/Evaluate/formatting.cpp:680)
>>>               formatting.cpp.o:(Fortran::evaluate::DynamicType::AsFortran[abi:cxx11]() const) in archive lib/libFortranEvaluate.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the infrastructure label.

@github-actions

github-actions Bot commented May 19, 2026

Copy link
Copy Markdown

🪟 Windows x64 Test Results

  • 134935 tests passed
  • 3303 tests skipped

✅ The build succeeded and all tests passed.

@jofrn jofrn changed the title [X86][AtomicExpand] Remove X86's shouldCastAtomicLoadInIR override (added in #148899) [X86][AtomicExpand] Remove X86's shouldCastAtomicLoadInIR override May 19, 2026
@RKSimon RKSimon self-requested a review May 20, 2026 09:27
…dded in #148899)

So that atomic floating-point and FP-vector loads are no longer bitcast to an integer
at the IR level by AtomicExpand.
@jofrn jofrn force-pushed the users/jofrn/x86-remove-shouldcastatomicloadinir branch from c398ae2 to ed7f89c Compare May 20, 2026 21:20
@jofrn

jofrn commented May 29, 2026

Copy link
Copy Markdown
Contributor Author

Continued in #199520.

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.

1 participant