[llvm-commits] [llvm] r127465 - in /llvm/trunk: lib/Analysis/ValueTracking.cpp test/Transforms/InstCombine/sext.ll

Nick Lewycky nicholas at mxc.ca
Fri Mar 11 23:56:08 PST 2011


On 03/11/2011 06:46 AM, Benjamin Kramer wrote:
> Author: d0k
> Date: Fri Mar 11 08:46:49 2011
> New Revision: 127465
>
> URL: http://llvm.org/viewvc/llvm-project?rev=127465&view=rev
> Log:
> ComputeMaskedBits: sub falls through to add, and sub doesn't have the same overflow semantics as add.
>
> Should fix the selfhost failures that started with r127463.

Arg. Thanks Benjamin!!

Nick

>
> Modified:
>      llvm/trunk/lib/Analysis/ValueTracking.cpp
>      llvm/trunk/test/Transforms/InstCombine/sext.ll
>
> Modified: llvm/trunk/lib/Analysis/ValueTracking.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ValueTracking.cpp?rev=127465&r1=127464&r2=127465&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/ValueTracking.cpp (original)
> +++ llvm/trunk/lib/Analysis/ValueTracking.cpp Fri Mar 11 08:46:49 2011
> @@ -431,7 +431,8 @@
>       }
>
>       // Are we still trying to solve for the sign bit?
> -    if (Mask.isNegative()&&  !KnownZero.isNegative()&&  !KnownOne.isNegative()){
> +    if (I->getOpcode() == Instruction::Add&&
> +        Mask.isNegative()&&  !KnownZero.isNegative()&&  !KnownOne.isNegative()){
>         OverflowingBinaryOperator *OBO = cast<OverflowingBinaryOperator>(I);
>         if (OBO->hasNoSignedWrap()) {
>           // Adding two positive numbers can't wrap into negative ...
>
> Modified: llvm/trunk/test/Transforms/InstCombine/sext.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/sext.ll?rev=127465&r1=127464&r2=127465&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/sext.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/sext.ll Fri Mar 11 08:46:49 2011
> @@ -126,3 +126,13 @@
>   ; CHECK-NEXT: store<2 x i16>
>   ; CHECK-NEXT: ret
>   }
> +
> +define i64 @test12(i32 %x) nounwind {
> +  %shr = lshr i32 %x, 1
> +  %sub = sub nsw i32 0, %shr
> +  %conv = sext i32 %sub to i64
> +  ret i64 %conv
> +; CHECK: @test12
> +; CHECK: sext
> +; CHECK: ret
> +}
>
>
> _______________________________________________
> 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