[llvm-commits] [llvm] r84260 - /llvm/trunk/test/Transforms/GlobalOpt/2009-11-16-MallocSingleStoreToGlobalVar.ll

Victor Hernandez vhernandez at apple.com
Fri Oct 16 11:09:21 PDT 2009


Apologies, this is the commit message for rev 84261.  This is the  
testcase that tests for the bug fixed by rev 84261.

Victor

On Oct 16, 2009, at 11:07 AM, Victor Hernandez wrote:

> Author: hernande
> Date: Fri Oct 16 13:07:17 2009
> New Revision: 84260
>
> URL: http://llvm.org/viewvc/llvm-project?rev=84260&view=rev
> Log:
> Invert isSafeToGetMallocArraySize check because we return NULL when  
> we don't know the size.
>
> Thanks to Duncan Sands for noticing this bug.
>
>
> Added:
>   llvm/trunk/test/Transforms/GlobalOpt/2009-11-16- 
> MallocSingleStoreToGlobalVar.ll
>
> Added: llvm/trunk/test/Transforms/GlobalOpt/2009-11-16- 
> MallocSingleStoreToGlobalVar.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GlobalOpt/2009-11-16-MallocSingleStoreToGlobalVar.ll?rev=84260&view=auto
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/test/Transforms/GlobalOpt/2009-11-16- 
> MallocSingleStoreToGlobalVar.ll (added)
> +++ llvm/trunk/test/Transforms/GlobalOpt/2009-11-16- 
> MallocSingleStoreToGlobalVar.ll Fri Oct 16 13:07:17 2009
> @@ -0,0 +1,30 @@
> +; Test ensures that non-optimizable array mallocs are not  
> optimized; specifically
> +; GlobalOpt was treating a non-optimizable array malloc as a non- 
> array malloc
> +; and optimizing the global object that the malloc was stored to as  
> a single
> +; element global.  The global object @TOP in this test should not  
> be optimized.
> +; RUN: opt < %s -globalopt -S | FileCheck %s
> +
> +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32- 
> i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64- 
> s0:64:64-f80:128:128"
> +target triple = "x86_64-apple-darwin10.0"
> +
> + at TOP = internal global i64* null                    ; <i64**>  
> [#uses=2]
> +; CHECK: @TOP = internal global i64* null
> + at channelColumns = internal global i64 0             ; <i64*>  
> [#uses=2]
> +
> +; Derived from @DescribeChannel() in yacr2
> +define void @test() nounwind ssp {
> +  store i64 2335, i64* @channelColumns, align 8
> +  %1 = load i64* @channelColumns, align 8         ; <i64> [#uses=1]
> +  %2 = shl i64 %1, 3                              ; <i64> [#uses=1]
> +  %3 = add i64 %2, 8                              ; <i64> [#uses=1]
> +  %4 = call noalias i8* @malloc(i64 %3) nounwind  ; <i8*> [#uses=1]
> +; CHECK: call noalias i8* @malloc
> +  %5 = bitcast i8* %4 to i64*                     ; <i64*> [#uses=1]
> +  store i64* %5, i64** @TOP, align 8
> +  %6 = load i64** @TOP, align 8                   ; <i64*> [#uses=1]
> +  %7 = getelementptr inbounds i64* %6, i64 13     ; <i64*> [#uses=1]
> +  store i64 0, i64* %7, align 8
> +  ret void
> +}
> +
> +declare noalias i8* @malloc(i64) nounwind
>
>
> _______________________________________________
> 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