diff options
-rw-r--r-- | lib/CodeGen/RegisterPressure.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/CodeGen/RegisterPressure.cpp b/lib/CodeGen/RegisterPressure.cpp index 53036c7b84..fbd08cb575 100644 --- a/lib/CodeGen/RegisterPressure.cpp +++ b/lib/CodeGen/RegisterPressure.cpp @@ -629,13 +629,17 @@ getMaxUpwardPressureDelta(const MachineInstr *MI, RegPressureDelta &Delta) { // Generate liveness for uses. for (unsigned i = 0, e = PhysRegOpers.Uses.size(); i < e; ++i) { unsigned Reg = PhysRegOpers.Uses[i]; - if (!hasRegAlias(Reg, LivePhysRegs, TRI)) { + if (!hasRegAlias(Reg, LivePhysRegs, TRI) + && (findRegAlias(Reg, PhysRegOpers.Defs, TRI) + == PhysRegOpers.Defs.end())) { increasePhysRegPressure(Reg); } } for (unsigned i = 0, e = VirtRegOpers.Uses.size(); i < e; ++i) { unsigned Reg = VirtRegOpers.Uses[i]; - if (!LiveVirtRegs.count(Reg)) { + if (!LiveVirtRegs.count(Reg) + && (std::find(VirtRegOpers.Defs.begin(), VirtRegOpers.Defs.end(), Reg) + != VirtRegOpers.Defs.end())) { increaseVirtRegPressure(Reg); } } |