[llvm] r180779 - Fix a bug in foldSelectICmpAndOr.

Benjamin Kramer benny.kra at gmail.com
Tue Apr 30 04:31:14 PDT 2013


On 30.04.2013, at 12:36, David Majnemer <david.majnemer at gmail.com> wrote:

> Author: majnemer
> Date: Tue Apr 30 05:36:33 2013
> New Revision: 180779
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=180779&view=rev
> Log:
> Fix a bug in foldSelectICmpAndOr.
> 
> Differences in bitwidth between X and Y could exist even if C1 and C2 have
> the same Log2 representation.

test case?

- Ben
> 
> Modified:
>    llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
> 
> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp?rev=180779&r1=180778&r2=180779&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp (original)
> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp Tue Apr 30 05:36:33 2013
> @@ -401,7 +401,8 @@ static Value *foldSelectICmpAndOr(const
>   } else if (C1Log > C2Log) {
>     V = Builder->CreateLShr(V, C1Log - C2Log);
>     V = Builder->CreateZExtOrTrunc(V, Y->getType());
> -  }
> +  } else
> +    V = Builder->CreateZExtOrTrunc(V, Y->getType());
> 
>   ICmpInst::Predicate Pred = IC->getPredicate();
>   if ((Pred == ICmpInst::ICMP_NE && OrOnFalseVal) ||
> 
> 
> _______________________________________________
> 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