Skip to content

Conversation

@topperc
Copy link
Collaborator

@topperc topperc commented May 19, 2025

Padding the mask using 0 elements doesn't work for scalable vectors. Use VP_LOAD and change the VL instead.

This fixes crash for Zve32x. Test file was split since i64 isn't a valid element type for Zve32x.

Fixes #140198.

… when possible.

Padding the mask using 0 elements doesn't work for scalable vectors.
Use VP_LOAD and change the VL instead.

This fixes crash for Zve32x. Test was split since i64 isn't a valid
element type for Zve32x.

Fixes llvm#140198.
@topperc topperc requested review from RKSimon, lukel97 and preames May 19, 2025 18:58
@llvmbot llvmbot added the llvm:SelectionDAG SelectionDAGISel as well label May 19, 2025
@llvmbot
Copy link
Member

llvmbot commented May 19, 2025

@llvm/pr-subscribers-llvm-selectiondag

Author: Craig Topper (topperc)

Changes

Padding the mask using 0 elements doesn't work for scalable vectors. Use VP_LOAD and change the VL instead.

This fixes crash for Zve32x. Test was split since i64 isn't a valid element type for Zve32x.

Fixes #140198.


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

3 Files Affected:

  • (modified) llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp (+24-5)
  • (added) llvm/test/CodeGen/RISCV/rvv/masked-load-int-e64.ll (+47)
  • (modified) llvm/test/CodeGen/RISCV/rvv/masked-load-int.ll (+43-61)
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
index 4e9a6942d6cd9..59a9dced6cf03 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
@@ -6111,18 +6111,37 @@ SDValue DAGTypeLegalizer::WidenVecRes_VECTOR_COMPRESS(SDNode *N) {
 }
 
 SDValue DAGTypeLegalizer::WidenVecRes_MLOAD(MaskedLoadSDNode *N) {
-
-  EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(),N->getValueType(0));
+  EVT VT = N->getValueType(0);
+  EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(), VT);
   SDValue Mask = N->getMask();
   EVT MaskVT = Mask.getValueType();
   SDValue PassThru = GetWidenedVector(N->getPassThru());
   ISD::LoadExtType ExtType = N->getExtensionType();
   SDLoc dl(N);
 
+  EVT WideMaskVT =
+      EVT::getVectorVT(*DAG.getContext(), MaskVT.getVectorElementType(),
+                       WidenVT.getVectorElementCount());
+
+  if (ExtType == ISD::NON_EXTLOAD &&
+      TLI.isOperationLegalOrCustom(ISD::VP_LOAD, WidenVT) &&
+      TLI.isTypeLegal(WideMaskVT)) {
+    Mask = DAG.getInsertSubvector(dl, DAG.getUNDEF(WideMaskVT), Mask, 0);
+    SDValue EVL = DAG.getElementCount(dl, TLI.getVPExplicitVectorLengthTy(),
+                                      VT.getVectorElementCount());
+    SDValue NewLoad =
+        DAG.getLoadVP(N->getAddressingMode(), ISD::NON_EXTLOAD, WidenVT, dl,
+                      N->getChain(), N->getBasePtr(), N->getOffset(), Mask, EVL,
+                      N->getMemoryVT(), N->getMemOperand());
+
+    // Modified the chain - switch anything that used the old chain to use
+    // the new one.
+    ReplaceValueWith(SDValue(N, 1), NewLoad.getValue(1));
+
+    return NewLoad;
+  }
+
   // The mask should be widened as well
