Skip to content

Commit 1a66474

Browse files
authored
[clang][FMV][AArch64] Remove O3 from failing test (#171457)
This fixes the buildbot failures from #150267. I could not reproduce them locally but my intuition suggests that the -O3 option on the RUN line behaves incosistently on different hosts judging from the error logs. My intention was to run an integration test which will use llvm's globalopt pass, but there's no need actually. We have unittests in place for it.
1 parent 7f2bbba commit 1a66474

File tree

1 file changed

+75
-133
lines changed

1 file changed

+75
-133
lines changed
Lines changed: 75 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1,204 +1,146 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals --include-generated-funcs
2-
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -O3 -fno-inline -emit-llvm -o - %s | FileCheck %s
2+
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s
33

44
__attribute__((target_version("lse;priority=30"))) int foo(void) { return 1; }
5-
__attribute__((target_version("sve2;priority=20"))) int foo(void) { return 2; }
5+
__attribute__((target_version("aes;priority=20"))) int foo(void) { return 2; }
66
__attribute__((target_version("sve;priority=10"))) int foo(void) { return 3; }
77
__attribute__((target_version("default"))) int foo(void) { return 0; }
88

9-
__attribute__((target_clones("lse+sve2;priority=3", "lse;priority=2", "sve;priority=1", "default")))
10-
int fmv_caller(void) { return foo(); }
11-
12-
13-
__attribute__((target_version("aes"))) int bar(void) { return 1; }
14-
__attribute__((target_version("sm4;priority=5"))) int bar(void) { return 2; }
15-
__attribute__((target_version("default"))) int bar(void) { return 0; }
16-
17-
__attribute__((target("aes"))) int regular_caller_aes() { return bar(); }
18-
__attribute__((target("sm4"))) int regular_caller_sm4() { return bar(); }
9+
__attribute__((target_clones("sme;priority=3", "bti;priority=2", "mops;priority=1", "default"))) int bar(void) { return 0; }
1910
//.
20-
// CHECK: @__aarch64_cpu_features = external dso_local local_unnamed_addr global { i64 }
11+
// CHECK: @__aarch64_cpu_features = external dso_local global { i64 }
2112
// CHECK: @foo = weak_odr ifunc i32 (), ptr @foo.resolver
22-
// CHECK: @fmv_caller = weak_odr ifunc i32 (), ptr @fmv_caller.resolver
2313
// CHECK: @bar = weak_odr ifunc i32 (), ptr @bar.resolver
2414
//.
25-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
15+
// CHECK: Function Attrs: noinline nounwind optnone
2616
// CHECK-LABEL: define {{[^@]+}}@foo._Mlse
2717
// CHECK-SAME: () #[[ATTR0:[0-9]+]] {
2818
// CHECK-NEXT: entry:
2919
// CHECK-NEXT: ret i32 1
3020
//
3121
//
32-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16)
33-
// CHECK-LABEL: define {{[^@]+}}@foo._Msve2
22+
// CHECK: Function Attrs: noinline nounwind optnone
23+
// CHECK-LABEL: define {{[^@]+}}@foo._Maes
3424
// CHECK-SAME: () #[[ATTR1:[0-9]+]] {
3525
// CHECK-NEXT: entry:
3626
// CHECK-NEXT: ret i32 2
3727
//
3828
//
39-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16)
29+
// CHECK: Function Attrs: noinline nounwind optnone vscale_range(1,16)
4030
// CHECK-LABEL: define {{[^@]+}}@foo._Msve
4131
// CHECK-SAME: () #[[ATTR2:[0-9]+]] {
4232
// CHECK-NEXT: entry:
4333
// CHECK-NEXT: ret i32 3
4434
//
4535
//
46-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
36+
// CHECK: Function Attrs: noinline nounwind optnone
4737
// CHECK-LABEL: define {{[^@]+}}@foo.default
4838
// CHECK-SAME: () #[[ATTR3:[0-9]+]] {
4939
// CHECK-NEXT: entry:
5040
// CHECK-NEXT: ret i32 0
5141
//
5242
//
53-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16)
54-
// CHECK-LABEL: define {{[^@]+}}@fmv_caller._MlseMsve2
43+
// CHECK: Function Attrs: noinline nounwind optnone
44+
// CHECK-LABEL: define {{[^@]+}}@bar._Msme
5545
// CHECK-SAME: () #[[ATTR4:[0-9]+]] {
5646
// CHECK-NEXT: entry:
57-
// CHECK-NEXT: [[CALL:%.*]] = tail call i32 @foo._Mlse()
58-
// CHECK-NEXT: ret i32 [[CALL]]
47+
// CHECK-NEXT: ret i32 0
5948
//
6049
//
61-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16)
62-
// CHECK-LABEL: define {{[^@]+}}@fmv_caller._Mlse
50+
// CHECK: Function Attrs: noinline nounwind optnone
51+
// CHECK-LABEL: define {{[^@]+}}@bar._Mbti
6352
// CHECK-SAME: () #[[ATTR5:[0-9]+]] {
6453
// CHECK-NEXT: entry:
65-
// CHECK-NEXT: [[CALL:%.*]] = tail call i32 @foo._Mlse()
66-
// CHECK-NEXT: ret i32 [[CALL]]
54+
// CHECK-NEXT: ret i32 0
6755
//
6856
//
69-
// CHECK: Function Attrs: noinline nounwind vscale_range(1,16)
70-
// CHECK-LABEL: define {{[^@]+}}@fmv_caller._Msve
57+
// CHECK: Function Attrs: noinline nounwind optnone
58+
// CHECK-LABEL: define {{[^@]+}}@bar._Mmops
7159
// CHECK-SAME: () #[[ATTR6:[0-9]+]] {
7260
// CHECK-NEXT: entry:
73-
// CHECK-NEXT: [[CALL:%.*]] = tail call i32 @foo() #[[ATTR13:[0-9]+]]
74-
// CHECK-NEXT: ret i32 [[CALL]]
75-
//
76-
//
77-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16)
78-
// CHECK-LABEL: define {{[^@]+}}@fmv_caller.default
79-
// CHECK-SAME: () #[[ATTR7:[0-9]+]] {
80-
// CHECK-NEXT: entry:
81-
// CHECK-NEXT: [[CALL:%.*]] = tail call i32 @foo.default()
82-
// CHECK-NEXT: ret i32 [[CALL]]
83-
//
84-
//
85-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
86-
// CHECK-LABEL: define {{[^@]+}}@bar._Maes
87-
// CHECK-SAME: () #[[ATTR8:[0-9]+]] {
88-
// CHECK-NEXT: entry:
89-
// CHECK-NEXT: ret i32 1
90-
//
91-
//
92-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
93-
// CHECK-LABEL: define {{[^@]+}}@bar._Msm4
94-
// CHECK-SAME: () #[[ATTR9:[0-9]+]] {
95-
// CHECK-NEXT: entry:
96-
// CHECK-NEXT: ret i32 2
61+
// CHECK-NEXT: ret i32 0
9762
//
9863
//
99-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
64+
// CHECK: Function Attrs: noinline nounwind optnone
10065
// CHECK-LABEL: define {{[^@]+}}@bar.default
10166
// CHECK-SAME: () #[[ATTR3]] {
10267
// CHECK-NEXT: entry:
10368
// CHECK-NEXT: ret i32 0
10469
//
10570
//
106-
// CHECK: Function Attrs: noinline nounwind
107-
// CHECK-LABEL: define {{[^@]+}}@regular_caller_aes
108-
// CHECK-SAME: () local_unnamed_addr #[[ATTR10:[0-9]+]] {
109-
// CHECK-NEXT: entry:
110-
// CHECK-NEXT: [[CALL:%.*]] = tail call i32 @bar() #[[ATTR13]]
111-
// CHECK-NEXT: ret i32 [[CALL]]
112-
//
113-
//
114-
// CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
115-
// CHECK-LABEL: define {{[^@]+}}@regular_caller_sm4
116-
// CHECK-SAME: () local_unnamed_addr #[[ATTR11:[0-9]+]] {
117-
// CHECK-NEXT: entry:
118-
// CHECK-NEXT: [[CALL:%.*]] = tail call i32 @bar._Msm4()
119-
// CHECK-NEXT: ret i32 [[CALL]]
120-
//
121-
//
12271
// CHECK: Function Attrs: disable_sanitizer_instrumentation
12372
// CHECK-LABEL: define {{[^@]+}}@foo.resolver
124-
// CHECK-SAME: () #[[ATTR12:[0-9]+]] comdat {
73+
// CHECK-SAME: () #[[ATTR7:[0-9]+]] comdat {
12574
// CHECK-NEXT: resolver_entry:
126-
// CHECK-NEXT: tail call void @__init_cpu_features_resolver()
75+
// CHECK-NEXT: call void @__init_cpu_features_resolver()
12776
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
12877
// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 128
129-
// CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq i64 [[TMP1]], 0
130-
// CHECK-NEXT: br i1 [[DOTNOT]], label [[RESOLVER_ELSE:%.*]], label [[COMMON_RET:%.*]]
131-
// CHECK: common.ret:
132-
// CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi ptr [ @foo._Mlse, [[RESOLVER_ENTRY:%.*]] ], [ @foo._Msve2, [[RESOLVER_ELSE]] ], [ [[FOO__MSVE_FOO_DEFAULT:%.*]], [[RESOLVER_ELSE2:%.*]] ]
133-
// CHECK-NEXT: ret ptr [[COMMON_RET_OP]]
78+
// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 128
79+
// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
80+
// CHECK-NEXT: br i1 [[TMP3]], label [[RESOLVER_RETURN:%.*]], label [[RESOLVER_ELSE:%.*]]
81+
// CHECK: resolver_return:
82+
// CHECK-NEXT: ret ptr @foo._Mlse
13483
// CHECK: resolver_else:
135-
// CHECK-NEXT: [[TMP2:%.*]] = and i64 [[TMP0]], 69793284352
136-
// CHECK-NEXT: [[TMP3:%.*]] = icmp eq i64 [[TMP2]], 69793284352
137-
// CHECK-NEXT: br i1 [[TMP3]], label [[COMMON_RET]], label [[RESOLVER_ELSE2]]
84+
// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
85+
// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 33536
86+
// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 33536
87+
// CHECK-NEXT: [[TMP7:%.*]] = and i1 true, [[TMP6]]
88+
// CHECK-NEXT: br i1 [[TMP7]], label [[RESOLVER_RETURN1:%.*]], label [[RESOLVER_ELSE2:%.*]]
89+
// CHECK: resolver_return1:
90+
// CHECK-NEXT: ret ptr @foo._Maes
13891
// CHECK: resolver_else2:
139-
// CHECK-NEXT: [[TMP4:%.*]] = and i64 [[TMP0]], 1073807616
140-
// CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 1073807616
141-
// CHECK-NEXT: [[FOO__MSVE_FOO_DEFAULT]] = select i1 [[TMP5]], ptr @foo._Msve, ptr @foo.default
142-
// CHECK-NEXT: br label [[COMMON_RET]]
92+
// CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
93+
// CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], 1073807616
94+
// CHECK-NEXT: [[TMP10:%.*]] = icmp eq i64 [[TMP9]], 1073807616
95+
// CHECK-NEXT: [[TMP11:%.*]] = and i1 true, [[TMP10]]
96+
// CHECK-NEXT: br i1 [[TMP11]], label [[RESOLVER_RETURN3:%.*]], label [[RESOLVER_ELSE4:%.*]]
97+
// CHECK: resolver_return3:
98+
// CHECK-NEXT: ret ptr @foo._Msve
99+
// CHECK: resolver_else4:
100+
// CHECK-NEXT: ret ptr @foo.default
143101
//
144102
//
145103
// CHECK: Function Attrs: disable_sanitizer_instrumentation
146-
// CHECK-LABEL: define {{[^@]+}}@fmv_caller.resolver
147-
// CHECK-SAME: () #[[ATTR12]] comdat {
104+
// CHECK-LABEL: define {{[^@]+}}@bar.resolver
105+
// CHECK-SAME: () #[[ATTR7]] comdat {
148106
// CHECK-NEXT: resolver_entry:
149-
// CHECK-NEXT: tail call void @__init_cpu_features_resolver()
107+
// CHECK-NEXT: call void @__init_cpu_features_resolver()
150108
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
151-
// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 69793284480
152-
// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 69793284480
153-
// CHECK-NEXT: br i1 [[TMP2]], label [[COMMON_RET:%.*]], label [[RESOLVER_ELSE:%.*]]
154-
// CHECK: common.ret:
155-
// CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi ptr [ @fmv_caller._MlseMsve2, [[RESOLVER_ENTRY:%.*]] ], [ @fmv_caller._Mlse, [[RESOLVER_ELSE]] ], [ [[FMV_CALLER__MSVE_FMV_CALLER_DEFAULT:%.*]], [[RESOLVER_ELSE2:%.*]] ]
156-
// CHECK-NEXT: ret ptr [[COMMON_RET_OP]]
109+
// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 4398180795136
110+
// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 4398180795136
111+
// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
112+
// CHECK-NEXT: br i1 [[TMP3]], label [[RESOLVER_RETURN:%.*]], label [[RESOLVER_ELSE:%.*]]
113+
// CHECK: resolver_return:
114+
// CHECK-NEXT: ret ptr @bar._Msme
157115
// CHECK: resolver_else:
158-
// CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP0]], 128
159-
// CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq i64 [[TMP3]], 0
160-
// CHECK-NEXT: br i1 [[DOTNOT]], label [[RESOLVER_ELSE2]], label [[COMMON_RET]]
116+
// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
117+
// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 1125899906842624
118+
// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 1125899906842624
119+
// CHECK-NEXT: [[TMP7:%.*]] = and i1 true, [[TMP6]]
120+
// CHECK-NEXT: br i1 [[TMP7]], label [[RESOLVER_RETURN1:%.*]], label [[RESOLVER_ELSE2:%.*]]
121+
// CHECK: resolver_return1:
122+
// CHECK-NEXT: ret ptr @bar._Mbti
161123
// CHECK: resolver_else2:
162-
// CHECK-NEXT: [[TMP4:%.*]] = and i64 [[TMP0]], 1073807616
163-
// CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[TMP4]], 1073807616
164-
// CHECK-NEXT: [[FMV_CALLER__MSVE_FMV_CALLER_DEFAULT]] = select i1 [[TMP5]], ptr @fmv_caller._Msve, ptr @fmv_caller.default
165-
// CHECK-NEXT: br label [[COMMON_RET]]
166-
//
167-
//
168-
// CHECK: Function Attrs: disable_sanitizer_instrumentation
169-
// CHECK-LABEL: define {{[^@]+}}@bar.resolver
170-
// CHECK-SAME: () #[[ATTR12]] comdat {
171-
// CHECK-NEXT: resolver_entry:
172-
// CHECK-NEXT: tail call void @__init_cpu_features_resolver()
173-
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
174-
// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 800
175-
// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 800
176-
// CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP0]], 33536
177-
// CHECK-NEXT: [[TMP4:%.*]] = icmp eq i64 [[TMP3]], 33536
178-
// CHECK-NEXT: [[BAR__MAES_BAR_DEFAULT:%.*]] = select i1 [[TMP4]], ptr @bar._Maes, ptr @bar.default
179-
// CHECK-NEXT: [[COMMON_RET_OP:%.*]] = select i1 [[TMP2]], ptr @bar._Msm4, ptr [[BAR__MAES_BAR_DEFAULT]]
180-
// CHECK-NEXT: ret ptr [[COMMON_RET_OP]]
124+
// CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
125+
// CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], 576460752303423488
126+
// CHECK-NEXT: [[TMP10:%.*]] = icmp eq i64 [[TMP9]], 576460752303423488
127+
// CHECK-NEXT: [[TMP11:%.*]] = and i1 true, [[TMP10]]
128+
// CHECK-NEXT: br i1 [[TMP11]], label [[RESOLVER_RETURN3:%.*]], label [[RESOLVER_ELSE4:%.*]]
129+
// CHECK: resolver_return3:
130+
// CHECK-NEXT: ret ptr @bar._Mmops
131+
// CHECK: resolver_else4:
132+
// CHECK-NEXT: ret ptr @bar.default
181133
//
182134
//.
183-
// CHECK: attributes #[[ATTR0]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) "fmv-features"="P1,P2,P3,P4,lse" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse" }
184-
// CHECK: attributes #[[ATTR1]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16) "fmv-features"="P2,P4,sve2" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve,+sve2" }
185-
// CHECK: attributes #[[ATTR2]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16) "fmv-features"="P1,P3,sve" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve" }
186-
// CHECK: attributes #[[ATTR3]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) "fmv-features" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
187-
// CHECK: attributes #[[ATTR4]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16) "fmv-features"="P0,P1,lse,sve2" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+lse,+sve,+sve2" }
188-
// CHECK: attributes #[[ATTR5]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16) "fmv-features"="P1,lse" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse" }
189-
// CHECK: attributes #[[ATTR6]] = { noinline nounwind vscale_range(1,16) "fmv-features"="P0,sve" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve" }
190-
// CHECK: attributes #[[ATTR7]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) vscale_range(1,16) "fmv-features" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
191-
// CHECK: attributes #[[ATTR8]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) "fmv-features"="aes" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+aes,+fp-armv8,+neon" }
192-
// CHECK: attributes #[[ATTR9]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) "fmv-features"="P0,P2,sm4" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+neon,+sm4" }
193-
// CHECK: attributes #[[ATTR10]] = { noinline nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+aes,+fp-armv8,+neon" }
194-
// CHECK: attributes #[[ATTR11]] = { mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+neon,+sm4" }
195-
// CHECK: attributes #[[ATTR12]] = { disable_sanitizer_instrumentation }
196-
// CHECK: attributes #[[ATTR13]] = { nounwind }
135+
// CHECK: attributes #[[ATTR0]] = { noinline nounwind optnone "fmv-features"="P1,P2,P3,P4,lse" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse" }
136+
// CHECK: attributes #[[ATTR1]] = { noinline nounwind optnone "fmv-features"="P2,P4,aes" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+aes,+fp-armv8,+neon" }
137+
// CHECK: attributes #[[ATTR2]] = { noinline nounwind optnone vscale_range(1,16) "fmv-features"="P1,P3,sve" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve" }
138+
// CHECK: attributes #[[ATTR3]] = { noinline nounwind optnone "fmv-features" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
139+
// CHECK: attributes #[[ATTR4]] = { noinline nounwind optnone "fmv-features"="P0,P1,sme" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fp-armv8,+fullfp16,+neon,+sme" }
140+
// CHECK: attributes #[[ATTR5]] = { noinline nounwind optnone "fmv-features"="P1,bti" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bti" }
141+
// CHECK: attributes #[[ATTR6]] = { noinline nounwind optnone "fmv-features"="P0,mops" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+mops" }
142+
// CHECK: attributes #[[ATTR7]] = { disable_sanitizer_instrumentation }
197143
//.
198144
// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
199145
// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
200-
// CHECK: [[META2:![0-9]+]] = !{[[META3:![0-9]+]], [[META3]], i64 0}
201-
// CHECK: [[META3]] = !{!"int", [[META4:![0-9]+]], i64 0}
202-
// CHECK: [[META4]] = !{!"omnipotent char", [[META5:![0-9]+]], i64 0}
203-
// CHECK: [[META5]] = !{!"Simple C/C++ TBAA"}
204146
//.

0 commit comments

Comments
 (0)