@@ -27,11 +27,8 @@ struct S {
27
27
// CHECK-O0-NEXT: [[AGG_TEMP33:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
28
28
// CHECK-O0-NEXT: [[I:%.*]] = alloca i32, align 4
29
29
// CHECK-O0-NEXT: [[AGG_TEMP42:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
30
- // CHECK-O0-NEXT: [[AGG_TEMP43:%.*]] = alloca [[STRUCT_S]], align 8
31
30
// CHECK-O0-NEXT: [[AGG_TEMP56:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
32
- // CHECK-O0-NEXT: [[AGG_TEMP57:%.*]] = alloca [[STRUCT_S]], align 8
33
31
// CHECK-O0-NEXT: [[AGG_TEMP73:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
34
- // CHECK-O0-NEXT: [[AGG_TEMP74:%.*]] = alloca [[STRUCT_S]], align 8
35
32
// CHECK-O0-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [10 x i32], ptr [[ARR]], i64 0, i64 0
36
33
// CHECK-O0-NEXT: [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[ARRAYDECAY]], i64 10
37
34
// CHECK-O0-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[TMP]], i32 0, i32 0
@@ -149,10 +146,9 @@ struct S {
149
146
// CHECK-O0-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_END:%.*]]
150
147
// CHECK-O0: for.body:
151
148
// CHECK-O0-NEXT: [[TMP24:%.*]] = load i32, ptr [[I]], align 4
152
- // CHECK-O0-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TEMP43]], ptr align 8 [[S]], i64 24, i1 false)
153
- // CHECK-O0-NEXT: [[L44:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[AGG_TEMP43]], i32 0, i32 2
149
+ // CHECK-O0-NEXT: [[L44:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[S]], i32 0, i32 2
154
150
// CHECK-O0-NEXT: [[TMP25:%.*]] = load i32, ptr [[L44]], align 8
155
- // CHECK-O0-NEXT: [[BP45:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[AGG_TEMP43 ]], i32 0, i32 0
151
+ // CHECK-O0-NEXT: [[BP45:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[S ]], i32 0, i32 0
156
152
// CHECK-O0-NEXT: [[TMP26:%.*]] = load ptr, ptr [[BP45]], align 8
157
153
// CHECK-O0-NEXT: [[IDX_EXT:%.*]] = sext i32 [[TMP25]] to i64
158
154
// CHECK-O0-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP26]], i64 [[IDX_EXT]]
@@ -172,17 +168,17 @@ struct S {
172
168
// CHECK-O0-NEXT: [[WIDE_PTR_LB_ADDR50:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[AGG_TEMP42]], i32 0, i32 2
173
169
// CHECK-O0-NEXT: [[WIDE_PTR_LB51:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR50]], align 8
174
170
// CHECK-O0-NEXT: [[TMP31:%.*]] = icmp ult ptr [[ARRAYIDX]], [[WIDE_PTR_UB49]], {{!annotation ![0-9]+}}
175
- // CHECK-O0-NEXT: br i1 [[TMP31]], label [[CONT53:% .*]], label [[TRAP52:% .*]], {{!annotation ![0-9]+}}
176
- // CHECK-O0: trap52 :
171
+ // CHECK-O0-NEXT: br i1 [[TMP31]], label % [[CONT53:.*]], label % [[TRAP52:.*]], {{!prof ![0-9]+}} , {{!annotation ![0-9]+}}
172
+ // CHECK-O0: [[TRAP52]] :
177
173
// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
178
174
// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
179
- // CHECK-O0: cont53 :
175
+ // CHECK-O0: [[CONT53]] :
180
176
// CHECK-O0-NEXT: [[TMP32:%.*]] = icmp uge ptr [[ARRAYIDX]], [[WIDE_PTR_LB51]], {{!annotation ![0-9]+}}
181
- // CHECK-O0-NEXT: br i1 [[TMP32]], label [[CONT55:% .*]], label [[TRAP54:% .*]], {{!annotation ![0-9]+}}
182
- // CHECK-O0: trap54 :
177
+ // CHECK-O0-NEXT: br i1 [[TMP32]], label % [[CONT55:.*]], label % [[TRAP54:.*]], {{!prof ![0-9]+}} , {{!annotation ![0-9]+}}
178
+ // CHECK-O0: [[TRAP54]] :
183
179
// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
184
180
// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
185
- // CHECK-O0: cont55 :
181
+ // CHECK-O0: [[CONT55]] :
186
182
// CHECK-O0-NEXT: store i32 [[TMP24]], ptr [[ARRAYIDX]], align 4
187
183
// CHECK-O0-NEXT: br label [[FOR_INC:%.*]]
188
184
// CHECK-O0: for.inc:
@@ -191,10 +187,9 @@ struct S {
191
187
// CHECK-O0-NEXT: store i32 [[INC]], ptr [[I]], align 4
192
188
// CHECK-O0-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
193
189
// CHECK-O0: for.end:
194
- // CHECK-O0-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TEMP57]], ptr align 8 [[S]], i64 24, i1 false)
195
- // CHECK-O0-NEXT: [[L58:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[AGG_TEMP57]], i32 0, i32 2
190
+ // CHECK-O0-NEXT: [[L58:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[S]], i32 0, i32 2
196
191
// CHECK-O0-NEXT: [[TMP34:%.*]] = load i32, ptr [[L58]], align 8
197
- // CHECK-O0-NEXT: [[BP259:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[AGG_TEMP57 ]], i32 0, i32 1
192
+ // CHECK-O0-NEXT: [[BP259:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[S ]], i32 0, i32 1
198
193
// CHECK-O0-NEXT: [[TMP35:%.*]] = load ptr, ptr [[BP259]], align 8
199
194
// CHECK-O0-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP34]], 1
200
195
// CHECK-O0-NEXT: [[IDX_EXT60:%.*]] = sext i32 [[ADD]] to i64
@@ -213,22 +208,21 @@ struct S {
213
208
// CHECK-O0-NEXT: [[WIDE_PTR_LB_ADDR67:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[AGG_TEMP56]], i32 0, i32 2
214
209
// CHECK-O0-NEXT: [[WIDE_PTR_LB68:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR67]], align 8
215
210
// CHECK-O0-NEXT: [[TMP39:%.*]] = icmp ult ptr [[ARRAYIDX64]], [[WIDE_PTR_UB66]], {{!annotation ![0-9]+}}
216
- // CHECK-O0-NEXT: br i1 [[TMP39]], label [[CONT70:% .*]], label [[TRAP69:% .*]], {{!annotation ![0-9]+}}
217
- // CHECK-O0: trap69 :
211
+ // CHECK-O0-NEXT: br i1 [[TMP39]], label % [[CONT70:.*]], label % [[TRAP69:.*]], {{!prof ![0-9]+}} , {{!annotation ![0-9]+}}
212
+ // CHECK-O0: [[TRAP69]] :
218
213
// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
219
214
// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
220
- // CHECK-O0: cont70 :
215
+ // CHECK-O0: [[CONT70]] :
221
216
// CHECK-O0-NEXT: [[TMP40:%.*]] = icmp uge ptr [[ARRAYIDX64]], [[WIDE_PTR_LB68]], {{!annotation ![0-9]+}}
222
- // CHECK-O0-NEXT: br i1 [[TMP40]], label [[CONT72:% .*]], label [[TRAP71:% .*]], {{!annotation ![0-9]+}}
223
- // CHECK-O0: trap71 :
217
+ // CHECK-O0-NEXT: br i1 [[TMP40]], label % [[CONT72:.*]], label % [[TRAP71:.*]], {{!prof ![0-9]+}} , {{!annotation ![0-9]+}}
218
+ // CHECK-O0: [[TRAP71]] :
224
219
// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
225
220
// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
226
- // CHECK-O0: cont72 :
221
+ // CHECK-O0: [[CONT72]] :
227
222
// CHECK-O0-NEXT: [[TMP41:%.*]] = load i32, ptr [[ARRAYIDX64]], align 4
228
- // CHECK-O0-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TEMP74]], ptr align 8 [[S]], i64 24, i1 false)
229
- // CHECK-O0-NEXT: [[L75:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[AGG_TEMP74]], i32 0, i32 2
223
+ // CHECK-O0-NEXT: [[L75:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[S]], i32 0, i32 2
230
224
// CHECK-O0-NEXT: [[TMP42:%.*]] = load i32, ptr [[L75]], align 8
231
- // CHECK-O0-NEXT: [[BP76:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[AGG_TEMP74 ]], i32 0, i32 0
225
+ // CHECK-O0-NEXT: [[BP76:%.*]] = getelementptr inbounds nuw [[STRUCT_S]], ptr [[S ]], i32 0, i32 0
232
226
// CHECK-O0-NEXT: [[TMP43:%.*]] = load ptr, ptr [[BP76]], align 8
233
227
// CHECK-O0-NEXT: [[IDX_EXT77:%.*]] = sext i32 [[TMP42]] to i64
234
228
// CHECK-O0-NEXT: [[ADD_PTR78:%.*]] = getelementptr inbounds i32, ptr [[TMP43]], i64 [[IDX_EXT77]]
@@ -246,17 +240,17 @@ struct S {
246
240
// CHECK-O0-NEXT: [[WIDE_PTR_LB_ADDR84:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[AGG_TEMP73]], i32 0, i32 2
247
241
// CHECK-O0-NEXT: [[WIDE_PTR_LB85:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR84]], align 8
248
242
// CHECK-O0-NEXT: [[TMP47:%.*]] = icmp ult ptr [[ARRAYIDX81]], [[WIDE_PTR_UB83]], {{!annotation ![0-9]+}}
249
- // CHECK-O0-NEXT: br i1 [[TMP47]], label [[CONT87:% .*]], label [[TRAP86:% .*]], {{!annotation ![0-9]+}}
250
- // CHECK-O0: trap86 :
243
+ // CHECK-O0-NEXT: br i1 [[TMP47]], label % [[CONT87:.*]], label % [[TRAP86:.*]], {{!prof ![0-9]+}} , {{!annotation ![0-9]+}}
244
+ // CHECK-O0: [[TRAP86]] :
251
245
// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
252
246
// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
253
- // CHECK-O0: cont87 :
247
+ // CHECK-O0: [[CONT87]] :
254
248
// CHECK-O0-NEXT: [[TMP48:%.*]] = icmp uge ptr [[ARRAYIDX81]], [[WIDE_PTR_LB85]], {{!annotation ![0-9]+}}
255
- // CHECK-O0-NEXT: br i1 [[TMP48]], label [[CONT89:% .*]], label [[TRAP88:% .*]], {{!annotation ![0-9]+}}
256
- // CHECK-O0: trap88 :
249
+ // CHECK-O0-NEXT: br i1 [[TMP48]], label % [[CONT89:.*]], label % [[TRAP88:.*]], {{!prof ![0-9]+}} , {{!annotation ![0-9]+}}
250
+ // CHECK-O0: [[TRAP88]] :
257
251
// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
258
252
// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
259
- // CHECK-O0: cont89 :
253
+ // CHECK-O0: [[CONT89]] :
260
254
// CHECK-O0-NEXT: [[TMP49:%.*]] = load i32, ptr [[ARRAYIDX81]], align 4
261
255
// CHECK-O0-NEXT: [[ADD90:%.*]] = add nsw i32 [[TMP41]], [[TMP49]]
262
256
// CHECK-O0-NEXT: ret i32 [[ADD90]]
0 commit comments