summaryrefslogtreecommitdiff
path: root/test/Analysis/BasicAA/phi-aa.ll
blob: a3e89e963c00df4697d888510187c031b4a67c26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
; RUN: opt < %s -basicaa -licm -S | FileCheck %s
; rdar://7282591

%struct.CFRuntimeBase = type { i32, [4 x i8] }
%struct.XXXAffineTransform = type { float, float, float, float, float, float }
%struct.XXXContext = type { %struct.CFRuntimeBase, i32, i32, i32, i8*, %struct.XXXContextDelegate*, void (%struct.XXXContext*)*, void (%struct.XXXContext*)*, %struct.XXXImage* (%struct.XXXContext*, %struct.XXXRect*, %struct.XXXImage*, i8*)*, i8*, %struct.__CFDictionary*, i32, %struct.XXXGState*, %struct.XXXGStack*, %struct.XXXRenderingState*, %struct.XXXAffineTransform, %struct.XXXPath*, %struct.__CFDictionary*, %struct.XXXPixelAccess* }
%struct.XXXContextDelegate = type opaque
%struct.XXXGStack = type opaque
%struct.XXXGState = type opaque
%struct.XXXImage = type opaque
%struct.XXXPath = type opaque
%struct.XXXPixelAccess = type opaque
%struct.XXXPoint = type { float, float }
%struct.XXXRect = type { %struct.XXXPoint, %struct.XXXPoint }
%struct.XXXRenderingState = type opaque
%struct.__CFDictionary = type opaque

define void @t(%struct.XXXContext* %context, i16* %glyphs, %struct.XXXPoint* %advances, i32 %count) nounwind optsize ssp {
; CHECK: @t
; CHECK: bb21.preheader:
; CHECK: %tmp28 = getelementptr
; CHECK: %tmp28.promoted = load
entry:
  br i1 undef, label %bb1, label %bb

bb:                                               ; preds = %entry
  br i1 undef, label %bb2, label %bb1

bb1:                                              ; preds = %bb, %entry
  ret void

bb2:                                              ; preds = %bb
  br i1 undef, label %bb35, label %bb7

bb7:                                              ; preds = %bb2
  br i1 undef, label %bb35, label %bb10

bb10:                                             ; preds = %bb7
  %tmp18 = alloca i8, i32 undef, align 1          ; <i8*> [#uses=1]
  br i1 undef, label %bb35, label %bb15

bb15:                                             ; preds = %bb10
  br i1 undef, label %bb17, label %bb16

bb16:                                             ; preds = %bb15
  %tmp21 = bitcast i8* %tmp18 to %struct.XXXPoint* ; <%struct.XXXPoint*> [#uses=1]
  br label %bb18

bb17:                                             ; preds = %bb15
  %tmp22 = malloc %struct.XXXPoint, i32 %count     ; <%struct.XXXPoint*> [#uses=1]
  br label %bb18

bb18:                                             ; preds = %bb17, %bb16
  %positions.0 = phi %struct.XXXPoint* [ %tmp21, %bb16 ], [ %tmp22, %bb17 ] ; <%struct.XXXPoint*> [#uses=1]
  br i1 undef, label %bb35, label %bb20

bb20:                                             ; preds = %bb18
  br i1 undef, label %bb21, label %bb25

bb21:                                             ; preds = %bb21, %bb20
  %tmp28 = getelementptr inbounds %struct.XXXPoint* %positions.0, i32 undef, i32 0 ; <float*> [#uses=1]
  store float undef, float* %tmp28, align 4
  %elt22 = getelementptr inbounds %struct.XXXPoint* %advances, i32 undef, i32 1 ; <float*> [#uses=1]
  %val23 = load float* %elt22                     ; <float> [#uses=0]
  br i1 undef, label %bb21, label %bb25

bb25:                                             ; preds = %bb21, %bb20
  switch i32 undef, label %bb26 [
    i32 4, label %bb27
    i32 5, label %bb27
    i32 6, label %bb27
    i32 7, label %bb28
  ]

bb26:                                             ; preds = %bb25
  unreachable

bb27:                                             ; preds = %bb25, %bb25, %bb25
  unreachable

bb28:                                             ; preds = %bb25
  unreachable

bb35:                                             ; preds = %bb18, %bb10, %bb7, %bb2
  ret void
}