summaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineInstrBundle.cpp
diff options
context:
space:
mode:
authorAiden Grossman <aidengrossman@google.com>2025-09-12 01:05:48 +0000
committerAiden Grossman <aidengrossman@google.com>2025-09-12 01:05:48 +0000
commit88a52e1fc6d3e153132f0e0a86431762adf8c0c4 (patch)
treebae8c1b720736edc54705c325c5bfb95b459eda2 /llvm/lib/CodeGen/MachineInstrBundle.cpp
parent1873dd7e8bb03319500a9f4b51e9e498a8fb70de (diff)
parent2740e4b73682eb7a6869c333991a608304938952 (diff)
[𝘀𝗽𝗿] changes introduced through rebaseusers/boomanaiden154/main.clang-invoke-shell-script-with-bash
Created using spr 1.3.6 [skip ci]
Diffstat (limited to 'llvm/lib/CodeGen/MachineInstrBundle.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineInstrBundle.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/MachineInstrBundle.cpp b/llvm/lib/CodeGen/MachineInstrBundle.cpp
index 5830ecfe4aa2..da29ffc9d2fe 100644
--- a/llvm/lib/CodeGen/MachineInstrBundle.cpp
+++ b/llvm/lib/CodeGen/MachineInstrBundle.cpp
@@ -133,7 +133,6 @@ void llvm::finalizeBundle(MachineBasicBlock &MBB,
SmallSetVector<Register, 32> LocalDefs;
BitVector LocalDefsP(TRI->getNumRegUnits());
SmallSet<Register, 8> DeadDefSet;
- SmallSet<Register, 16> KilledDefSet;
SmallSetVector<Register, 8> ExternUses;
SmallSet<Register, 8> KilledUseSet;
SmallSet<Register, 8> UndefUseSet;
@@ -151,7 +150,7 @@ void llvm::finalizeBundle(MachineBasicBlock &MBB,
MO.setIsInternalRead();
if (MO.isKill()) {
// Internal def is now killed.
- KilledDefSet.insert(Reg);
+ DeadDefSet.insert(Reg);
}
} else {
if (ExternUses.insert(Reg)) {
@@ -171,19 +170,18 @@ void llvm::finalizeBundle(MachineBasicBlock &MBB,
continue;
if (LocalDefs.insert(Reg)) {
- if (MO.isDead())
- DeadDefSet.insert(Reg);
- else if (Reg.isPhysical())
+ if (!MO.isDead() && Reg.isPhysical()) {
for (MCRegUnit Unit : TRI->regunits(Reg.asMCReg()))
LocalDefsP.set(Unit);
+ }
} else {
- // Re-defined inside the bundle, it's no longer killed.
- KilledDefSet.erase(Reg);
if (!MO.isDead()) {
- // Previously defined but dead.
+ // Re-defined inside the bundle, it's no longer dead.
DeadDefSet.erase(Reg);
}
}
+ if (MO.isDead())
+ DeadDefSet.insert(Reg);
}
// Set FrameSetup/FrameDestroy for the bundle. If any of the instructions
@@ -196,7 +194,7 @@ void llvm::finalizeBundle(MachineBasicBlock &MBB,
for (Register Reg : LocalDefs) {
// If it's not live beyond end of the bundle, mark it dead.
- bool isDead = DeadDefSet.contains(Reg) || KilledDefSet.contains(Reg);
+ bool isDead = DeadDefSet.contains(Reg);
MIB.addReg(Reg, getDefRegState(true) | getDeadRegState(isDead) |
getImplRegState(true));
}