[llvm] [NFC][TableGen] Code cleanup in CodeGenRegister (PR #137994)

Rahul Joshi via llvm-commits llvm-commits at lists.llvm.org
Mon May 5 08:46:16 PDT 2025


================
@@ -975,29 +948,28 @@ static bool testSubClass(const CodeGenRegisterClass *A,
 /// ordering that arranges all register classes before their sub-classes.
 ///
 /// Register classes with the same registers, spill size, and alignment form a
-/// clique.  They will be ordered alphabetically.
+/// clique. They will be ordered alphabetically.
 ///
-static bool TopoOrderRC(const CodeGenRegisterClass &PA,
-                        const CodeGenRegisterClass &PB) {
-  auto *A = &PA;
-  auto *B = &PB;
-  if (A == B)
-    return false;
-
-  if (A->RSI < B->RSI)
-    return true;
-  if (A->RSI != B->RSI)
+static bool TopoOrderRC(const CodeGenRegisterClass &A,
+                        const CodeGenRegisterClass &B) {
+  if (&A == &B)
     return false;
 
-  // 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 true;
-  if (A->getMembers().size() < B->getMembers().size())
-    return false;
+  constexpr size_t SIZET_MAX = std::numeric_limits<size_t>::max();
 
-  // Finally order by name as a tie breaker.
-  return StringRef(A->getName()) < B->getName();
+  // sort in the following order:
+  // (a) first by register size in ascending order.
+  // (b) then by set size in descending order.
+  // (c) finally, by name as a tie breaker.
+  //
+  // For set size, Note that the classes' allocation order may not have been
+  // computed yet. The Members set is always vaild. Also, Since we use
+  // std::tie() < operator for ordering, we can achieve the desceding set size
+  // ordering by using (SIZET_MAX - set_size) in the tie.
----------------
jurahul wrote:

Done.

https://github.com/llvm/llvm-project/pull/137994


More information about the llvm-commits mailing list