mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-21 19:32:16 +00:00
Improve pre-RA-sched register pressure tracking for duplicate operands.
This helps cases like 2008-07-19-movups-spills.ll, but doesn't have an obvious impact on benchmarks git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127347 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d1cba8727a
commit
4bbf4678e3
@ -419,11 +419,15 @@ void ScheduleDAGSDNodes::AddSchedEdges() {
|
|||||||
ST.adjustSchedDependency(OpSU, SU, const_cast<SDep &>(dep));
|
ST.adjustSchedDependency(OpSU, SU, const_cast<SDep &>(dep));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SU->addPred(dep) && !dep.isCtrl() && OpSU->NumRegDefsLeft > 0) {
|
if (!SU->addPred(dep) && !dep.isCtrl() && OpSU->NumRegDefsLeft > 1) {
|
||||||
// Multiple register uses are combined in the same SUnit. For example,
|
// Multiple register uses are combined in the same SUnit. For example,
|
||||||
// we could have a set of glued nodes with all their defs consumed by
|
// we could have a set of glued nodes with all their defs consumed by
|
||||||
// another set of glued nodes. Register pressure tracking sees this as
|
// another set of glued nodes. Register pressure tracking sees this as
|
||||||
// a single use, so to keep pressure balanced we reduce the defs.
|
// a single use, so to keep pressure balanced we reduce the defs.
|
||||||
|
//
|
||||||
|
// We can't tell (without more book-keeping) if this results from
|
||||||
|
// glued nodes or duplicate operands. As long as we don't reduce
|
||||||
|
// NumRegDefsLeft to zero, we handle the common cases well.
|
||||||
--OpSU->NumRegDefsLeft;
|
--OpSU->NumRegDefsLeft;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user