diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index f12db53c7f0873..c15f056551b93f 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -5700,7 +5700,7 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT, if (OpOpcode == ISD::TRUNCATE) { SDValue OpOp = N1.getOperand(0); if (OpOp.getValueType() == VT) { - if (OpOp.getOpcode() == ISD::AssertZext) { + if (OpOp.getOpcode() == ISD::AssertZext && N1->hasOneUse()) { APInt HiBits = APInt::getBitsSetFrom(VT.getScalarSizeInBits(), N1.getScalarValueSizeInBits()); if (MaskedValueIsZero(OpOp, HiBits)) { diff --git a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp index c47ddae072b4fe..754d2042105e57 100644 --- a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp +++ b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp @@ -2645,8 +2645,7 @@ bool MatchingStackOffset(SDValue Arg, unsigned Offset, ISD::ArgFlagsTy Flags, for (;;) { // Look through nodes that don't alter the bits of the incoming value. unsigned Op = Arg.getOpcode(); - if (Op == ISD::ZERO_EXTEND || Op == ISD::ANY_EXTEND || Op == ISD::BITCAST || - Op == ISD::AssertZext) { + if (Op == ISD::ZERO_EXTEND || Op == ISD::ANY_EXTEND || Op == ISD::BITCAST) { Arg = Arg.getOperand(0); continue; } diff --git a/llvm/test/CodeGen/AArch64/setcc_knownbits.ll b/llvm/test/CodeGen/AArch64/setcc_knownbits.ll index af5c1586a4c671..aa62a7aa176c81 100644 --- a/llvm/test/CodeGen/AArch64/setcc_knownbits.ll +++ b/llvm/test/CodeGen/AArch64/setcc_knownbits.ll @@ -4,6 +4,8 @@ define i1 @load_bv_v4i8(i1 zeroext %a) { ; CHECK-LABEL: load_bv_v4i8: ; CHECK: // %bb.0: +; CHECK-NEXT: cmp w0, #0 +; CHECK-NEXT: cset w0, ne ; CHECK-NEXT: ret %b = zext i1 %a to i32 %c = icmp eq i32 %b, 1 diff --git a/llvm/test/CodeGen/RISCV/rvv/fold-vp-fadd-and-vp-fmul.ll b/llvm/test/CodeGen/RISCV/rvv/fold-vp-fadd-and-vp-fmul.ll index f773de3b518c6d..1eccaaa26154f7 100644 --- a/llvm/test/CodeGen/RISCV/rvv/fold-vp-fadd-and-vp-fmul.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fold-vp-fadd-and-vp-fmul.ll @@ -62,9 +62,9 @@ define @fma_reassociate( %a, @llvm.vp.fmul.nxv1f64( %a, %b, %m, i32 %vl) %2 = call fast @llvm.vp.fmul.nxv1f64( %c, %d, %m, i32 %vl)