annotate llvm/test/Transforms/GlobalOpt/heap-sra-3.ll @ 201:a96fbbdf2d0f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Jun 2021 21:07:06 +0900
parents 0572611fdcc8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ; RUN: opt < %s -globalopt -S | FileCheck %s
anatofuz
parents:
diff changeset
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"
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 %struct.foo = type { i32, i32 }
anatofuz
parents:
diff changeset
5 @X = internal global %struct.foo* null
anatofuz
parents:
diff changeset
6 ; CHECK: @X.f0
anatofuz
parents:
diff changeset
7 ; CHECK: @X.f1
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 define void @bar(i64 %Size) nounwind noinline {
anatofuz
parents:
diff changeset
10 entry:
anatofuz
parents:
diff changeset
11 %mallocsize = mul i64 8, %Size ; <i64> [#uses=1]
anatofuz
parents:
diff changeset
12 ; CHECK: mul i64 %Size, 4
anatofuz
parents:
diff changeset
13 %malloccall = tail call i8* @malloc(i64 %mallocsize) ; <i8*> [#uses=1]
anatofuz
parents:
diff changeset
14 %.sub = bitcast i8* %malloccall to %struct.foo* ; <%struct.foo*> [#uses=1]
anatofuz
parents:
diff changeset
15 store %struct.foo* %.sub, %struct.foo** @X, align 4
anatofuz
parents:
diff changeset
16 ret void
anatofuz
parents:
diff changeset
17 }
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 declare noalias i8* @malloc(i64)
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 define i32 @baz() nounwind readonly noinline {
anatofuz
parents:
diff changeset
22 bb1.thread:
anatofuz
parents:
diff changeset
23 %0 = load %struct.foo*, %struct.foo** @X, align 4
anatofuz
parents:
diff changeset
24 br label %bb1
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 bb1: ; preds = %bb1, %bb1.thread
anatofuz
parents:
diff changeset
27 %i.0.reg2mem.0 = phi i32 [ 0, %bb1.thread ], [ %indvar.next, %bb1 ]
anatofuz
parents:
diff changeset
28 %sum.0.reg2mem.0 = phi i32 [ 0, %bb1.thread ], [ %3, %bb1 ]
anatofuz
parents:
diff changeset
29 %1 = getelementptr %struct.foo, %struct.foo* %0, i32 %i.0.reg2mem.0, i32 0
anatofuz
parents:
diff changeset
30 %2 = load i32, i32* %1, align 4
anatofuz
parents:
diff changeset
31 %3 = add i32 %2, %sum.0.reg2mem.0
anatofuz
parents:
diff changeset
32 %indvar.next = add i32 %i.0.reg2mem.0, 1
anatofuz
parents:
diff changeset
33 %exitcond = icmp eq i32 %indvar.next, 1200
anatofuz
parents:
diff changeset
34 br i1 %exitcond, label %bb2, label %bb1
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 bb2: ; preds = %bb1
anatofuz
parents:
diff changeset
37 ret i32 %3
anatofuz
parents:
diff changeset
38 }
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 define void @bam(i64 %Size) nounwind noinline #0 {
anatofuz
parents:
diff changeset
41 entry:
anatofuz
parents:
diff changeset
42 %0 = load %struct.foo*, %struct.foo** @X, align 4
anatofuz
parents:
diff changeset
43 ret void
anatofuz
parents:
diff changeset
44 }
anatofuz
parents:
diff changeset
45
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
46 attributes #0 = { null_pointer_is_valid }