aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll
blob: 378d7e73b00d62155a5ab005e1c0ef600b68c5b7 (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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
; RUN: opt < %s -gvn -enable-load-pre -disable-output

	%struct.VEC_rtx_base = type { i32, i32, [1 x %struct.rtx_def*] }
	%struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }
	%struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], %struct.object_block*, i64 }
	%struct.cgraph_rtl_info = type { i32 }
	%struct.object_block = type { %struct.section*, i32, i64, %struct.VEC_rtx_gc*, %struct.VEC_rtx_gc* }
	%struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
	%struct.rtx_def = type { i16, i8, i8, %struct.u }
	%struct.section = type { %struct.unnamed_section }
	%struct.u = type { %struct.block_symbol }
	%struct.unnamed_section = type { %struct.cgraph_rtl_info, void (i8*)*, i8*, %struct.section* }

declare %struct.rtvec_def* @gen_rtvec(i32, ...)

declare %struct.rtx_def* @plus_constant(%struct.rtx_def*, i64)

declare %struct.rtx_def* @gen_rtx_fmt_Ei(i32, i32, %struct.rtvec_def*, i32)

declare i32 @local_symbolic_operand(%struct.rtx_def*, i32)

define %struct.rtx_def* @legitimize_pic_address(%struct.rtx_def* %orig, %struct.rtx_def* %reg) nounwind {
entry:
	%addr = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=5]
	%iftmp.1532 = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=3]
	store %struct.rtx_def* %orig, %struct.rtx_def** null
	%0 = load %struct.rtx_def*, %struct.rtx_def** null, align 4		; <%struct.rtx_def*> [#uses=0]
	br i1 false, label %bb96, label %bb59

bb59:		; preds = %entry
	%1 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
	%2 = call i32 @local_symbolic_operand(%struct.rtx_def* %1, i32 0) nounwind		; <i32> [#uses=0]
	br i1 false, label %bb96, label %bb63

bb63:		; preds = %bb59
	br i1 false, label %bb64, label %bb74

bb64:		; preds = %bb63
	br i1 false, label %bb72, label %bb65

bb65:		; preds = %bb64
	br label %bb72

bb72:		; preds = %bb65, %bb64
	br label %bb74

bb74:		; preds = %bb72, %bb63
	br i1 false, label %bb75, label %bb76

bb75:		; preds = %bb74
	br label %bb76

bb76:		; preds = %bb75, %bb74
	br i1 false, label %bb77, label %bb84

bb77:		; preds = %bb76
	%3 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0]
	unreachable

bb84:		; preds = %bb76
	br i1 false, label %bb85, label %bb86

bb85:		; preds = %bb84
	br label %bb87

bb86:		; preds = %bb84
	br label %bb87

bb87:		; preds = %bb86, %bb85
	%4 = call %struct.rtx_def* @gen_rtx_fmt_Ei(i32 16, i32 0, %struct.rtvec_def* null, i32 1) nounwind		; <%struct.rtx_def*> [#uses=0]
	br i1 false, label %bb89, label %bb90

bb89:		; preds = %bb87
	br label %bb91

bb90:		; preds = %bb87
	br label %bb91

bb91:		; preds = %bb90, %bb89
	br i1 false, label %bb92, label %bb93

bb92:		; preds = %bb91
	br label %bb94

bb93:		; preds = %bb91
	br label %bb94

bb94:		; preds = %bb93, %bb92
	unreachable

bb96:		; preds = %bb59, %entry
	%5 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
	%6 = getelementptr %struct.rtx_def, %struct.rtx_def* %5, i32 0, i32 0		; <i16*> [#uses=1]
	%7 = load i16, i16* %6, align 2		; <i16> [#uses=0]
	br i1 false, label %bb147, label %bb97

bb97:		; preds = %bb96
	%8 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
	br i1 false, label %bb147, label %bb99

bb99:		; preds = %bb97
	unreachable

bb147:		; preds = %bb97, %bb96
	%9 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
	%10 = getelementptr %struct.rtx_def, %struct.rtx_def* %9, i32 0, i32 0		; <i16*> [#uses=1]
	%11 = load i16, i16* %10, align 2		; <i16> [#uses=0]
	br i1 false, label %bb164, label %bb148

bb148:		; preds = %bb147
	br i1 false, label %bb164, label %bb149

bb149:		; preds = %bb148
	br i1 false, label %bb150, label %bb152

bb150:		; preds = %bb149
	unreachable

bb152:		; preds = %bb149
	br label %bb164

bb164:		; preds = %bb152, %bb148, %bb147
	%12 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0]
	br i1 false, label %bb165, label %bb166

bb165:		; preds = %bb164
	br label %bb167

bb166:		; preds = %bb164
	br label %bb167

bb167:		; preds = %bb166, %bb165
	br i1 false, label %bb211, label %bb168

bb168:		; preds = %bb167
	br i1 false, label %bb211, label %bb170

bb170:		; preds = %bb168
	br i1 false, label %bb172, label %bb181

bb172:		; preds = %bb170
	br i1 false, label %bb179, label %bb174

bb174:		; preds = %bb172
	br i1 false, label %bb177, label %bb175

bb175:		; preds = %bb174
	br i1 false, label %bb177, label %bb176

bb176:		; preds = %bb175
	br label %bb178

bb177:		; preds = %bb175, %bb174
	br label %bb178

bb178:		; preds = %bb177, %bb176
	br label %bb180

bb179:		; preds = %bb172
	br label %bb180

bb180:		; preds = %bb179, %bb178
	br label %bb181

bb181:		; preds = %bb180, %bb170
	%13 = call %struct.rtvec_def* (i32, ...)* @gen_rtvec(i32 1, %struct.rtx_def* null) nounwind		; <%struct.rtvec_def*> [#uses=0]
	unreachable

bb211:		; preds = %bb168, %bb167
	%14 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
	%15 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0]
	store %struct.rtx_def* null, %struct.rtx_def** null, align 4
	br i1 false, label %bb212, label %bb213

bb212:		; preds = %bb211
	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
	br label %bb214

bb213:		; preds = %bb211
	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
	br label %bb214

bb214:		; preds = %bb213, %bb212
	%16 = bitcast %struct.block_symbol* null to [1 x %struct.cgraph_rtl_info]*		; <[1 x %struct.cgraph_rtl_info]*> [#uses=1]
	%17 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* %16, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0]
	%18 = load %struct.rtx_def*, %struct.rtx_def** %iftmp.1532, align 4		; <%struct.rtx_def*> [#uses=0]
	%19 = getelementptr %struct.rtx_def, %struct.rtx_def* null, i32 0, i32 3		; <%struct.u*> [#uses=1]
	%20 = getelementptr %struct.u, %struct.u* %19, i32 0, i32 0		; <%struct.block_symbol*> [#uses=1]
	%21 = bitcast %struct.block_symbol* %20 to [1 x i64]*		; <[1 x i64]*> [#uses=1]
	%22 = getelementptr [1 x i64], [1 x i64]* %21, i32 0, i32 0		; <i64*> [#uses=0]
	%23 = call %struct.rtx_def* @plus_constant(%struct.rtx_def* null, i64 0) nounwind		; <%struct.rtx_def*> [#uses=0]
	unreachable
}