<div dir="ltr">FYI, I can reproduce it locally. <a href="http://bb.pgr.jp/builders/bootstrap-clang-libcxx-lld-i686-linux/builds/84">http://bb.pgr.jp/builders/bootstrap-clang-libcxx-lld-i686-linux/builds/84</a><div>(It's not i686 but x86-64, due to issues...)</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 6, 2017 at 8:55 PM Diana Picus via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Max,<br>
<br>
Thanks for reverting.<br>
<br>
As I told you before, the patch also broke some of the test-suite<br>
apps, not just the SaturatedMultiply test:<br>
See e.g. <a href="http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/6568" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/6568</a><br>
<br>
You should try to reproduce those failures and make sure they're fixed<br>
before trying to commit again. If you don't have access to any<br>
hardware on which these failures can be reproduced, you can send me<br>
the updated patch and I can run a pre-commit for you on ARM.<br>
<br>
Thanks,<br>
Diana<br>
<br>
On 6 July 2017 at 12:47, Max Kazantsev via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: mkazantsev<br>
> Date: Thu Jul  6 03:47:13 2017<br>
> New Revision: 307249<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=307249&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=307249&view=rev</a><br>
> Log:<br>
> Revert "Revert "Revert "[IndVars] Canonicalize comparisons between non-negative values and indvars"""<br>
><br>
> It appears that the problem is still there. Needs more analysis to understand why<br>
> SaturatedMultiply test fails.<br>
><br>
> Removed:<br>
>     llvm/trunk/test/Transforms/IndVarSimplify/canonicalize-cmp.ll<br>
> Modified:<br>
>     llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp<br>
>     llvm/trunk/test/Analysis/ScalarEvolution/guards.ll<br>
>     llvm/trunk/test/Transforms/IndVarSimplify/eliminate-comparison.ll<br>
>     llvm/trunk/test/Transforms/IndVarSimplify/widen-loop-comp.ll<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp?rev=307249&r1=307248&r2=307249&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp?rev=307249&r1=307248&r2=307249&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp Thu Jul  6 03:47:13 2017<br>
> @@ -264,10 +264,6 @@ void SimplifyIndvar::eliminateIVComparis<br>
>      ICmp->setPredicate(InvariantPredicate);<br>
>      ICmp->setOperand(0, NewLHS);<br>
>      ICmp->setOperand(1, NewRHS);<br>
> -  } else if (ICmpInst::isSigned(Pred) &&<br>
> -             SE->isKnownNonNegative(S) && SE->isKnownNonNegative(X)) {<br>
> -    DEBUG(dbgs() << "INDVARS: Turn to unsigned comparison: " << *ICmp << '\n');<br>
> -    ICmp->setPredicate(ICmpInst::getUnsignedPredicate(Pred));<br>
>    } else<br>
>      return;<br>
><br>
><br>
> Modified: llvm/trunk/test/Analysis/ScalarEvolution/guards.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/guards.ll?rev=307249&r1=307248&r2=307249&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/guards.ll?rev=307249&r1=307248&r2=307249&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Analysis/ScalarEvolution/guards.ll (original)<br>
> +++ llvm/trunk/test/Analysis/ScalarEvolution/guards.ll Thu Jul  6 03:47:13 2017<br>
> @@ -19,7 +19,7 @@ entry:<br>
>  loop:<br>
>  ; CHECK: loop:<br>
>  ; CHECK:  call void (i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ]<br>
> -; CHECK:  %iv.inc.cmp = icmp ult i32 %iv.inc, %len<br>
> +; CHECK:  %iv.inc.cmp = icmp slt i32 %iv.inc, %len<br>
>  ; CHECK:  call void (i1, ...) @llvm.experimental.guard(i1 %iv.inc.cmp) [ "deopt"() ]<br>
>  ; CHECK: leave:<br>
><br>
> @@ -41,7 +41,7 @@ leave:<br>
><br>
>  define void @test_2(i32 %n, i32* %len_buf) {<br>
>  ; CHECK-LABEL: @test_2(<br>
> -; CHECK:  [[LEN_ZEXT:%[^ ]+]] = zext i32 %len to i64<br>
> +; CHECK:  [[LEN_SEXT:%[^ ]+]] = sext i32 %len to i64<br>
>  ; CHECK:  br label %loop<br>
><br>
>  entry:<br>
> @@ -52,7 +52,7 @@ loop:<br>
>  ; CHECK: loop:<br>
>  ; CHECK:  %indvars.iv = phi i64 [ %indvars.iv.next, %loop ], [ 0, %entry ]<br>
>  ; CHECK:  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1<br>
> -; CHECK:  %iv.inc.cmp = icmp ult i64 %indvars.iv.next, [[LEN_ZEXT]]<br>
> +; CHECK:  %iv.inc.cmp = icmp slt i64 %indvars.iv.next, [[LEN_SEXT]]<br>
>  ; CHECK:  call void (i1, ...) @llvm.experimental.guard(i1 %iv.inc.cmp) [ "deopt"() ]<br>
>  ; CHECK: leave:<br>
><br>
><br>
> Removed: llvm/trunk/test/Transforms/IndVarSimplify/canonicalize-cmp.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/canonicalize-cmp.ll?rev=307248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/canonicalize-cmp.ll?rev=307248&view=auto</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/IndVarSimplify/canonicalize-cmp.ll (original)<br>
> +++ llvm/trunk/test/Transforms/IndVarSimplify/canonicalize-cmp.ll (removed)<br>
> @@ -1,52 +0,0 @@<br>
> -; RUN: opt -S -indvars < %s | FileCheck %s<br>
> -<br>
> -; Check that we replace signed comparisons between non-negative values with<br>
> -; unsigned comparisons if we can.<br>
> -<br>
> -target datalayout = "n8:16:32:64"<br>
> -<br>
> -define i32 @test_01(i32 %a, i32 %b, i32* %p) {<br>
> -<br>
> -; CHECK-LABEL: @test_01(<br>
> -; CHECK-NOT:   icmp slt<br>
> -; CHECK:       %cmp1 = icmp ult i32 %iv, 100<br>
> -; CHECK:       %cmp2 = icmp ult i32 %iv, 100<br>
> -; CHECK-NOT:   %cmp3<br>
> -; CHECK:       %exitcond = icmp ne i32 %iv.next, 1000<br>
> -<br>
> -entry:<br>
> -  br label %loop.entry<br>
> -<br>
> -loop.entry:<br>
> -  %iv = phi i32 [ 0, %entry ], [ %iv.next, %<a href="http://loop.be" rel="noreferrer" target="_blank">loop.be</a> ]<br>
> -  %cmp1 = icmp slt i32 %iv, 100<br>
> -  br i1 %cmp1, label %b1, label %b2<br>
> -<br>
> -b1:<br>
> -  store i32 %iv, i32* %p<br>
> -  br label %merge<br>
> -<br>
> -b2:<br>
> -  store i32 %a, i32* %p<br>
> -  br label %merge<br>
> -<br>
> -merge:<br>
> -  %cmp2 = icmp ult i32 %iv, 100<br>
> -  br i1 %cmp2, label %b3, label %b4<br>
> -<br>
> -b3:<br>
> -  store i32 %iv, i32* %p<br>
> -  br label %<a href="http://loop.be" rel="noreferrer" target="_blank">loop.be</a><br>
> -<br>
> -b4:<br>
> -  store i32 %b, i32* %p<br>
> -  br label %<a href="http://loop.be" rel="noreferrer" target="_blank">loop.be</a><br>
> -<br>
> -<a href="http://loop.be" rel="noreferrer" target="_blank">loop.be</a>:<br>
> -  %iv.next = add i32 %iv, 1<br>
> -  %cmp3 = icmp slt i32 %iv.next, 1000<br>
> -  br i1 %cmp3, label %loop.entry, label %exit<br>
> -<br>
> -exit:<br>
> -  ret i32 %iv<br>
> -}<br>
><br>
> Modified: llvm/trunk/test/Transforms/IndVarSimplify/eliminate-comparison.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/eliminate-comparison.ll?rev=307249&r1=307248&r2=307249&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/eliminate-comparison.ll?rev=307249&r1=307248&r2=307249&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/IndVarSimplify/eliminate-comparison.ll (original)<br>
> +++ llvm/trunk/test/Transforms/IndVarSimplify/eliminate-comparison.ll Thu Jul  6 03:47:13 2017<br>
> @@ -111,7 +111,7 @@ return:<br>
>  ; Indvars should not turn the second loop into an infinite one.<br>
><br>
>  ; CHECK-LABEL: @func_11(<br>
> -; CHECK: %tmp5 = icmp ult i32 %__key6.0, 10<br>
> +; CHECK: %tmp5 = icmp slt i32 %__key6.0, 10<br>
>  ; CHECK-NOT: br i1 true, label %noassert68, label %unrolledend<br>
><br>
>  define i32 @func_11() nounwind uwtable {<br>
> @@ -163,7 +163,7 @@ declare void @llvm.trap() noreturn nounw<br>
><br>
>  ; In this case the second loop only has a single iteration, fold the header away<br>
>  ; CHECK-LABEL: @func_12(<br>
> -; CHECK: %tmp5 = icmp ult i32 %__key6.0, 10<br>
> +; CHECK: %tmp5 = icmp slt i32 %__key6.0, 10<br>
>  ; CHECK: br i1 true, label %noassert68, label %unrolledend<br>
>  define i32 @func_12() nounwind uwtable {<br>
>  entry:<br>
><br>
> Modified: llvm/trunk/test/Transforms/IndVarSimplify/widen-loop-comp.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/widen-loop-comp.ll?rev=307249&r1=307248&r2=307249&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/widen-loop-comp.ll?rev=307249&r1=307248&r2=307249&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/IndVarSimplify/widen-loop-comp.ll (original)<br>
> +++ llvm/trunk/test/Transforms/IndVarSimplify/widen-loop-comp.ll Thu Jul  6 03:47:13 2017<br>
> @@ -64,7 +64,7 @@ for.end:<br>
>  ; CHECK-LABEL: @test2<br>
>  ; CHECK: <a href="http://for.body4.us" rel="noreferrer" target="_blank">for.body4.us</a><br>
>  ; CHECK: %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1<br>
> -; CHECK: %<a href="http://cmp2.us" rel="noreferrer" target="_blank">cmp2.us</a> = icmp ult i64<br>
> +; CHECK: %<a href="http://cmp2.us" rel="noreferrer" target="_blank">cmp2.us</a> = icmp slt i64<br>
>  ; CHECK-NOT: %2 = trunc i64 %indvars.iv.next to i32<br>
>  ; CHECK-NOT: %<a href="http://cmp2.us" rel="noreferrer" target="_blank">cmp2.us</a> = icmp slt i32<br>
><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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/mailman/listinfo/llvm-commits</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>