diff options
author | Afanasyev Ivan <ivafanas@gmail.com> | 2025-09-25 12:59:36 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-25 14:59:36 +0900 |
commit | 3e639930d3ba3d6401992ab1d54dc625d5a299a5 (patch) | |
tree | 34220f6f834be74829d5349c0635381dec1c7974 /llvm/lib/CodeGen/MachineInstr.cpp | |
parent | f9305c900ba23de7a9088ed00912cc6113eba506 (diff) | |
download | llvm-3e639930d3ba3d6401992ab1d54dc625d5a299a5.zip llvm-3e639930d3ba3d6401992ab1d54dc625d5a299a5.tar.gz llvm-3e639930d3ba3d6401992ab1d54dc625d5a299a5.tar.bz2 |
[CodeGen] Extract copy-paste on PHI MachineInstr income removal. (#158634)
Diffstat (limited to 'llvm/lib/CodeGen/MachineInstr.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineInstr.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp index 2c06c5a..8ad9245 100644 --- a/llvm/lib/CodeGen/MachineInstr.cpp +++ b/llvm/lib/CodeGen/MachineInstr.cpp @@ -2747,3 +2747,18 @@ bool MachineInstr::mayFoldInlineAsmRegOp(unsigned OpId) const { return F.getRegMayBeFolded(); return false; } + +unsigned MachineInstr::removePHIIncomingValueFor(const MachineBasicBlock &MBB) { + assert(isPHI()); + + // Phi might have multiple entries for MBB. Need to remove them all. + unsigned RemovedCount = 0; + for (unsigned N = getNumOperands(); N > 2; N -= 2) { + if (getOperand(N - 1).getMBB() == &MBB) { + removeOperand(N - 1); + removeOperand(N - 2); + RemovedCount += 2; + } + } + return RemovedCount; +} |