<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 29, 2016 at 12:49 PM, Rong Xu 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">xur created this revision.<br>
xur added reviewers: silvas, davidxl.<br>
xur added subscribers: xur, llvm-commits.<br>
<br>
Using ArrayRef in annotateValueSite's parameter instead of using an array and it's size. This is one of cleanups suggested by Sean Silva in <a href="http://reviews.llvm.org/D17864" rel="noreferrer" target="_blank">http://reviews.llvm.org/D17864</a>.<br>
<br>
<a href="http://reviews.llvm.org/D18568" rel="noreferrer" target="_blank">http://reviews.llvm.org/D18568</a><br>
<br>
Files:<br>
  include/llvm/ProfileData/InstrProf.h<br>
  lib/ProfileData/InstrProf.cpp<br>
  unittests/ProfileData/InstrProfTest.cpp<br>
<br>
Index: unittests/ProfileData/InstrProfTest.cpp<br>
===================================================================<br>
--- unittests/ProfileData/InstrProfTest.cpp<br>
+++ unittests/ProfileData/InstrProfTest.cpp<br>
@@ -330,7 +330,9 @@<br>
   // Annotate with 4 records.<br>
   InstrProfValueData VD0Sorted[] = {{1000, 6}, {2000, 5}, {3000, 4}, {4000, 3},<br>
                               {5000, 2}, {6000, 1}};<br>
-  annotateValueSite(*M, *Inst, &VD0Sorted[2], 4, 10, IPVK_IndirectCallTarget, 5);<br>
+  ArrayRef<InstrProfValueData> VDArrayRef(VD0Sorted, 6);<br></blockquote><div><br></div><div>Can you just use makeArrayRef here ^ (so you don't have to duplicate the array length)? (or at least use array_lengthof rather than hardcoding it)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+  annotateValueSite(*M, *Inst, VDArrayRef.slice(2), 10, IPVK_IndirectCallTarget,<br>
+                    5);<br>
   Res = getValueProfDataFromInst(*Inst, IPVK_IndirectCallTarget, 5,<br>
                                       ValueData, N, T);<br>
   ASSERT_TRUE(Res);<br>
Index: lib/ProfileData/InstrProf.cpp<br>
===================================================================<br>
--- lib/ProfileData/InstrProf.cpp<br>
+++ lib/ProfileData/InstrProf.cpp<br>
@@ -606,11 +606,12 @@<br>
   std::unique_ptr<InstrProfValueData[]> VD =<br>
       InstrProfR.getValueForSite(ValueKind, SiteIdx, &Sum);<br>
<br>
-  annotateValueSite(M, Inst, VD.get(), NV, Sum, ValueKind, MaxMDCount);<br>
+  ArrayRef<InstrProfValueData> VDArrayRef(VD.get(), NV);<br>
+  annotateValueSite(M, Inst, VDArrayRef, Sum, ValueKind, MaxMDCount);<br>
 }<br>
<br>
 void annotateValueSite(Module &M, Instruction &Inst,<br>
-                       const InstrProfValueData VD[], uint32_t NV,<br>
+                       const ArrayRef<InstrProfValueData> VDArrayRef,<br></blockquote><div><br></div><div>Const on a value parameter is pretty non-idiomatic. Perhaps drop the const?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                        uint64_t Sum, InstrProfValueKind ValueKind,<br>
                        uint32_t MaxMDCount) {<br>
   LLVMContext &Ctx = M.getContext();<br>
@@ -627,11 +628,11 @@<br>
<br>
   // Value Profile Data<br>
   uint32_t MDCount = MaxMDCount;<br>
-  for (uint32_t I = 0; I < NV; ++I) {<br>
+  for (auto &I : VDArrayRef) {<br>
     Vals.push_back(MDHelper.createConstant(<br>
-        ConstantInt::get(Type::getInt64Ty(Ctx), VD[I].Value)));<br>
+        ConstantInt::get(Type::getInt64Ty(Ctx), I.Value)));<br>
     Vals.push_back(MDHelper.createConstant(<br>
-        ConstantInt::get(Type::getInt64Ty(Ctx), VD[I].Count)));<br>
+        ConstantInt::get(Type::getInt64Ty(Ctx), I.Count)));<br>
     if (--MDCount == 0)<br>
       break;<br>
   }<br>
Index: include/llvm/ProfileData/InstrProf.h<br>
===================================================================<br>
--- include/llvm/ProfileData/InstrProf.h<br>
+++ include/llvm/ProfileData/InstrProf.h<br>
@@ -229,10 +229,9 @@<br>
                        const InstrProfRecord &InstrProfR,<br>
                        InstrProfValueKind ValueKind, uint32_t SiteIndx,<br>
                        uint32_t MaxMDCount = 3);<br>
-/// Same as the above interface but using the ValueData array directly, as<br>
-/// well as \p Sum.<br>
+/// Same as the above interface but using an ArrayRef, as well as \p Sum.<br>
 void annotateValueSite(Module &M, Instruction &Inst,<br>
-                       const InstrProfValueData VD[], uint32_t NV,<br>
+                       const ArrayRef<InstrProfValueData> VDArrayRef,<br>
                        uint64_t Sum, InstrProfValueKind ValueKind,<br>
                        uint32_t MaxMDCount);<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>
<br></blockquote></div><br></div></div>