[StackMap] Use lambdas to specify the sort and erase conditions. NFC.
authorJuergen Ributzka <juergen@apple.com>
Thu, 9 Jul 2015 17:11:15 +0000 (17:11 +0000)
committerJuergen Ributzka <juergen@apple.com>
Thu, 9 Jul 2015 17:11:15 +0000 (17:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241823 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/StackMaps.h
lib/CodeGen/StackMaps.cpp

index ff552237610530f44c61dbe85b8623896338030b..fdc1a9143ed23269b9f43f09247d7f5776d1e3a6 100644 (file)
@@ -152,13 +152,6 @@ public:
     unsigned short DwarfRegNum;
     unsigned short Size;
 
-    void MarkInvalid() { Reg = 0; }
-
-    // Only sort by the dwarf register number.
-    bool operator<(const LiveOutReg &LO) const {
-      return DwarfRegNum < LO.DwarfRegNum;
-    }
-    static bool IsInvalid(const LiveOutReg &LO) { return LO.Reg == 0; }
     LiveOutReg() : Reg(0), DwarfRegNum(0), Size(0) {}
     LiveOutReg(unsigned short Reg, unsigned short DwarfRegNum,
                unsigned short Size)
index 5fe17a1889b64e6705c70a5e955954426b36b923..116eef66c580ca2abc84a92d92778f8f11c89550 100644 (file)
@@ -248,10 +248,15 @@ StackMaps::parseRegisterLiveOutMask(const uint32_t *Mask) const {
   // We don't need to keep track of a register if its super-register is already
   // in the list. Merge entries that refer to the same dwarf register and use
   // the maximum size that needs to be spilled.
-  std::sort(LiveOuts.begin(), LiveOuts.end());
-  for (LiveOutVec::iterator I = LiveOuts.begin(), E = LiveOuts.end(); I != E;
-       ++I) {
-    for (LiveOutVec::iterator II = std::next(I); II != E; ++II) {
+
+  std::sort(LiveOuts.begin(), LiveOuts.end(),
+            [](const LiveOutReg &LHS, const LiveOutReg &RHS) {
+              // Only sort by the dwarf register number.
+              return LHS.DwarfRegNum < RHS.DwarfRegNum;
+            });
+
+  for (auto I = LiveOuts.begin(), E = LiveOuts.end(); I != E; ++I) {
+    for (auto II = std::next(I); II != E; ++II) {
       if (I->DwarfRegNum != II->DwarfRegNum) {
         // Skip all the now invalid entries.
         I = --II;
@@ -260,12 +265,15 @@ StackMaps::parseRegisterLiveOutMask(const uint32_t *Mask) const {
       I->Size = std::max(I->Size, II->Size);
       if (TRI->isSuperRegister(I->Reg, II->Reg))
         I->Reg = II->Reg;
-      II->MarkInvalid();
+      II->Reg = 0; // mark for deletion.
     }
   }
+
   LiveOuts.erase(
-      std::remove_if(LiveOuts.begin(), LiveOuts.end(), LiveOutReg::IsInvalid),
+      std::remove_if(LiveOuts.begin(), LiveOuts.end(),
+                     [](const LiveOutReg &LO) { return LO.Reg == 0; }),
       LiveOuts.end());
+
   return LiveOuts;
 }