Machine model: rewrite a tablegen loop to avoid comparing record pointers.
authorAndrew Trick <atrick@apple.com>
Tue, 23 Apr 2013 23:45:11 +0000 (23:45 +0000)
committerAndrew Trick <atrick@apple.com>
Tue, 23 Apr 2013 23:45:11 +0000 (23:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180160 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/SubtargetEmitter.cpp

index 98892e11441bb95df1d0d90f65c2468d03d80ef8..0d36c4fd4684278f4333f5d51d08a037476378ad 100644 (file)
@@ -797,7 +797,6 @@ void SubtargetEmitter::ExpandProcResources(RecVec &PRVec,
     RecVec SubResources;
     if (PRVec[i]->isSubClassOf("ProcResGroup")) {
       SubResources = PRVec[i]->getValueAsListOfDefs("Resources");
-      std::sort(SubResources.begin(), SubResources.end(), LessRecord());
     }
     else {
       SubResources.push_back(PRVec[i]);
@@ -808,15 +807,12 @@ void SubtargetEmitter::ExpandProcResources(RecVec &PRVec,
       if (*PRI == PRVec[i] || !(*PRI)->isSubClassOf("ProcResGroup"))
         continue;
       RecVec SuperResources = (*PRI)->getValueAsListOfDefs("Resources");
-      std::sort(SuperResources.begin(), SuperResources.end(), LessRecord());
       RecIter SubI = SubResources.begin(), SubE = SubResources.end();
-      RecIter SuperI = SuperResources.begin(), SuperE = SuperResources.end();
-      for ( ; SubI != SubE && SuperI != SuperE; ++SuperI) {
-        if (*SubI < *SuperI)
+      for( ; SubI != SubE; ++SubI) {
+        if (std::find(SuperResources.begin(), SuperResources.end(), *SubI)
+            == SuperResources.end()) {
           break;
-        else if (*SuperI < *SubI)
-          continue;
-        ++SubI;
+        }
       }
       if (SubI == SubE) {
         PRVec.push_back(*PRI);