-  EVT WideMaskVT = EVT::getVectorVT(*DAG.getContext(),
-                                    MaskVT.getVectorElementType(),
-                                    WidenVT.getVectorNumElements());
   Mask = ModifyToType(Mask, WideMaskVT, true);
 
   SDValue Res = DAG.getMaskedLoad(
diff --git a/llvm/test/CodeGen/RISCV/rvv/masked-load-int-e64.ll b/llvm/test/CodeGen/RISCV/rvv/masked-load-int-e64.ll
new file mode 100644
index 0000000000000..493d55f6eefe6
--- /dev/null
+++ b/llvm/test/CodeGen/RISCV/rvv/masked-load-int-e64.ll
@@ -0,0 +1,47 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
+; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
+
+define <vscale x 1 x i64> @masked_load_nxv1i64(ptr %a, <vscale x 1 x i1> %mask) nounwind {
+; CHECK-LABEL: masked_load_nxv1i64:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
+; CHECK-NEXT:    vle64.v v8, (a0), v0.t
+; CHECK-NEXT:    ret
+  %load = call <vscale x 1 x i64> @llvm.masked.load.nxv1i64(ptr %a, i32 8, <vscale x 1 x i1> %mask, <vscale x 1 x i64> undef)
+  ret <vscale x 1 x i64> %load
+}
+declare <vscale x 1 x i64> @llvm.masked.load.nxv1i64(ptr, i32, <vscale x 1 x i1>, <vscale x 1 x i64>)
+
+define <vscale x 2 x i64> @masked_load_nxv2i64(ptr %a, <vscale x 2 x i1> %mask) nounwind {
+; CHECK-LABEL: masked_load_nxv2i64:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
+; CHECK-NEXT:    vle64.v v8, (a0), v0.t
+; CHECK-NEXT:    ret
+  %load = call <vscale x 2 x i64> @llvm.masked.load.nxv2i64(ptr %a, i32 8, <vscale x 2 x i1> %mask, <vscale x 2 x i64> undef)
+  ret <vscale x 2 x i64> %load
+}
+declare <vscale x 2 x i64> @llvm.masked.load.nxv2i64(ptr, i32, <vscale x 2 x i1>, <vscale x 2 x i64>)
+
+define <vscale x 4 x i64> @masked_load_nxv4i64(ptr %a, <vscale x 4 x i1> %mask) nounwind {
+; CHECK-LABEL: masked_load_nxv4i64:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
+; CHECK-NEXT:    vle64.v v8, (a0), v0.t
+; CHECK-NEXT:    ret
+  %load = call <vscale x 4 x i64> @llvm.masked.load.nxv4i64(ptr %a, i32 8, <vscale x 4 x i1> %mask, <vscale x 4 x i64> undef)
+  ret <vscale x 4 x i64> %load
+}
+declare <vscale x 4 x i64> @llvm.masked.load.nxv4i64(ptr, i32, <vscale x 4 x i1>, <vscale x 4 x i64>)
+
+define <vscale x 8 x i64> @masked_load_nxv8i64(ptr %a, <vscale x 8 x i1> %mask) nounwind {
+; CHECK-LABEL: masked_load_nxv8i64:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
+; CHECK-NEXT:    vle64.v v8, (a0), v0.t
+; CHECK-NEXT:    ret
+  %load = call <vscale x 8 x i64> @llvm.masked.load.nxv8i64(ptr %a, i32 8, <vscale x 8 x i1> %mask, <vscale x 8 x i64> undef)
+  ret <vscale x 8 x i64> %load
+}
+declare <vscale x 8 x i64> @llvm.masked.load.nxv8i64(ptr, i32, <vscale x 8 x i1>, <vscale x 8 x i64>)
diff --git a/llvm/test/CodeGen/RISCV/rvv/masked-load-int.ll b/llvm/test/CodeGen/RISCV/rvv/masked-load-int.ll
index f8c1d5e45bc28..d992669306fb1 100644
--- a/llvm/test/CodeGen/RISCV/rvv/masked-load-int.ll
+++ b/llvm/test/CodeGen/RISCV/rvv/masked-load-int.ll
@@ -1,51 +1,66 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
-; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
+; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,V
+; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,V
+; RUN: llc -mtriple=riscv32 -mattr=+zve32x,+zvl128b -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVE32
+; RUN: llc -mtriple=riscv64 -mattr=+zve32x,+zvl128b -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVE32
 
 define <vscale x 1 x i8> @masked_load_nxv1i8(ptr %a, <vscale x 1 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv1i8:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma
-; CHECK-NEXT:    vle8.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
+; V-LABEL: masked_load_nxv1i8:
+; V:       # %bb.0:
+; V-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma
+; V-NEXT:    vle8.v v8, (a0), v0.t
+; V-NEXT:    ret
+;
+; ZVE32-LABEL: masked_load_nxv1i8:
+; ZVE32:       # %bb.0:
+; ZVE32-NEXT:    csrr a1, vlenb
+; ZVE32-NEXT:    srli a1, a1, 3
+; ZVE32-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
+; ZVE32-NEXT:    vle8.v v8, (a0), v0.t
+; ZVE32-NEXT:    ret
   %load = call <vscale x 1 x i8> @llvm.masked.load.nxv1i8(ptr %a, i32 1, <vscale x 1 x i1> %mask, <vscale x 1 x i8> undef)
   ret <vscale x 1 x i8> %load
 }
 declare <vscale x 1 x i8> @llvm.masked.load.nxv1i8(ptr, i32, <vscale x 1 x i1>, <vscale x 1 x i8>)
 
 define <vscale x 1 x i16> @masked_load_nxv1i16(ptr %a, <vscale x 1 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv1i16:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
-; CHECK-NEXT:    vle16.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
+; V-LABEL: masked_load_nxv1i16:
+; V:       # %bb.0:
+; V-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
+; V-NEXT:    vle16.v v8, (a0), v0.t
+; V-NEXT:    ret
+;
+; ZVE32-LABEL: masked_load_nxv1i16:
+; ZVE32:       # %bb.0:
+; ZVE32-NEXT:    csrr a1, vlenb
+; ZVE32-NEXT:    srli a1, a1, 3
+; ZVE32-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
+; ZVE32-NEXT:    vle16.v v8, (a0), v0.t
+; ZVE32-NEXT:    ret
   %load = call <vscale x 1 x i16> @llvm.masked.load.nxv1i16(ptr %a, i32 2, <vscale x 1 x i1> %mask, <vscale x 1 x i16> undef)
   ret <vscale x 1 x i16> %load
 }
 declare <vscale x 1 x i16> @llvm.masked.load.nxv1i16(ptr, i32, <vscale x 1 x i1>, <vscale x 1 x i16>)
 
 define <vscale x 1 x i32> @masked_load_nxv1i32(ptr %a, <vscale x 1 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv1i32:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
-; CHECK-NEXT:    vle32.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
+; V-LABEL: masked_load_nxv1i32:
+; V:       # %bb.0:
+; V-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
+; V-NEXT:    vle32.v v8, (a0), v0.t
+; V-NEXT:    ret
+;
+; ZVE32-LABEL: masked_load_nxv1i32:
+; ZVE32:       # %bb.0:
+; ZVE32-NEXT:    csrr a1, vlenb
+; ZVE32-NEXT:    srli a1, a1, 3
+; ZVE32-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
+; ZVE32-NEXT:    vle32.v v8, (a0), v0.t
+; ZVE32-NEXT:    ret
   %load = call <vscale x 1 x i32> @llvm.masked.load.nxv1i32(ptr %a, i32 4, <vscale x 1 x i1> %mask, <vscale x 1 x i32> undef)
   ret <vscale x 1 x i32> %load
 }
 declare <vscale x 1 x i32> @llvm.masked.load.nxv1i32(ptr, i32, <vscale x 1 x i1>, <vscale x 1 x i32>)
 
-define <vscale x 1 x i64> @masked_load_nxv1i64(ptr %a, <vscale x 1 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv1i64:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
-; CHECK-NEXT:    vle64.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
-  %load = call <vscale x 1 x i64> @llvm.masked.load.nxv1i64(ptr %a, i32 8, <vscale x 1 x i1> %mask, <vscale x 1 x i64> undef)
-  ret <vscale x 1 x i64> %load
-}
-declare <vscale x 1 x i64> @llvm.masked.load.nxv1i64(ptr, i32, <vscale x 1 x i1>, <vscale x 1 x i64>)
-
 define <vscale x 2 x i8> @masked_load_nxv2i8(ptr %a, <vscale x 2 x i1> %mask) nounwind {
 ; CHECK-LABEL: masked_load_nxv2i8:
 ; CHECK:       # %bb.0:
@@ -79,17 +94,6 @@ define <vscale x 2 x i32> @masked_load_nxv2i32(ptr %a, <vscale x 2 x i1> %mask)
 }
 declare <vscale x 2 x i32> @llvm.masked.load.nxv2i32(ptr, i32, <vscale x 2 x i1>, <vscale x 2 x i32>)
 
-define <vscale x 2 x i64> @masked_load_nxv2i64(ptr %a, <vscale x 2 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv2i64:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
-; CHECK-NEXT:    vle64.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
-  %load = call <vscale x 2 x i64> @llvm.masked.load.nxv2i64(ptr %a, i32 8, <vscale x 2 x i1> %mask, <vscale x 2 x i64> undef)
-  ret <vscale x 2 x i64> %load
-}
-declare <vscale x 2 x i64> @llvm.masked.load.nxv2i64(ptr, i32, <vscale x 2 x i1>, <vscale x 2 x i64>)
-
 define <vscale x 4 x i8> @masked_load_nxv4i8(ptr %a, <vscale x 4 x i1> %mask) nounwind {
 ; CHECK-LABEL: masked_load_nxv4i8:
 ; CHECK:       # %bb.0:
@@ -123,17 +127,6 @@ define <vscale x 4 x i32> @masked_load_nxv4i32(ptr %a, <vscale x 4 x i1> %mask)
 }
 declare <vscale x 4 x i32> @llvm.masked.load.nxv4i32(ptr, i32, <vscale x 4 x i1>, <vscale x 4 x i32>)
 
-define <vscale x 4 x i64> @masked_load_nxv4i64(ptr %a, <vscale x 4 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv4i64:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
-; CHECK-NEXT:    vle64.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
-  %load = call <vscale x 4 x i64> @llvm.masked.load.nxv4i64(ptr %a, i32 8, <vscale x 4 x i1> %mask, <vscale x 4 x i64> undef)
-  ret <vscale x 4 x i64> %load
-}
-declare <vscale x 4 x i64> @llvm.masked.load.nxv4i64(ptr, i32, <vscale x 4 x i1>, <vscale x 4 x i64>)
-
 define <vscale x 8 x i8> @masked_load_nxv8i8(ptr %a, <vscale x 8 x i1> %mask) nounwind {
 ; CHECK-LABEL: masked_load_nxv8i8:
 ; CHECK:       # %bb.0:
@@ -167,17 +160,6 @@ define <vscale x 8 x i32> @masked_load_nxv8i32(ptr %a, <vscale x 8 x i1> %mask)
 }
 declare <vscale x 8 x i32> @llvm.masked.load.nxv8i32(ptr, i32, <vscale x 8 x i1>, <vscale x 8 x i32>)
 
-define <vscale x 8 x i64> @masked_load_nxv8i64(ptr %a, <vscale x 8 x i1> %mask) nounwind {
-; CHECK-LABEL: masked_load_nxv8i64:
-; CHECK:       # %bb.0:
-; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
-; CHECK-NEXT:    vle64.v v8, (a0), v0.t
-; CHECK-NEXT:    ret
-  %load = call <vscale x 8 x i64> @llvm.masked.load.nxv8i64(ptr %a, i32 8, <vscale x 8 x i1> %mask, <vscale x 8 x i64> undef)
-  ret <vscale x 8 x i64> %load
-}
-declare <vscale x 8 x i64> @llvm.masked.load.nxv8i64(ptr, i32, <vscale x 8 x i1>, <vscale x 8 x i64>)
-
 define <vscale x 16 x i8> @masked_load_nxv16i8(ptr %a, <vscale x 16 x i1> %mask) nounwind {
 ; CHECK-LABEL: masked_load_nxv16i8:
 ; CHECK:       # %bb.0:

@github-actions
Copy link

github-actions bot commented May 19, 2025

⚠️ undef deprecator found issues in your code. ⚠️

You can test this locally with the following command:
git diff -U0 --pickaxe-regex -S '([^a-zA-Z0-9#_-]undef[^a-zA-Z0-9_-]|UndefValue::get)' 'HEAD~1' HEAD llvm/test/CodeGen/RISCV/rvv/masked-load-int-e64.ll llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-int.ll llvm/test/CodeGen/RISCV/rvv/masked-load-int.ll

The following files introduce new uses of undef:

  • llvm/test/CodeGen/RISCV/rvv/masked-load-int-e64.ll

Undef is now deprecated and should only be used in the rare cases where no replacement is possible. For example, a load of uninitialized memory yields undef. You should use poison values for placeholders instead.

In tests, avoid using undef and having tests that trigger undefined behavior. If you need an operand with some unimportant value, you can add a new argument to the function and use that instead.

For example, this is considered a bad practice:

define void @fn() {
  ...
  br i1 undef, ...
}

Please use the following instead:

define void @fn(i1 %cond) {
  ...
  br i1 %cond, ...
}

Please refer to the Undefined Behavior Manual for more information.

; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s

define <vscale x 1 x i64> @masked_load_nxv1i64(ptr %a, <vscale x 1 x i1> %mask) nounwind {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these crash tests? Or can they be pre-commited so the change is visible?

Copy link
Collaborator Author

@topperc topperc May 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file doesn't crash, but the <vscale 1 x 1 x *> tests in the other file are crashes with the new command line.

This file is just i64 tests that were moved out of the other file.

declare <vscale x 1 x i32> @llvm.masked.load.nxv1i32(ptr, i32, <vscale x 1 x i1>, <vscale x 1 x i32>)

define <vscale x 1 x i64> @masked_load_nxv1i64(ptr %a, <vscale x 1 x i1> %mask) nounwind {
; CHECK-LABEL: masked_load_nxv1i64:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bad test updates.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to split the test file since i64 isn't a legal element type for masked load under Zve32.

Copy link
Contributor

@lukel97 lukel97 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@topperc topperc merged commit 60ad6e3 into llvm:main May 21, 2025
8 of 11 checks passed
@topperc topperc deleted the pr/mload-widen branch May 21, 2025 22:52
@llvm-ci
Copy link
Collaborator

llvm-ci commented May 21, 2025

LLVM Buildbot has detected a new failure on builder openmp-offload-sles-build-only running on rocm-worker-hw-04-sles while building llvm at step 10 "Add check check-lld".

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

Here is the relevant piece of the build log for the reference
Step 10 (Add check check-lld) failure: test (failure)
******************** TEST 'lld :: COFF/lto-cache-errors.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/opt -module-hash -module-summary /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/COFF/lto-cache-errors.ll -o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o # RUN: at line 5
+ /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/opt -module-hash -module-summary /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/COFF/lto-cache-errors.ll -o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/opt -module-hash -module-summary /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/COFF/Inputs/lto-cache.ll -o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o # RUN: at line 6
+ /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/opt -module-hash -module-summary /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/COFF/Inputs/lto-cache.ll -o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o
rm -Rf /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache && mkdir /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 7
+ rm -Rf /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
+ mkdir /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
chmod 444 /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 8
+ chmod 444 /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
not /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/lld-link /lldltocache:/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o 2>&1 | /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/FileCheck /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/COFF/lto-cache-errors.ll # RUN: at line 11
+ not /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/lld-link /lldltocache:/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
+ /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/FileCheck /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/lld/test/COFF/lto-cache-errors.ll

--

********************


@llvm-ci
Copy link
Collaborator

llvm-ci commented May 22, 2025

LLVM Buildbot has detected a new failure on builder sanitizer-aarch64-linux-bootstrap-asan running on sanitizer-buildbot8 while building llvm at step 2 "annotate".

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

Here is the relevant piece of the build log for the reference
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using ld.lld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/ld.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/main.py:72: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 84365 tests, 72 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.
FAIL: lld :: COFF/lto-cache-errors.ll (81590 of 84365)
******************** TEST 'lld :: COFF/lto-cache-errors.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o # RUN: at line 5
+ /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/Inputs/lto-cache.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o # RUN: at line 6
+ /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/Inputs/lto-cache.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o
rm -Rf /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache && mkdir /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 7
+ rm -Rf /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
+ mkdir /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
chmod 444 /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 8
+ chmod 444 /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
not /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link /lldltocache:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o 2>&1 | /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll # RUN: at line 11
+ not /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link /lldltocache:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
Slowest Tests:
--------------------------------------------------------------------------
23.96s: Clang :: Driver/fsanitize.c
23.51s: LLVM :: tools/llvm-reduce/parallel-workitem-kill.ll
15.91s: Clang :: Preprocessor/riscv-target-features.c
14.98s: Clang :: Driver/arm-cortex-cpus-2.c
14.68s: Clang :: Driver/arm-cortex-cpus-1.c
14.07s: Clang :: OpenMP/target_defaultmap_codegen_01.cpp
13.26s: Clang :: OpenMP/target_update_codegen.cpp
11.44s: LLVM :: CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
11.15s: Clang :: Preprocessor/arm-target-features.c
11.06s: Clang :: Preprocessor/aarch64-target-features.c
10.01s: LLVM-Unit :: Support/./SupportTests/ProgramEnvTest/TestExecuteNoWaitDetached
9.91s: Clang :: Driver/linux-ld.c
9.68s: LLVM :: CodeGen/RISCV/attributes.ll
9.23s: Clang :: Driver/clang_f_opts.c
Step 14 (stage3/asan check) failure: stage3/asan check (failure)
...
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using ld.lld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/ld.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using lld-link: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using ld64.lld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:520: note: using wasm-ld: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/llvm/utils/lit/lit/main.py:72: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 84365 tests, 72 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.
FAIL: lld :: COFF/lto-cache-errors.ll (81590 of 84365)
******************** TEST 'lld :: COFF/lto-cache-errors.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o # RUN: at line 5
+ /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/Inputs/lto-cache.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o # RUN: at line 6
+ /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/opt -module-hash -module-summary /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/Inputs/lto-cache.ll -o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o
rm -Rf /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache && mkdir /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 7
+ rm -Rf /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
+ mkdir /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
chmod 444 /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 8
+ chmod 444 /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
not /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link /lldltocache:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o 2>&1 | /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll # RUN: at line 11
+ not /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/lld-link /lldltocache:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
+ /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build2_asan/bin/FileCheck /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/lld/test/COFF/lto-cache-errors.ll

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
Slowest Tests:
--------------------------------------------------------------------------
23.96s: Clang :: Driver/fsanitize.c
23.51s: LLVM :: tools/llvm-reduce/parallel-workitem-kill.ll
15.91s: Clang :: Preprocessor/riscv-target-features.c
14.98s: Clang :: Driver/arm-cortex-cpus-2.c
14.68s: Clang :: Driver/arm-cortex-cpus-1.c
14.07s: Clang :: OpenMP/target_defaultmap_codegen_01.cpp
13.26s: Clang :: OpenMP/target_update_codegen.cpp
11.44s: LLVM :: CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
11.15s: Clang :: Preprocessor/arm-target-features.c
11.06s: Clang :: Preprocessor/aarch64-target-features.c
10.01s: LLVM-Unit :: Support/./SupportTests/ProgramEnvTest/TestExecuteNoWaitDetached
9.91s: Clang :: Driver/linux-ld.c
9.68s: LLVM :: CodeGen/RISCV/attributes.ll
9.23s: Clang :: Driver/clang_f_opts.c

@llvm-ci
Copy link
Collaborator

llvm-ci commented May 22, 2025

LLVM Buildbot has detected a new failure on builder llvm-x86_64-debian-dylib running on gribozavr4 while building llvm at step 8 "test-build-unified-tree-check-lld".

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

Here is the relevant piece of the build log for the reference
Step 8 (test-build-unified-tree-check-lld) failure: test (failure)
******************** TEST 'lld :: COFF/lto-cache-errors.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/1/llvm-x86_64-debian-dylib/build/bin/opt -module-hash -module-summary /b/1/llvm-x86_64-debian-dylib/llvm-project/lld/test/COFF/lto-cache-errors.ll -o /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o # RUN: at line 5
+ /b/1/llvm-x86_64-debian-dylib/build/bin/opt -module-hash -module-summary /b/1/llvm-x86_64-debian-dylib/llvm-project/lld/test/COFF/lto-cache-errors.ll -o /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
/b/1/llvm-x86_64-debian-dylib/build/bin/opt -module-hash -module-summary /b/1/llvm-x86_64-debian-dylib/llvm-project/lld/test/COFF/Inputs/lto-cache.ll -o /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o # RUN: at line 6
+ /b/1/llvm-x86_64-debian-dylib/build/bin/opt -module-hash -module-summary /b/1/llvm-x86_64-debian-dylib/llvm-project/lld/test/COFF/Inputs/lto-cache.ll -o /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o
rm -Rf /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache && mkdir /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 7
+ rm -Rf /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
+ mkdir /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
chmod 444 /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache # RUN: at line 8
+ chmod 444 /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache
not /b/1/llvm-x86_64-debian-dylib/build/bin/lld-link /lldltocache:/b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o 2>&1 | /b/1/llvm-x86_64-debian-dylib/build/bin/FileCheck /b/1/llvm-x86_64-debian-dylib/llvm-project/lld/test/COFF/lto-cache-errors.ll # RUN: at line 11
+ not /b/1/llvm-x86_64-debian-dylib/build/bin/lld-link /lldltocache:/b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.cache/nonexistant/ /out:/b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp3 /entry:main /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp2.o /b/1/llvm-x86_64-debian-dylib/build/tools/lld/test/COFF/Output/lto-cache-errors.ll.tmp.o
+ /b/1/llvm-x86_64-debian-dylib/build/bin/FileCheck /b/1/llvm-x86_64-debian-dylib/llvm-project/lld/test/COFF/lto-cache-errors.ll

--

********************


mshockwave added a commit that referenced this pull request Jun 14, 2025
…144170)

#140595 used vp.load in the cases where we need to widen masked.load.
However, we didn't account for the passthru operand so it might
miscompile when the passthru is not undef. While we can simply avoid
using vp.load to widen when passthru is not undef, doing so will ran
into the exact same crash described in #140198 , so for scalable vector,
this patch manually merges the vp.load result with passthru when the
latter is not undef.
akuhlens pushed a commit to akuhlens/llvm-project that referenced this pull request Jun 24, 2025
…lvm#144170)

llvm#140595 used vp.load in the cases where we need to widen masked.load.
However, we didn't account for the passthru operand so it might
miscompile when the passthru is not undef. While we can simply avoid
using vp.load to widen when passthru is not undef, doing so will ran
into the exact same crash described in llvm#140198 , so for scalable vector,
this patch manually merges the vp.load result with passthru when the
latter is not undef.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llvm:SelectionDAG SelectionDAGISel as well

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[RISCV] <vscale x 1 x *> masked.load crashes with Zve32

5 participants