<div class="gmail_quote">On 13 June 2011 10:10, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><br>
On Jun 13, 2011, at 12:52 AM, Nick Lewycky wrote:<br>
<br>
> Author: nicholas<br>
> Date: Mon Jun 13 02:52:46 2011<br>
> New Revision: 132906<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=132906&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=132906&view=rev</a><br>
> Log:<br>
> It's possible that an all-zero GEP may be used as the argument to lifetime<br>
> intrinsics. In fact, we'll optimize a bitcast to that when possible. Detect it<br>
> when looking for the lifetime intrinsics.<br>
><br>
> No test case, noticed by inspection.<br>
<br>
</div>Would it make sense to use Value::stripPointerCasts here?<br></blockquote><div><br></div><div>Yes it would. Committed in r132954.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


<font color="#888888"><br>
-Chris<br>
</font><div><div></div><div class="h5"><br>
><br>
> Modified:<br>
>    llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp?rev=132906&r1=132905&r2=132906&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp?rev=132906&r1=132905&r2=132906&view=diff</a><br>


> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp Mon Jun 13 02:52:46 2011<br>
> @@ -734,11 +734,15 @@<br>
>   if (AI->getType() == Int8PtrTy)<br>
>     return isUsedByLifetimeMarker(AI);<br>
><br>
> -  // Do a scan to find all the bitcasts to i8*.<br>
> +  // Do a scan to find all the bitcasts or GEPs to i8*.<br>
>   for (Value::use_iterator I = AI->use_begin(), E = AI->use_end(); I != E;<br>
>        ++I) {<br>
>     if (I->getType() != Int8PtrTy) continue;<br>
> -    if (!isa<BitCastInst>(*I)) continue;<br>
> +    if (GetElementPtrInst *GEPI = dyn_cast<GetElementPtrInst>(*I)) {<br>
> +      if (!GEPI->hasAllZeroIndices()) continue;<br>
> +    } else if (!isa<BitCastInst>(*I)) {<br>
> +      continue;<br>
> +    }<br>
>     if (isUsedByLifetimeMarker(*I))<br>
>       return true;<br>
>   }<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>
<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>
</div></div></blockquote></div><br>