<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 29, 2016 at 8:50 AM, Sanjoy Das via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: sanjoy<br>
Date: Fri Jan 29 10:50:34 2016<br>
New Revision: 259208<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=259208&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=259208&view=rev</a><br>
Log:<br>
[RS4GC] Minor local cleanup to StabilizeOrder; NFC<br>
<br>
 - Locally declare struct, and call it BaseDerivedPair<br>
 - Use a lambda to compare, instead of a singleton with uninitialized<br>
   fields<br>
 - Add a constructor to BaseDerivedPair and use SmallVector::emplace_back<br>
<br>
Modified:<br>
    llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp?rev=259208&r1=259207&r2=259208&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp?rev=259208&r1=259207&r2=259208&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp Fri Jan 29 10:50:34 2016<br>
@@ -1516,33 +1516,32 @@ makeStatepointExplicitImpl(const CallSit<br>
   CreateGCRelocates(LiveVariables, LiveStartIdx, BasePtrs, Token, Builder);<br>
 }<br>
<br>
-namespace {<br>
-struct NameOrdering {<br>
-  Value *Base;<br>
-  Value *Derived;<br>
-<br>
-  bool operator()(NameOrdering const &a, NameOrdering const &b) {<br>
-    return -1 == a.Derived->getName().compare(b.Derived->getName());<br>
-  }<br>
-};<br>
-}<br>
-<br>
 static void StabilizeOrder(SmallVectorImpl<Value *> &BaseVec,<br>
                            SmallVectorImpl<Value *> &LiveVec) {<br>
   assert(BaseVec.size() == LiveVec.size());<br>
<br>
-  SmallVector<NameOrdering, 64> Temp;<br>
-  for (size_t i = 0; i < BaseVec.size(); i++) {<br>
-    NameOrdering v;<br>
-    v.Base = BaseVec[i];<br>
-    v.Derived = LiveVec[i];<br>
-    Temp.push_back(v);<br>
-  }<br>
+  struct BaseDerivedPair {<br>
+    Value *Base;<br>
+    Value *Derived;<br>
+<br>
+    BaseDerivedPair(Value *B, Value *D) : Base(B), Derived(D) {}<br></blockquote><div><br></div><div>You could drop this ctor</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+  };<br>
+<br>
+  SmallVector<BaseDerivedPair, 64> NameOrdering;<br>
+  NameOrdering.reserve(BaseVec.size());<br>
+<br>
+  for (size_t i = 0, e = BaseVec.size(); i < e; i++)<br>
+    NameOrdering.emplace_back(BaseVec[i], LiveVec[i]);<br></blockquote><div><br></div><div>And just use braced init here:<br>push_back({BaseVec[i], LiveVec[i]});</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
+  auto Compare = [](BaseDerivedPair &L, BaseDerivedPair &R) {<br>
+    return L.Derived->getName() < R.Derived->getName();<br>
+  };<br>
+<br>
+  std::sort(NameOrdering.begin(), NameOrdering.end(), Compare);<br></blockquote><div><br></div><div>I'd probably just inline the lambda into the sort call.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
-  std::sort(Temp.begin(), Temp.end(), NameOrdering());<br>
   for (size_t i = 0; i < BaseVec.size(); i++) {<br></blockquote><div><br></div><div>But, honestly - it'd be really nice if we could just sort these in place. But that'd probably require a few abstractions we don't have just yet (a range merge/zip tool mostly).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-    BaseVec[i] = Temp[i].Base;<br>
-    LiveVec[i] = Temp[i].Derived;<br>
+    BaseVec[i] = NameOrdering[i].Base;<br>
+    LiveVec[i] = NameOrdering[i].Derived;<br>
   }<br>
 }<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>