<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 10, 2015 at 8:35 AM, Rafael Espindola 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: rafael<br>
Date: Thu Dec 10 10:35:06 2015<br>
New Revision: 255258<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=255258&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=255258&view=rev</a><br>
Log:<br>
Avoid undefined behavior when vector is empty.<br>
<br>
Found by ubsan.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/ADT/SetVector.h<br>
    llvm/trunk/lib/Linker/LinkModules.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/ADT/SetVector.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SetVector.h?rev=255258&r1=255257&r2=255258&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SetVector.h?rev=255258&r1=255257&r2=255258&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/ADT/SetVector.h (original)<br>
+++ llvm/trunk/include/llvm/ADT/SetVector.h Thu Dec 10 10:35:06 2015<br>
@@ -58,6 +58,8 @@ public:<br>
     insert(Start, End);<br>
   }<br>
<br>
+  ArrayRef<T> getArrayRef() const { return vector_; }<br>
+<br>
   /// \brief Determine if the SetVector is empty or not.<br>
   bool empty() const {<br>
     return vector_.empty();<br>
<br>
Modified: llvm/trunk/lib/Linker/LinkModules.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=255258&r1=255257&r2=255258&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=255258&r1=255257&r2=255258&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Linker/LinkModules.cpp (original)<br>
+++ llvm/trunk/lib/Linker/LinkModules.cpp Thu Dec 10 10:35:06 2015<br>
@@ -772,8 +772,7 @@ bool ModuleLinker::run() {<br>
       Internalize.insert(GV->getName());<br>
   }<br>
<br>
-  if (Mover.move(SrcM,<br>
-                 makeArrayRef(&*ValuesToLink.begin(), ValuesToLink.size()),<br></blockquote><div><br></div><div>Isn't vector already implicitly convertible to ArrayRef? (I guess there's something else at work heer - 'move' is a function template & has weird arg deduction issues? something else?)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+  if (Mover.move(SrcM, ValuesToLink.getArrayRef(),<br>
                  [this](GlobalValue &GV, IRMover::ValueAdder Add) {<br>
                    addLazyFor(GV, Add);<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>