1
- ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --include-generated-funcs --version 2
1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --include-generated-funcs --version 4
2
2
; RUN: opt < %s -passes='lowertypetests,default<O3>' -S | FileCheck %s
3
3
4
4
; This IR is based of the following C++
@@ -156,38 +156,38 @@ attributes #8 = { noreturn nounwind }
156
156
!13 = !{}
157
157
!14 = !{!"branch_weights" , i32 1048575 , i32 1 }
158
158
; CHECK: Function Attrs: minsize mustprogress optsize
159
- ; CHECK-LABEL: define dso_local void @_Z7throw_ei
160
- ; CHECK-SAME: ( i32 noundef [[NUM:%.*]]) #[[ATTR0:[0-9]+]] !type !4 !type !5 !type !6 {
159
+ ; CHECK-LABEL: define dso_local void @_Z7throw_ei(
160
+ ; CHECK-SAME: i32 noundef [[NUM:%.*]]) #[[ATTR0:[0-9]+]] !type [[META4:![0-9]+]] !type [[META5:![0-9]+]] !type [[META6:![0-9]+]] {
161
161
; CHECK-NEXT: entry:
162
162
; CHECK-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[NUM]], 0
163
163
; CHECK-NEXT: br i1 [[TOBOOL_NOT]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
164
164
; CHECK: if.then:
165
- ; CHECK-NEXT: [[EXCEPTION:%.*]] = tail call ptr @__cxa_allocate_exception(i64 4) #[[ATTR5 :[0-9]+]]
165
+ ; CHECK-NEXT: [[EXCEPTION:%.*]] = tail call ptr @__cxa_allocate_exception(i64 4) #[[ATTR6 :[0-9]+]]
166
166
; CHECK-NEXT: store i32 20, ptr [[EXCEPTION]], align 16, !tbaa [[TBAA7:![0-9]+]]
167
- ; CHECK-NEXT: tail call void @__cxa_throw(ptr nonnull [[EXCEPTION]], ptr nonnull @_ZTIi, ptr null) #[[ATTR6 :[0-9]+]]
167
+ ; CHECK-NEXT: tail call void @__cxa_throw(ptr nonnull [[EXCEPTION]], ptr nonnull @_ZTIi, ptr null) #[[ATTR7 :[0-9]+]]
168
168
; CHECK-NEXT: unreachable
169
169
; CHECK: if.end:
170
170
; CHECK-NEXT: ret void
171
171
;
172
172
;
173
173
; CHECK: Function Attrs: minsize mustprogress optsize
174
- ; CHECK-LABEL: define dso_local void @_Z10call_catchi
175
- ; CHECK-SAME: ( i32 noundef [[NUM:%.*]]) local_unnamed_addr #[[ATTR0]] personality ptr @__gxx_personality_v0 !type !4 !type !5 !type !6 {
174
+ ; CHECK-LABEL: define dso_local void @_Z10call_catchi(
175
+ ; CHECK-SAME: i32 noundef [[NUM:%.*]]) local_unnamed_addr #[[ATTR0]] personality ptr @__gxx_personality_v0 !type [[META4]] !type [[META5]] !type [[META6]] {
176
176
; CHECK-NEXT: entry:
177
177
; CHECK-NEXT: store ptr @_Z7throw_ei.cfi_jt, ptr @catch_ptr, align 8, !tbaa [[TBAA11:![0-9]+]]
178
- ; CHECK-NEXT: invoke void @_Z7throw_ei.cfi_jt() #[[ATTR7 :[0-9]+]]
179
- ; CHECK-NEXT: to label [[TRY_CONT:%.*]] unwind label [[LPAD:%.*]]
178
+ ; CHECK-NEXT: invoke void @_Z7throw_ei.cfi_jt(i32 noundef [[NUM]] ) #[[ATTR8 :[0-9]+]]
179
+ ; CHECK-NEXT: to label [[TRY_CONT:%.*]] unwind label [[LPAD:%.*]], !callees [[META13:![0-9]+ ]]
180
180
; CHECK: lpad:
181
181
; CHECK-NEXT: [[TMP0:%.*]] = landingpad { ptr, i32 }
182
- ; CHECK-NEXT: catch ptr @_ZTIi
182
+ ; CHECK-NEXT: catch ptr @_ZTIi
183
183
; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { ptr, i32 } [[TMP0]], 1
184
- ; CHECK-NEXT: [[TMP2:%.*]] = tail call i32 @llvm.eh.typeid.for(ptr nonnull @_ZTIi) #[[ATTR5 ]]
184
+ ; CHECK-NEXT: [[TMP2:%.*]] = tail call i32 @llvm.eh.typeid.for(ptr nonnull @_ZTIi) #[[ATTR6 ]]
185
185
; CHECK-NEXT: [[MATCHES:%.*]] = icmp eq i32 [[TMP1]], [[TMP2]]
186
186
; CHECK-NEXT: br i1 [[MATCHES]], label [[CATCH:%.*]], label [[EH_RESUME:%.*]]
187
187
; CHECK: catch:
188
188
; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { ptr, i32 } [[TMP0]], 0
189
- ; CHECK-NEXT: [[TMP4:%.*]] = tail call ptr @__cxa_begin_catch(ptr [[TMP3]]) #[[ATTR5 ]]
190
- ; CHECK-NEXT: tail call void @__cxa_end_catch() #[[ATTR5 ]]
189
+ ; CHECK-NEXT: [[TMP4:%.*]] = tail call ptr @__cxa_begin_catch(ptr [[TMP3]]) #[[ATTR6 ]]
190
+ ; CHECK-NEXT: tail call void @__cxa_end_catch() #[[ATTR6 ]]
191
191
; CHECK-NEXT: br label [[TRY_CONT]]
192
192
; CHECK: try.cont:
193
193
; CHECK-NEXT: ret void
@@ -196,33 +196,46 @@ attributes #8 = { noreturn nounwind }
196
196
;
197
197
;
198
198
; CHECK: Function Attrs: minsize optsize
199
- ; CHECK-LABEL: define weak_odr hidden void @__cfi_check_fail
200
- ; CHECK-SAME: ( ptr noundef [[TMP0:%.*]], ptr noundef [[TMP1:%.*]]) #[[ATTR2:[0-9]+]] {
199
+ ; CHECK-LABEL: define weak_odr hidden void @__cfi_check_fail(
200
+ ; CHECK-SAME: ptr noundef [[TMP0:%.*]], ptr noundef [[TMP1:%.*]]) #[[ATTR2:[0-9]+]] {
201
201
; CHECK-NEXT: entry:
202
- ; CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq ptr [[TMP0]], null, !nosanitize !13
203
- ; CHECK-NEXT: br i1 [[DOTNOT]], label [[TRAP:%.*]], label [[CONT:%.*]], !nosanitize !13
202
+ ; CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq ptr [[TMP0]], null, !nosanitize [[META14:![0-9]+]]
203
+ ; CHECK-NEXT: br i1 [[DOTNOT]], label [[TRAP:%.*]], label [[CONT:%.*]], !nosanitize [[META14]]
204
204
; CHECK: trap:
205
- ; CHECK-NEXT: tail call void @llvm.ubsantrap(i8 2) #[[ATTR8 :[0-9]+]], !nosanitize !13
206
- ; CHECK-NEXT: unreachable, !nosanitize !13
205
+ ; CHECK-NEXT: tail call void @llvm.ubsantrap(i8 2) #[[ATTR9 :[0-9]+]], !nosanitize [[META14]]
206
+ ; CHECK-NEXT: unreachable, !nosanitize [[META14]]
207
207
; CHECK: cont:
208
- ; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr [[TMP0]], align 4, !nosanitize !13
208
+ ; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr [[TMP0]], align 4, !nosanitize [[META14]]
209
209
; CHECK-NEXT: [[SWITCH:%.*]] = icmp ult i8 [[TMP2]], 5
210
210
; CHECK-NEXT: br i1 [[SWITCH]], label [[TRAP]], label [[CONT6:%.*]]
211
211
; CHECK: cont6:
212
- ; CHECK-NEXT: ret void, !nosanitize !13
212
+ ; CHECK-NEXT: ret void, !nosanitize [[META14]]
213
213
;
214
214
;
215
- ; CHECK-LABEL: define weak void @__cfi_check
216
- ; CHECK-SAME: ( i64 [[TMP0:%.*]], ptr [[TMP1:%.*]], ptr [[TMP2:%.*]]) local_unnamed_addr {
215
+ ; CHECK-LABEL: define weak void @__cfi_check(
216
+ ; CHECK-SAME: i64 [[TMP0:%.*]], ptr [[TMP1:%.*]], ptr [[TMP2:%.*]]) local_unnamed_addr {
217
217
; CHECK-NEXT: entry:
218
218
; CHECK-NEXT: tail call void @llvm.trap()
219
219
; CHECK-NEXT: unreachable
220
220
;
221
221
;
222
222
; CHECK: Function Attrs: naked nocf_check noinline
223
- ; CHECK-LABEL: define internal void @_Z7throw_ei.cfi_jt
224
- ; CHECK-SAME: ( ) #[[ATTR4 :[0-9]+]] align 8 {
223
+ ; CHECK-LABEL: define internal void @_Z7throw_ei.cfi_jt(
224
+ ; CHECK-SAME: ) #[[ATTR5 :[0-9]+]] align 8 {
225
225
; CHECK-NEXT: entry:
226
- ; CHECK-NEXT: tail call void asm sideeffect "jmp ${0:c}@plt\0Aint3\0Aint3\0Aint3\0A", "s"(ptr nonnull @_Z7throw_ei) #[[ATTR5 ]]
226
+ ; CHECK-NEXT: tail call void asm sideeffect "jmp ${0:c}@plt\0Aint3\0Aint3\0Aint3\0A", "s"(ptr nonnull @_Z7throw_ei) #[[ATTR6 ]]
227
227
; CHECK-NEXT: unreachable
228
228
;
229
+ ;.
230
+ ; CHECK: [[META4]] = !{i64 0, !"_ZTSFviE"}
231
+ ; CHECK: [[META5]] = !{i64 0, !"_ZTSFviE.generalized"}
232
+ ; CHECK: [[META6]] = !{i64 0, i64 -8738933900360652027}
233
+ ; CHECK: [[TBAA7]] = !{[[META8:![0-9]+]], [[META8]], i64 0}
234
+ ; CHECK: [[META8]] = !{!"int", [[META9:![0-9]+]], i64 0}
235
+ ; CHECK: [[META9]] = !{!"omnipotent char", [[META10:![0-9]+]], i64 0}
236
+ ; CHECK: [[META10]] = !{!"Simple C++ TBAA"}
237
+ ; CHECK: [[TBAA11]] = !{[[META12:![0-9]+]], [[META12]], i64 0}
238
+ ; CHECK: [[META12]] = !{!"any pointer", [[META9]], i64 0}
239
+ ; CHECK: [[META13]] = !{ptr @_Z7throw_ei.cfi_jt}
240
+ ; CHECK: [[META14]] = !{}
241
+ ;.
0 commit comments