<div dir="ltr">Sure. It's applied. Thanks.<div><br></div><div>-bw</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 21, 2013 at 7:50 AM, Justin Holewinski <span dir="ltr"><<a href="mailto:justin.holewinski@gmail.com" target="_blank">justin.holewinski@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Bill,<div><br></div><div>Is it too late to get this in for 3.3?  It fixes a fairly critical bug for us.</div>
<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 21, 2013 at 10:37 AM, Justin Holewinski <span dir="ltr"><<a href="mailto:jholewinski@nvidia.com" target="_blank">jholewinski@nvidia.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: jholewinski<br>
Date: Tue May 21 09:37:16 2013<br>
New Revision: 182387<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=182387&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=182387&view=rev</a><br>
Log:<br>
Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen.<br>
<br>
The intrinsic calls are dropped, but the annotated value is propagated.<br>
<br>
Fixes PR 15253<br>
<br>
Original patch by Zeng Bin!<br>
<br>
Added:<br>
    llvm/trunk/test/CodeGen/Generic/annotate.ll<br>
    llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp<br>
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp<br>
<br>
Modified: llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp?rev=182387&r1=182386&r2=182387&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp?rev=182387&r1=182386&r2=182387&view=diff</a><br>


==============================================================================<br>
--- llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp Tue May 21 09:37:16 2013<br>
@@ -453,6 +453,12 @@ void IntrinsicLowering::LowerIntrinsicCa<br>
     CI->replaceAllUsesWith(ConstantInt::get(CI->getType(), 1));<br>
     break;<br>
<br>
+  case Intrinsic::annotation:<br>
+  case Intrinsic::ptr_annotation:<br>
+    // Just drop the annotation, but forward the value<br>
+    CI->replaceAllUsesWith(CI->getOperand(0));<br>
+    break;<br>
+<br>
   case Intrinsic::var_annotation:<br>
     break;   // Strip out annotate intrinsic<br>
<br>
<br>
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=182387&r1=182386&r2=182387&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=182387&r1=182386&r2=182387&view=diff</a><br>


==============================================================================<br>
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Tue May 21 09:37:16 2013<br>
@@ -5037,6 +5037,11 @@ SelectionDAGBuilder::visitIntrinsicCall(<br>
     setValue(&I, Res);<br>
     return 0;<br>
   }<br>
+  case Intrinsic::annotation:<br>
+  case Intrinsic::ptr_annotation:<br>
+    // Drop the intrinsic, but forward the value<br>
+    setValue(&I, getValue(I.getOperand(0)));<br>
+    return 0;<br>
   case Intrinsic::var_annotation:<br>
     // Discard annotate attributes<br>
     return 0;<br>
<br>
Added: llvm/trunk/test/CodeGen/Generic/annotate.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/annotate.ll?rev=182387&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/annotate.ll?rev=182387&view=auto</a><br>


==============================================================================<br>
--- llvm/trunk/test/CodeGen/Generic/annotate.ll (added)<br>
+++ llvm/trunk/test/CodeGen/Generic/annotate.ll Tue May 21 09:37:16 2013<br>
@@ -0,0 +1,15 @@<br>
+; RUN: llc < %s<br>
+<br>
+; PR15253<br>
+<br>
+@.str = private unnamed_addr constant [4 x i8] c"sth\00", section "llvm.metadata"<br>
+@.str1 = private unnamed_addr constant [4 x i8] c"t.c\00", section "llvm.metadata"<br>
+<br>
+<br>
+define i32 @foo(i32 %a) {<br>
+entry:<br>
+  %0 = call i32 @llvm.annotation.i32(i32 %a, i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str1, i32 0, i32 0), i32 2)<br>
+  ret i32 %0<br>
+}<br>
+<br>
+declare i32 @llvm.annotation.i32(i32, i8*, i8*, i32) #1<br>
<br>
Added: llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll?rev=182387&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll?rev=182387&view=auto</a><br>


==============================================================================<br>
--- llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll (added)<br>
+++ llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll Tue May 21 09:37:16 2013<br>
@@ -0,0 +1,18 @@<br>
+; RUN: llc < %s<br>
+<br>
+; PR15253<br>
+<br>
+%struct.mystruct = type { i32 }<br>
+<br>
+@.str = private unnamed_addr constant [4 x i8] c"sth\00", section "llvm.metadata"<br>
+@.str1 = private unnamed_addr constant [4 x i8] c"t.c\00", section "llvm.metadata"<br>
+<br>
+define void @foo() {<br>
+entry:<br>
+  %m = alloca i8, align 4<br>
+  %0 = call i8* @llvm.ptr.annotation.p0i8(i8* %m, i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str1, i32 0, i32 0), i32 2)<br>
+  store i8 1, i8* %0, align 4<br>
+  ret void<br>
+}<br>
+<br>
+declare i8* @llvm.ptr.annotation.p0i8(i8*, i8*, i8*, i32) #1<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">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><span class="HOEnZb"><font color="#888888"><br>
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div>
</font></span></div>
</blockquote></div><br></div>