<div style="font-family:arial,helvetica,sans-serif;font-size:10pt">This one-line fix is safe, and is a regression from 3.1. Please integrate this into the 3.2 branch.<br><br><div class="gmail_quote">On 17 November 2012 21:39, Nick Lewycky <span dir="ltr"><<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: nicholas<br>
Date: Sat Nov 17 23:39:39 2012<br>
New Revision: 168280<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=168280&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=168280&view=rev</a><br>
Log:<br>
Don't try to calculate the alignment of an unsigned type. Fixes PR14371!<br>
<br>
Modified:<br>
    llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
    llvm/trunk/test/Transforms/InstCombine/alloca.ll<br>
<br>
Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?rev=168280&r1=168279&r2=168280&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?rev=168280&r1=168279&r2=168280&view=diff</a><br>


==============================================================================<br>
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp Sat Nov 17 23:39:39 2012<br>
@@ -164,7 +164,8 @@<br>
       return TD.getPreferredAlignment(GV);<br>
<br>
   if (PointerType *PT = dyn_cast<PointerType>(V->getType()))<br>
-    return TD.getABITypeAlignment(PT->getElementType());<br>
+    if (PT->getElementType()->isSized())<br>
+      return TD.getABITypeAlignment(PT->getElementType());<br>
<br>
   return 0;<br>
 }<br>
<br>
Modified: llvm/trunk/test/Transforms/InstCombine/alloca.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/alloca.ll?rev=168280&r1=168279&r2=168280&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/alloca.ll?rev=168280&r1=168279&r2=168280&view=diff</a><br>


==============================================================================<br>
--- llvm/trunk/test/Transforms/InstCombine/alloca.ll (original)<br>
+++ llvm/trunk/test/Transforms/InstCombine/alloca.ll Sat Nov 17 23:39:39 2012<br>
@@ -94,3 +94,19 @@<br>
   tail call void @f(i32* %b)<br>
   ret void<br>
 }<br>
+<br>
+; PR14371<br>
+%opaque_type = type opaque<br>
+%real_type = type { { i32, i32* } }<br>
+<br>
+@opaque_global = external constant %opaque_type, align 4<br>
+<br>
+define void @test7() {<br>
+entry:<br>
+  %0 = alloca %real_type, align 4<br>
+  %1 = bitcast %real_type* %0 to i8*<br>
+  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1, i8* bitcast (%opaque_type* @opaque_global to i8*), i32 8, i32 1, i1 false)<br>
+  ret void<br>
+}<br>
+<br>
+declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind<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>