aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/PowerPC/2009-11-15-ReMatBug.ll
blob: 54f4b2ef689336425f3e20cc2c3c643e1202037c (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
; RUN: llc < %s -mtriple=powerpc-apple-darwin8

%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
%struct.__gcov_var = type { %struct.FILE*, i32, i32, i32, i32, i32, i32, [1025 x i32] }
%struct.__sFILEX = type opaque
%struct.__sbuf = type { i8*, i32 }
%struct.gcov_ctr_info = type { i32, i64*, void (i64*, i32)* }
%struct.gcov_ctr_summary = type { i32, i32, i64, i64, i64 }
%struct.gcov_fn_info = type { i32, i32, [0 x i32] }
%struct.gcov_info = type { i32, %struct.gcov_info*, i32, i8*, i32, %struct.gcov_fn_info*, i32, [0 x %struct.gcov_ctr_info] }
%struct.gcov_summary = type { i32, [1 x %struct.gcov_ctr_summary] }

@__gcov_var = external global %struct.__gcov_var  ; <%struct.__gcov_var*> [#uses=1]
@__sF = external global [0 x %struct.FILE]        ; <[0 x %struct.FILE]*> [#uses=1]
@.str = external constant [56 x i8], align 4      ; <[56 x i8]*> [#uses=1]
@gcov_list = external global %struct.gcov_info*   ; <%struct.gcov_info**> [#uses=1]
@.str7 = external constant [35 x i8], align 4     ; <[35 x i8]*> [#uses=1]
@.str8 = external constant [9 x i8], align 4      ; <[9 x i8]*> [#uses=1]
@.str9 = external constant [10 x i8], align 4     ; <[10 x i8]*> [#uses=1]
@.str10 = external constant [36 x i8], align 4    ; <[36 x i8]*> [#uses=1]

declare i32 @"\01_fprintf$LDBL128"(%struct.FILE*, i8*, ...) nounwind

define void @gcov_exit() nounwind {
entry:
  %gi_ptr.0357 = load %struct.gcov_info** @gcov_list, align 4 ; <%struct.gcov_info*> [#uses=1]
  %0 = alloca i8, i32 undef, align 1              ; <i8*> [#uses=3]
  br i1 undef, label %return, label %bb.nph341

bb.nph341:                                        ; preds = %entry
  %object27 = bitcast %struct.gcov_summary* undef to i8* ; <i8*> [#uses=1]
  br label %bb25

bb25:                                             ; preds = %read_fatal, %bb.nph341
  %gi_ptr.1329 = phi %struct.gcov_info* [ %gi_ptr.0357, %bb.nph341 ], [ undef, %read_fatal ] ; <%struct.gcov_info*> [#uses=1]
  call void @llvm.memset.i32(i8* %object27, i8 0, i32 36, i32 8)
  br i1 undef, label %bb49.1, label %bb48

bb48:                                             ; preds = %bb25
  br label %bb49.1

bb51:                                             ; preds = %bb48.4, %bb49.3
  switch i32 undef, label %bb58 [
    i32 0, label %rewrite
    i32 1734567009, label %bb59
  ]

bb58:                                             ; preds = %bb51
  %1 = call i32 (%struct.FILE*, i8*, ...)* @"\01_fprintf$LDBL128"(%struct.FILE* getelementptr inbounds ([0 x %struct.FILE]* @__sF, i32 0, i32 2), i8* getelementptr inbounds ([35 x i8]* @.str7, i32 0, i32 0), i8* %0) nounwind ; <i32> [#uses=0]
  br label %read_fatal

bb59:                                             ; preds = %bb51
  br i1 undef, label %bb60, label %bb3.i156

bb3.i156:                                         ; preds = %bb59
  store i8 52, i8* undef, align 1
  store i8 42, i8* undef, align 1
  %2 = call i32 (%struct.FILE*, i8*, ...)* @"\01_fprintf$LDBL128"(%struct.FILE* getelementptr inbounds ([0 x %struct.FILE]* @__sF, i32 0, i32 2), i8* getelementptr inbounds ([56 x i8]* @.str, i32 0, i32 0), i8* %0, i8* undef, i8* undef) nounwind ; <i32> [#uses=0]
  br label %read_fatal

bb60:                                             ; preds = %bb59
  br i1 undef, label %bb78.preheader, label %rewrite

bb78.preheader:                                   ; preds = %bb60
  br i1 undef, label %bb62, label %bb80

bb62:                                             ; preds = %bb78.preheader
  br i1 undef, label %bb64, label %read_mismatch

bb64:                                             ; preds = %bb62
  br i1 undef, label %bb65, label %read_mismatch

bb65:                                             ; preds = %bb64
  br i1 undef, label %bb75, label %read_mismatch

read_mismatch:                                    ; preds = %bb98, %bb119.preheader, %bb72, %bb71, %bb65, %bb64, %bb62
  %3 = icmp eq i32 undef, -1                      ; <i1> [#uses=1]
  %iftmp.11.0 = select i1 %3, i8* getelementptr inbounds ([10 x i8]* @.str9, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str8, i32 0, i32 0) ; <i8*> [#uses=1]
  %4 = call i32 (%struct.FILE*, i8*, ...)* @"\01_fprintf$LDBL128"(%struct.FILE* getelementptr inbounds ([0 x %struct.FILE]* @__sF, i32 0, i32 2), i8* getelementptr inbounds ([36 x i8]* @.str10, i32 0, i32 0), i8* %0, i8* %iftmp.11.0) nounwind ; <i32> [#uses=0]
  br label %read_fatal

bb71:                                             ; preds = %bb75
  %5 = load i32* undef, align 4                   ; <i32> [#uses=1]
  %6 = getelementptr inbounds %struct.gcov_info* %gi_ptr.1329, i32 0, i32 7, i32 undef, i32 2 ; <void (i64*, i32)**> [#uses=1]
  %7 = load void (i64*, i32)** %6, align 4        ; <void (i64*, i32)*> [#uses=1]
  %8 = call i32 @__gcov_read_unsigned() nounwind  ; <i32> [#uses=1]
  %9 = call i32 @__gcov_read_unsigned() nounwind  ; <i32> [#uses=1]
  %10 = icmp eq i32 %tmp386, %8                   ; <i1> [#uses=1]
  br i1 %10, label %bb72, label %read_mismatch

bb72:                                             ; preds = %bb71
  %11 = icmp eq i32 undef, %9                     ; <i1> [#uses=1]
  br i1 %11, label %bb73, label %read_mismatch

bb73:                                             ; preds = %bb72
  call void %7(i64* null, i32 %5) nounwind
  unreachable

bb74:                                             ; preds = %bb75
  %12 = add i32 %13, 1                            ; <i32> [#uses=1]
  br label %bb75

bb75:                                             ; preds = %bb74, %bb65
  %13 = phi i32 [ %12, %bb74 ], [ 0, %bb65 ]      ; <i32> [#uses=2]
  %tmp386 = add i32 0, 27328512                   ; <i32> [#uses=1]
  %14 = shl i32 1, %13                            ; <i32> [#uses=1]
  %15 = load i32* undef, align 4                  ; <i32> [#uses=1]
  %16 = and i32 %15, %14                          ; <i32> [#uses=1]
  %17 = icmp eq i32 %16, 0                        ; <i1> [#uses=1]
  br i1 %17, label %bb74, label %bb71

bb80:                                             ; preds = %bb78.preheader
  unreachable

read_fatal:                                       ; preds = %read_mismatch, %bb3.i156, %bb58
  br i1 undef, label %return, label %bb25

rewrite:                                          ; preds = %bb60, %bb51
  store i32 -1, i32* getelementptr inbounds (%struct.__gcov_var* @__gcov_var, i32 0, i32 6), align 4
  br i1 undef, label %bb94, label %bb119.preheader

bb94:                                             ; preds = %rewrite
  unreachable

bb119.preheader:                                  ; preds = %rewrite
  br i1 undef, label %read_mismatch, label %bb98

bb98:                                             ; preds = %bb119.preheader
  br label %read_mismatch

return:                                           ; preds = %read_fatal, %entry
  ret void

bb49.1:                                           ; preds = %bb48, %bb25
  br i1 undef, label %bb49.2, label %bb48.2

bb49.2:                                           ; preds = %bb48.2, %bb49.1
  br i1 undef, label %bb49.3, label %bb48.3

bb48.2:                                           ; preds = %bb49.1
  br label %bb49.2

bb49.3:                                           ; preds = %bb48.3, %bb49.2
  br i1 undef, label %bb51, label %bb48.4

bb48.3:                                           ; preds = %bb49.2
  br label %bb49.3

bb48.4:                                           ; preds = %bb49.3
  br label %bb51
}

declare i32 @__gcov_read_unsigned() nounwind

declare void @llvm.memset.i32(i8* nocapture, i8, i32, i32) nounwind