@@ -27,11 +27,8 @@ struct S {
2727// CHECK-O0-NEXT: [[AGG_TEMP33:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
2828// CHECK-O0-NEXT: [[I:%.*]] = alloca i32, align 4
2929// 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
3130// 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
3331// 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
3532// CHECK-O0-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [10 x i32], ptr [[ARR]], i64 0, i64 0
3633// CHECK-O0-NEXT: [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[ARRAYDECAY]], i64 10
3734// 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 {
149146// CHECK-O0-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_END:%.*]]
150147// CHECK-O0: for.body:
151148// 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
154150// 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
156152// CHECK-O0-NEXT: [[TMP26:%.*]] = load ptr, ptr [[BP45]], align 8
157153// CHECK-O0-NEXT: [[IDX_EXT:%.*]] = sext i32 [[TMP25]] to i64
158154// CHECK-O0-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP26]], i64 [[IDX_EXT]]
@@ -172,17 +168,17 @@ struct S {
172168// CHECK-O0-NEXT: [[WIDE_PTR_LB_ADDR50:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[AGG_TEMP42]], i32 0, i32 2
173169// CHECK-O0-NEXT: [[WIDE_PTR_LB51:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR50]], align 8
174170// 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]] :
177173// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
178174// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
179- // CHECK-O0: cont53 :
175+ // CHECK-O0: [[CONT53]] :
180176// 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]] :
183179// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
184180// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
185- // CHECK-O0: cont55 :
181+ // CHECK-O0: [[CONT55]] :
186182// CHECK-O0-NEXT: store i32 [[TMP24]], ptr [[ARRAYIDX]], align 4
187183// CHECK-O0-NEXT: br label [[FOR_INC:%.*]]
188184// CHECK-O0: for.inc:
@@ -191,10 +187,9 @@ struct S {
191187// CHECK-O0-NEXT: store i32 [[INC]], ptr [[I]], align 4
192188// CHECK-O0-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP5:![0-9]+]]
193189// 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
196191// 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
198193// CHECK-O0-NEXT: [[TMP35:%.*]] = load ptr, ptr [[BP259]], align 8
199194// CHECK-O0-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP34]], 1
200195// CHECK-O0-NEXT: [[IDX_EXT60:%.*]] = sext i32 [[ADD]] to i64
@@ -213,22 +208,21 @@ struct S {
213208// CHECK-O0-NEXT: [[WIDE_PTR_LB_ADDR67:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[AGG_TEMP56]], i32 0, i32 2
214209// CHECK-O0-NEXT: [[WIDE_PTR_LB68:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR67]], align 8
215210// 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]] :
218213// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
219214// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
220- // CHECK-O0: cont70 :
215+ // CHECK-O0: [[CONT70]] :
221216// 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]] :
224219// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
225220// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
226- // CHECK-O0: cont72 :
221+ // CHECK-O0: [[CONT72]] :
227222// 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
230224// 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
232226// CHECK-O0-NEXT: [[TMP43:%.*]] = load ptr, ptr [[BP76]], align 8
233227// CHECK-O0-NEXT: [[IDX_EXT77:%.*]] = sext i32 [[TMP42]] to i64
234228// CHECK-O0-NEXT: [[ADD_PTR78:%.*]] = getelementptr inbounds i32, ptr [[TMP43]], i64 [[IDX_EXT77]]
@@ -246,17 +240,17 @@ struct S {
246240// CHECK-O0-NEXT: [[WIDE_PTR_LB_ADDR84:%.*]] = getelementptr inbounds nuw %"__bounds_safety::wide_ptr.bidi_indexable", ptr [[AGG_TEMP73]], i32 0, i32 2
247241// CHECK-O0-NEXT: [[WIDE_PTR_LB85:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR84]], align 8
248242// 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]] :
251245// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
252246// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
253- // CHECK-O0: cont87 :
247+ // CHECK-O0: [[CONT87]] :
254248// 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]] :
257251// CHECK-O0-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR4]], {{!annotation ![0-9]+}}
258252// CHECK-O0-NEXT: unreachable, {{!annotation ![0-9]+}}
259- // CHECK-O0: cont89 :
253+ // CHECK-O0: [[CONT89]] :
260254// CHECK-O0-NEXT: [[TMP49:%.*]] = load i32, ptr [[ARRAYIDX81]], align 4
261255// CHECK-O0-NEXT: [[ADD90:%.*]] = add nsw i32 [[TMP41]], [[TMP49]]
262256// CHECK-O0-NEXT: ret i32 [[ADD90]]
0 commit comments