[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