Skip to content

Commit 76070d8

Browse files
committed
[RISCV] Clear kill flags for FalseReg in foldVMergeToMask
Or we can't pass the MachineVerifier because of using a killed virtual register. This was found when backporting llvm#170070 to 21.x branch.
1 parent c311f02 commit 76070d8

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,8 @@ bool RISCVVectorPeephole::foldVMergeToMask(MachineInstr &MI) const {
834834
MRI->constrainRegClass(
835835
MO.getReg(), True.getRegClassConstraint(MO.getOperandNo(), TII, TRI));
836836
}
837+
// We should clear the IsKill flag since we have an use now.
838+
MRI->clearKillFlags(FalseReg);
837839
MI.eraseFromParent();
838840

839841
return true;

llvm/test/CodeGen/RISCV/rvv/vmerge-peephole.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ body: |
157157
; CHECK-NEXT: [[COPY5:%[0-9]+]]:vmv0 = COPY [[PseudoVLM_V_B32_2]]
158158
; CHECK-NEXT: [[PseudoVMERGE_VIM_M1_1:%[0-9]+]]:vrnov0 = PseudoVMERGE_VIM_M1 $noreg, [[PseudoVMV_V_I_M1_]], 1, killed [[COPY5]], -1, 5 /* e32 */
159159
; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vrnov0 = PseudoVADD_VV_M1 $noreg, [[PseudoVMERGE_VIM_M1_]], [[PseudoVMERGE_VIM_M1_1]], -1, 5 /* e32 */, 3 /* ta, ma */
160-
; CHECK-NEXT: [[COPY6:%[0-9]+]]:vrnov0 = COPY killed [[PseudoVADD_VV_M1_]]
160+
; CHECK-NEXT: [[COPY6:%[0-9]+]]:vrnov0 = COPY [[PseudoVADD_VV_M1_]]
161161
; CHECK-NEXT: [[PseudoVSUB_VV_M1_:%[0-9]+]]:vr = PseudoVSUB_VV_M1 $noreg, [[PseudoVMERGE_VIM_M1_]], [[PseudoVMERGE_VIM_M1_1]], -1, 5 /* e32 */, 3 /* ta, ma */
162162
; CHECK-NEXT: [[COPY7:%[0-9]+]]:vmv0 = COPY [[PseudoVLM_V_B32_1]]
163163
; CHECK-NEXT: [[PseudoVOR_VV_M1_MASK:%[0-9]+]]:vrnov0 = PseudoVOR_VV_M1_MASK [[PseudoVADD_VV_M1_]], [[COPY6]], killed [[COPY4]], [[COPY7]], -1, 5 /* e32 */, 1 /* ta, mu */

0 commit comments

Comments
 (0)