~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Transforms/GlobalOpt/heap-sra-1.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: opt < %s -globalopt -S | FileCheck %s
 
2
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
 
3
 
 
4
        %struct.foo = type { i32, i32 }
 
5
@X = internal global %struct.foo* null
 
6
; CHECK: @X.f0
 
7
; CHECK: @X.f1
 
8
 
 
9
define void @bar(i64 %Size) nounwind noinline {
 
10
entry:
 
11
  %mallocsize = mul i64 %Size, 8                  ; <i64> [#uses=1]
 
12
  %malloccall = tail call i8* @malloc(i64 %mallocsize) ; <i8*> [#uses=1]
 
13
  %.sub = bitcast i8* %malloccall to %struct.foo* ; <%struct.foo*> [#uses=1]
 
14
        store %struct.foo* %.sub, %struct.foo** @X, align 4
 
15
        ret void
 
16
}
 
17
 
 
18
declare noalias i8* @malloc(i64)
 
19
 
 
20
define i32 @baz() nounwind readonly noinline {
 
21
bb1.thread:
 
22
        %0 = load %struct.foo*, %struct.foo** @X, align 4               
 
23
        br label %bb1
 
24
 
 
25
bb1:            ; preds = %bb1, %bb1.thread
 
26
        %i.0.reg2mem.0 = phi i32 [ 0, %bb1.thread ], [ %indvar.next, %bb1 ]
 
27
        %sum.0.reg2mem.0 = phi i32 [ 0, %bb1.thread ], [ %3, %bb1 ]
 
28
        %1 = getelementptr %struct.foo, %struct.foo* %0, i32 %i.0.reg2mem.0, i32 0
 
29
        %2 = load i32, i32* %1, align 4
 
30
        %3 = add i32 %2, %sum.0.reg2mem.0       
 
31
        %indvar.next = add i32 %i.0.reg2mem.0, 1        
 
32
        %exitcond = icmp eq i32 %indvar.next, 1200              
 
33
        br i1 %exitcond, label %bb2, label %bb1
 
34
 
 
35
bb2:            ; preds = %bb1
 
36
        ret i32 %3
 
37
}
 
38