[llvm-commits] [llvm] r46959 - in /llvm/trunk: lib/Analysis/ScalarEvolution.cpp test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll
Evan Cheng
evan.cheng at apple.com
Sun Feb 24 11:54:04 PST 2008
Hi,
I'm going to have to back out this patch temporarily. This is causing
performance regression in an important benchmark. I don't think this
patch is really at fault. But I need time to investigate.
Thanks,
Evan
On Feb 11, 2008, at 10:37 AM, Wojciech Matyjewicz wrote:
> Author: wmat
> Date: Mon Feb 11 12:37:34 2008
> New Revision: 46959
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46959&view=rev
> Log:
> If the LHS of the comparison is a loop-invariant we also want to
> move it
> to the RHS. This simple change allows to compute loop iteration count
> for loops with condition similar to the one in the testcase (which
> seems
> to be quite common).
>
> Added:
> llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-
> ReversedCondition.ll
> Modified:
> llvm/trunk/lib/Analysis/ScalarEvolution.cpp
>
> Modified: llvm/trunk/lib/Analysis/ScalarEvolution.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolution.cpp?rev=46959&r1=46958&r2=46959&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Analysis/ScalarEvolution.cpp (original)
> +++ llvm/trunk/lib/Analysis/ScalarEvolution.cpp Mon Feb 11 12:37:34
> 2008
> @@ -1819,8 +1819,8 @@
>
> // At this point, we would like to compute how many iterations of
> the
> // loop the predicate will return true for these inputs.
> - if (isa<SCEVConstant>(LHS) && !isa<SCEVConstant>(RHS)) {
> - // If there is a constant, force it into the RHS.
> + if (LHS->isLoopInvariant(L) && !RHS->isLoopInvariant(L)) {
> + // If there is a loop-invariant, force it into the RHS.
> std::swap(LHS, RHS);
> Cond = ICmpInst::getSwappedPredicate(Cond);
> }
>
> Added: llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-
> ReversedCondition.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll?rev=46959&view=auto
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-
> ReversedCondition.ll (added)
> +++ llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-
> ReversedCondition.ll Mon Feb 11 12:37:34 2008
> @@ -0,0 +1,15 @@
> +; RUN: llvm-as < %s | opt -scalar-evolution -analyze | not grep
> Unpredictable
> +
> +define void @foo(i32 %n) {
> +entry:
> + br label %header
> +header:
> + %i = phi i32 [ 0, %entry ], [ %i.inc, %next ]
> + %cond = icmp sgt i32 %n, %i
> + br i1 %cond, label %next, label %return
> +next:
> + %i.inc = add i32 %i, 1
> + br label %header
> +return:
> + ret void
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list