<div dir="ltr">SGTM</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 31, 2017 at 10:21 AM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">David, it was suggested this be merged to 4.0. What do you think?<br>
<br>
Thanks,<br>
Hans<br>
<br>
On Tue, Jan 31, 2017 at 6:04 AM, Silviu Baranga via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: sbaranga<br>
> Date: Tue Jan 31 08:04:15 2017<br>
> New Revision: 293629<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=293629&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=293629&view=rev</a><br>
> Log:<br>
> [InstCombine] Make sure that LHS and RHS have the same type in<br>
> transformToIndexedCompare<br>
><br>
> If they don't have the same type, the size of the constant<br>
> index would need to be adjusted (and this wouldn't be always<br>
> possible).<br>
><br>
> Alternatively we could try the analysis with the initial<br>
> RHS value, which would guarantee that the two sides have<br>
> the same type. However it is unlikely that in practice this<br>
> would pass our transformation requirements.<br>
><br>
> Fixes PR31808 (<a href="https://llvm.org/bugs/show_bug.cgi?id=31808" rel="noreferrer" target="_blank">https://llvm.org/bugs/show_<wbr>bug.cgi?id=31808</a>).<br>
><br>
><br>
> Modified:<br>
>     llvm/trunk/lib/Transforms/<wbr>InstCombine/<wbr>InstCombineCompares.cpp<br>
>     llvm/trunk/test/Transforms/<wbr>InstCombine/indexed-gep-<wbr>compares.ll<br>
><br>
> Modified: llvm/trunk/lib/Transforms/<wbr>InstCombine/<wbr>InstCombineCompares.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp?rev=293629&r1=293628&r2=293629&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/InstCombine/<wbr>InstCombineCompares.cpp?rev=<wbr>293629&r1=293628&r2=293629&<wbr>view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- llvm/trunk/lib/Transforms/<wbr>InstCombine/<wbr>InstCombineCompares.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/<wbr>InstCombine/<wbr>InstCombineCompares.cpp Tue Jan 31 08:04:15 2017<br>
> @@ -884,6 +884,10 @@ static Instruction *transformToIndexedCo<br>
>    if (!GEPLHS-><wbr>hasAllConstantIndices())<br>
>      return nullptr;<br>
><br>
> +  // Make sure the pointers have the same type.<br>
> +  if (GEPLHS->getType() != RHS->getType())<br>
> +    return nullptr;<br>
> +<br>
>    Value *PtrBase, *Index;<br>
>    std::tie(PtrBase, Index) = getAsConstantIndexedAddress(<wbr>GEPLHS, DL);<br>
><br>
><br>
> Modified: llvm/trunk/test/Transforms/<wbr>InstCombine/indexed-gep-<wbr>compares.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/indexed-gep-compares.ll?rev=293629&r1=293628&r2=293629&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/InstCombine/<wbr>indexed-gep-compares.ll?rev=<wbr>293629&r1=293628&r2=293629&<wbr>view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- llvm/trunk/test/Transforms/<wbr>InstCombine/indexed-gep-<wbr>compares.ll (original)<br>
> +++ llvm/trunk/test/Transforms/<wbr>InstCombine/indexed-gep-<wbr>compares.ll Tue Jan 31 08:04:15 2017<br>
> @@ -188,3 +188,20 @@ bb10:<br>
><br>
><br>
>  declare i32 @__gxx_personality_v0(...)<br>
> +<br>
> +define i1 @test8(i64* %in, i64 %offset) {<br>
> +entry:<br>
> +<br>
> + %ld = load i64, i64* %in, align 8<br>
> + %casti8 = inttoptr i64 %ld to i8*<br>
> + %gepi8 = getelementptr inbounds i8, i8* %casti8, i64 %offset<br>
> + %cast = bitcast i8* %gepi8 to i32**<br>
> + %ptrcast = inttoptr i64 %ld to i32**<br>
> + %gepi32 = getelementptr inbounds i32*, i32** %ptrcast, i64 1<br>
> + %cmp = icmp eq i32** %gepi32, %cast<br>
> + ret i1 %cmp<br>
> +<br>
> +<br>
> +; CHECK-LABEL: @test8(<br>
> +; CHECK-NOT: icmp eq i32 %{{[0-9A-Za-z.]+}}, 1<br>
> +}<br>
><br>
><br>
> ______________________________<wbr>_________________<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/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>