[llvm-commits] [llvm] r130206 - in /llvm/trunk: lib/Transforms/Scalar/GVN.cpp test/Transforms/GVN/rle.ll test/Transforms/SimplifyCFG/2006-08-03-Crash.ll

Roman Divacky rdivacky at freebsd.org
Tue Apr 26 12:14:01 PDT 2011


this is causing some strange regressions here (with greedy regalloc but
otherwise vanilla llvm):

before:

cmpb    $69, 41(%esp)

after:

movl    %eax, %ecx
movb    %ch, %cl
cmpb    $69, %cl

and some more

you can get the before/after asm files at:

http://lev.vlakno.cz/~rdivacky/boot2.after.s
http://lev.vlakno.cz/~rdivacky/boot2.before.s

On Tue, Apr 26, 2011 at 05:41:02PM -0000, Chris Lattner wrote:
> Author: lattner
> Date: Tue Apr 26 12:41:02 2011
> New Revision: 130206
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=130206&view=rev
> Log:
> Improve the bail-out predicate to really only kick in when phi
> translation fails.  We were bailing out in some cases that would
> cause us to miss GVN'ing some non-local cases away.
> 
> Modified:
>     llvm/trunk/lib/Transforms/Scalar/GVN.cpp
>     llvm/trunk/test/Transforms/GVN/rle.ll
>     llvm/trunk/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll
> 
> Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=130206&r1=130205&r2=130206&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Tue Apr 26 12:41:02 2011
> @@ -1103,7 +1103,8 @@
>  
>    // If we had a phi translation failure, we'll have a single entry which is a
>    // clobber in the current block.  Reject this early.
> -  if (Deps.size() == 1 && Deps[0].getResult().isClobber()) {
> +  if (Deps.size() == 1 && Deps[0].getResult().isClobber() &&
> +      Deps[0].getResult().getInst()->getParent() == LI->getParent()) {
>      DEBUG(
>        dbgs() << "GVN: non-local load ";
>        WriteAsOperand(dbgs(), LI);
> 
> Modified: llvm/trunk/test/Transforms/GVN/rle.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/rle.ll?rev=130206&r1=130205&r2=130206&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GVN/rle.ll (original)
> +++ llvm/trunk/test/Transforms/GVN/rle.ll Tue Apr 26 12:41:02 2011
> @@ -570,4 +570,27 @@
>  }
>  
>  
> +; Cross block partial alias case.
> +define i32 @load_load_partial_alias_cross_block(i8* %P) nounwind ssp {
> +entry:
> +  %xx = bitcast i8* %P to i32*
> +  %x1 = load i32* %xx, align 4
> +  %cmp = icmp eq i32 %x1, 127
> +  br i1 %cmp, label %land.lhs.true, label %if.end
> +
> +land.lhs.true:                                    ; preds = %entry
> +  %arrayidx4 = getelementptr inbounds i8* %P, i64 1
> +  %tmp5 = load i8* %arrayidx4, align 1
> +  %conv6 = zext i8 %tmp5 to i32
> +  ret i32 %conv6
> +
> +if.end:
> +  ret i32 52
> +; CHECK: @load_load_partial_alias_cross_block
> +; CHECK: land.lhs.true:
> +; CHECK-NOT: load i8
> +; CHECK: ret i32 %conv6
> +}
> +
> +
>  
> 
> Modified: llvm/trunk/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll?rev=130206&r1=130205&r2=130206&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll (original)
> +++ llvm/trunk/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll Tue Apr 26 12:41:02 2011
> @@ -1,7 +1,5 @@
> -; RUN: opt < %s -gvn -simplifycfg \
> -; RUN:   -disable-output
> +; RUN: opt < %s -gvn -simplifycfg -disable-output
>  ; PR867
> -; END.
>  
>  target datalayout = "E-p:32:32"
>  target triple = "powerpc-apple-darwin8"
> 
> 
> _______________________________________________
> 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