[llvm-commits] [llvm] r43893 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll

Chris Lattner clattner at apple.com
Thu Nov 8 09:47:18 PST 2007


On Nov 8, 2007, at 9:39 AM, Andrew Lenharth wrote:
> Author: alenhar2
> Date: Thu Nov  8 11:39:28 2007
> New Revision: 43893
> URL: http://llvm.org/viewvc/llvm-project?rev=43893&view=rev
> Log:
> Fix PR1780

Nice, thanks Andrew!

It would be slightly more robust to check for Ty->isSized()  instead  
of checking for opaquetype specifically.  This fixes the theoretical  
case of things like {opaque, int}.

Thanks for tackling this!

-Chris

> Added:
>     llvm/trunk/test/Transforms/InstCombine/2007-11-07- 
> OpaqueAlignCrash.ll
> Modified:
>     llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
>
> Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/ 
> Scalar/InstructionCombining.cpp?rev=43893&r1=43892&r2=43893&view=diff
>
> ====================================================================== 
> ========
> --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp  
> (original)
> +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Thu  
> Nov  8 11:39:28 2007
> @@ -7582,7 +7582,7 @@
>                                             unsigned PrefAlign = 0) {
>    if (GlobalVariable *GV = dyn_cast<GlobalVariable>(V)) {
>      unsigned Align = GV->getAlignment();
> -    if (Align == 0 && TD)
> +    if (Align == 0 && TD && !isa<OpaqueType>(GV->getType()- 
> >getElementType()))
>        Align = TD->getPrefTypeAlignment(GV->getType()- 
> >getElementType());
>
>      // If there is a large requested alignment and we can, bump up  
> the alignment
>
> Added: llvm/trunk/test/Transforms/InstCombine/2007-11-07- 
> OpaqueAlignCrash.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ 
> InstCombine/2007-11-07-OpaqueAlignCrash.ll?rev=43893&view=auto
>
> ====================================================================== 
> ========
> --- llvm/trunk/test/Transforms/InstCombine/2007-11-07- 
> OpaqueAlignCrash.ll (added)
> +++ llvm/trunk/test/Transforms/InstCombine/2007-11-07- 
> OpaqueAlignCrash.ll Thu Nov  8 11:39:28 2007
> @@ -0,0 +1,19 @@
> +; RUN: llvm-as < %s | opt -instcombine -disable-output
> +; PR1780
> +
> +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16- 
> i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128- 
> a0:0:64-f80:32:32"
> +target triple = "i686-pc-linux-gnu"
> +
> +%opaque_t = type opaque
> +
> + at g = external global %opaque_t
> +
> +define i32 @foo() {
> +entry:
> +        %x = load i8* bitcast (%opaque_t* @g to i8*)
> +        %y = load i32* bitcast (%opaque_t* @g to i32*)
> +	%z = zext i8 %x to i32
> +	%r = add i32 %y, %z
> +        ret i32 %r
> +}
> +
>
>
> _______________________________________________
> 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