diff options
author | Andrew Trick <atrick@apple.com> | 2012-05-17 18:35:05 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2012-05-17 18:35:05 +0000 |
commit | b54ec26b355157c76b29b12388d49816eaf57da1 (patch) | |
tree | a73ef614eed3a618d520c422269840e3f88e6bb9 /lib/CodeGen/RegisterPressure.cpp | |
parent | 811d9268e4bd1e7f77d430ce1f352188020375f4 (diff) | |
download | llvm-b54ec26b355157c76b29b12388d49816eaf57da1.tar.gz llvm-b54ec26b355157c76b29b12388d49816eaf57da1.tar.bz2 llvm-b54ec26b355157c76b29b12388d49816eaf57da1.tar.xz |
regpressure: Fix getMaxUpwardPressureDelta.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157004 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegisterPressure.cpp')
-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); } } |