summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-05-04 23:12:22 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-05-04 23:12:22 +0000
commit4fd600b648be1f10581519106c8da087ecbcc539 (patch)
treebc73fd333a9644eb1a680e0ca48c079e739d698d
parent10ebffa48a592e2e03b2e8478b03ccdd0e8da2d5 (diff)
downloadbcm5719-llvm-4fd600b648be1f10581519106c8da087ecbcc539.tar.gz
bcm5719-llvm-4fd600b648be1f10581519106c8da087ecbcc539.zip
Order register classes by spill size first, members last.
This is still a topological ordering such that every register class gets a smaller enum value than its sub-classes. Placing the smaller spill sizes first makes a difference for the super-register class bit masks. When looking for a super-register class, we usually want the smallest possible kind of super-register. That is now available as the first bit set in the bit mask. llvm-svn: 156222
-rw-r--r--llvm/utils/TableGen/CodeGenRegisters.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/llvm/utils/TableGen/CodeGenRegisters.cpp b/llvm/utils/TableGen/CodeGenRegisters.cpp
index a9eed98a5b5..03073a18c12 100644
--- a/llvm/utils/TableGen/CodeGenRegisters.cpp
+++ b/llvm/utils/TableGen/CodeGenRegisters.cpp
@@ -611,13 +611,6 @@ static int TopoOrderRC(const void *PA, const void *PB) {
if (A == B)
return 0;
- // Order by descending set size. Note that the classes' allocation order may
- // not have been computed yet. The Members set is always vaild.
- if (A->getMembers().size() > B->getMembers().size())
- return -1;
- if (A->getMembers().size() < B->getMembers().size())
- return 1;
-
// Order by ascending spill size.
if (A->SpillSize < B->SpillSize)
return -1;
@@ -630,6 +623,13 @@ static int TopoOrderRC(const void *PA, const void *PB) {
if (A->SpillAlignment > B->SpillAlignment)
return 1;
+ // Order by descending set size. Note that the classes' allocation order may
+ // not have been computed yet. The Members set is always vaild.
+ if (A->getMembers().size() > B->getMembers().size())
+ return -1;
+ if (A->getMembers().size() < B->getMembers().size())
+ return 1;
+
// Finally order by name as a tie breaker.
return StringRef(A->getName()).compare(B->getName());
}
OpenPOWER on IntegriCloud