<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt">Unittests? <div>(I know, we'll have this tested in runnable tests, but .ll tests won't hurt). <br><br><div class="gmail_quote">On Thu, Nov 29, 2012 at 7:22 PM, Evgeniy Stepanov <span dir="ltr"><<a href="mailto:eugeni.stepanov@gmail.com" target="_blank">eugeni.stepanov@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: eugenis<br>
Date: Thu Nov 29 09:22:06 2012<br>
New Revision: 168889<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=168889&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=168889&view=rev</a><br>
Log:<br>
[msan] Handle vector manipulation instructions.<br>
<br>
Handle insertelement, extractelement, shufflevector.<br>
<br>
Modified:<br>
    llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=168889&r1=168888&r2=168889&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=168889&r1=168888&r2=168889&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp Thu Nov 29 09:22:06 2012<br>
@@ -743,6 +743,31 @@<br>
       IRB.CreateAlignedStore(getOrigin(Val), getOriginPtr(Addr, IRB), I.getAlignment());<br>
   }<br>
<br>
+  // Vector manipulation.<br>
+  void visitExtractElementInst(ExtractElementInst &I) {<br>
+    insertCheck(I.getOperand(1), &I);<br>
+    IRBuilder<> IRB(&I);<br>
+    setShadow(&I, IRB.CreateExtractElement(getShadow(&I, 0), I.getOperand(1),<br>
+              "_msprop"));<br>
+    setOrigin(&I, getOrigin(&I, 0));<br>
+  }<br>
+<br>
+  void visitInsertElementInst(InsertElementInst &I) {<br>
+    insertCheck(I.getOperand(2), &I);<br>
+    IRBuilder<> IRB(&I);<br>
+    setShadow(&I, IRB.CreateInsertElement(getShadow(&I, 0), getShadow(&I, 1),<br>
+              I.getOperand(2), "_msprop"));<br>
+    setOriginForNaryOp(I);<br>
+  }<br>
+<br>
+  void visitShuffleVectorInst(ShuffleVectorInst &I) {<br>
+    insertCheck(I.getOperand(2), &I);<br>
+    IRBuilder<> IRB(&I);<br>
+    setShadow(&I, IRB.CreateShuffleVector(getShadow(&I, 0), getShadow(&I, 1),<br>
+              I.getOperand(2), "_msprop"));<br>
+    setOriginForNaryOp(I);<br>
+  }<br>
+<br>
   // Casts.<br>
   void visitSExtInst(SExtInst &I) {<br>
     IRBuilder<> IRB(&I);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>