1- ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: -p --function-signature
1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: -p --function-signature --check-globals
22; RUN: opt -mtriple=wasm32-unknown-unknown -S --passes=expand-variadics --expand-variadics-override=optimize < %s | FileCheck %s --check-prefixes=OPT
33; RUN: opt -mtriple=wasm32-unknown-unknown -S --passes=expand-variadics --expand-variadics-override=lowering < %s | FileCheck %s --check-prefixes=ABI
44; REQUIRES: webassembly-registered-target
@@ -21,8 +21,8 @@ declare void @llvm.va_start(ptr)
2121declare void @llvm.va_end (ptr )
2222
2323declare void @decl_simple (...)
24- define void @defn_simple (...) {
25- ; OPT-LABEL: define {{[^@]+}}@defn_simple(...) {
24+ define void @defn_simple (...) !prof !0 {
25+ ; OPT-LABEL: define {{[^@]+}}@defn_simple(...) !prof !0 {
2626; OPT-NEXT: entry:
2727; OPT-NEXT: %va_start = alloca ptr, align 4
2828; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start)
@@ -32,7 +32,7 @@ define void @defn_simple(...) {
3232; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start)
3333; OPT-NEXT: ret void
3434;
35- ; ABI-LABEL: define {{[^@]+}}@defn_simple(ptr %varargs) {
35+ ; ABI-LABEL: define {{[^@]+}}@defn_simple(ptr %varargs) !prof !0 {
3636; ABI-NEXT: %va = alloca ptr, align 4
3737; ABI-NEXT: store ptr %varargs, ptr %va, align 4
3838; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -46,8 +46,8 @@ define void @defn_simple(...) {
4646}
4747
4848; no declare for private
49- define private void @defn_private_simple (...) {
50- ; OPT-LABEL: define {{[^@]+}}@defn_private_simple(...) {
49+ define private void @defn_private_simple (...) !prof !0 {
50+ ; OPT-LABEL: define {{[^@]+}}@defn_private_simple(...) !prof !0 {
5151; OPT-NEXT: entry:
5252; OPT-NEXT: %va_start = alloca ptr, align 4
5353; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start)
@@ -57,7 +57,7 @@ define private void @defn_private_simple(...) {
5757; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start)
5858; OPT-NEXT: ret void
5959;
60- ; ABI-LABEL: define {{[^@]+}}@defn_private_simple(ptr %varargs) {
60+ ; ABI-LABEL: define {{[^@]+}}@defn_private_simple(ptr %varargs) !prof !0 {
6161; ABI-NEXT: %va = alloca ptr, align 4
6262; ABI-NEXT: store ptr %varargs, ptr %va, align 4
6363; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -71,8 +71,8 @@ define private void @defn_private_simple(...) {
7171}
7272
7373; no declare for internal
74- define internal void @defn_internal_simple (...) {
75- ; OPT-LABEL: define {{[^@]+}}@defn_internal_simple(...) {
74+ define internal void @defn_internal_simple (...) !prof !0 {
75+ ; OPT-LABEL: define {{[^@]+}}@defn_internal_simple(...) !prof !0 {
7676; OPT-NEXT: entry:
7777; OPT-NEXT: %va_start = alloca ptr, align 4
7878; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start)
@@ -82,7 +82,7 @@ define internal void @defn_internal_simple(...) {
8282; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start)
8383; OPT-NEXT: ret void
8484;
85- ; ABI-LABEL: define {{[^@]+}}@defn_internal_simple(ptr %varargs) {
85+ ; ABI-LABEL: define {{[^@]+}}@defn_internal_simple(ptr %varargs) !prof !0 {
8686; ABI-NEXT: %va = alloca ptr, align 4
8787; ABI-NEXT: store ptr %varargs, ptr %va, align 4
8888; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -96,14 +96,14 @@ define internal void @defn_internal_simple(...) {
9696}
9797
9898; no declare for available_externally
99- define available_externally void @available_externally_simple (...) {
100- ; OPT-LABEL: define {{[^@]+}}@available_externally_simple(...) {
99+ define available_externally void @available_externally_simple (...) !prof !0 {
100+ ; OPT-LABEL: define {{[^@]+}}@available_externally_simple(...) !prof !0 {
101101; OPT-NEXT: %va = alloca ptr, align 4
102102; OPT-NEXT: call void @llvm.va_start.p0(ptr %va)
103103; OPT-NEXT: call void @sink_valist(ptr %va)
104104; OPT-NEXT: ret void
105105;
106- ; ABI-LABEL: define {{[^@]+}}@available_externally_simple(ptr %varargs) {
106+ ; ABI-LABEL: define {{[^@]+}}@available_externally_simple(ptr %varargs) !prof !0 {
107107; ABI-NEXT: %va = alloca ptr, align 4
108108; ABI-NEXT: store ptr %varargs, ptr %va, align 4
109109; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -117,14 +117,14 @@ define available_externally void @available_externally_simple(...) {
117117}
118118
119119; no declare for linkonce
120- define linkonce void @defn_linkonce_simple (...) {
121- ; OPT-LABEL: define {{[^@]+}}@defn_linkonce_simple(...) {
120+ define linkonce void @defn_linkonce_simple (...) !prof !0 {
121+ ; OPT-LABEL: define {{[^@]+}}@defn_linkonce_simple(...) !prof !0 {
122122; OPT-NEXT: %va = alloca ptr, align 4
123123; OPT-NEXT: call void @llvm.va_start.p0(ptr %va)
124124; OPT-NEXT: call void @sink_valist(ptr %va)
125125; OPT-NEXT: ret void
126126;
127- ; ABI-LABEL: define {{[^@]+}}@defn_linkonce_simple(ptr %varargs) {
127+ ; ABI-LABEL: define {{[^@]+}}@defn_linkonce_simple(ptr %varargs) !prof !0 {
128128; ABI-NEXT: %va = alloca ptr, align 4
129129; ABI-NEXT: store ptr %varargs, ptr %va, align 4
130130; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -138,14 +138,14 @@ define linkonce void @defn_linkonce_simple(...) {
138138}
139139
140140; no declare for weak
141- define weak void @defn_weak_simple (...) {
142- ; OPT-LABEL: define {{[^@]+}}@defn_weak_simple(...) {
141+ define weak void @defn_weak_simple (...) !prof !0 {
142+ ; OPT-LABEL: define {{[^@]+}}@defn_weak_simple(...) !prof !0 {
143143; OPT-NEXT: %va = alloca ptr, align 4
144144; OPT-NEXT: call void @llvm.va_start.p0(ptr %va)
145145; OPT-NEXT: call void @sink_valist(ptr %va)
146146; OPT-NEXT: ret void
147147;
148- ; ABI-LABEL: define {{[^@]+}}@defn_weak_simple(ptr %varargs) {
148+ ; ABI-LABEL: define {{[^@]+}}@defn_weak_simple(ptr %varargs) !prof !0 {
149149; ABI-NEXT: %va = alloca ptr, align 4
150150; ABI-NEXT: store ptr %varargs, ptr %va, align 4
151151; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -165,14 +165,14 @@ declare extern_weak void @decl_extern_weak_simple(...)
165165; no define for extern_weak
166166
167167; no declare for linkonce_odr
168- define linkonce_odr void @defn_linkonce_odr_simple (...) {
169- ; OPT-LABEL: define {{[^@]+}}@defn_linkonce_odr_simple(...) {
168+ define linkonce_odr void @defn_linkonce_odr_simple (...) !prof !0 {
169+ ; OPT-LABEL: define {{[^@]+}}@defn_linkonce_odr_simple(...) !prof !0 {
170170; OPT-NEXT: %va = alloca ptr, align 4
171171; OPT-NEXT: call void @llvm.va_start.p0(ptr %va)
172172; OPT-NEXT: call void @sink_valist(ptr %va)
173173; OPT-NEXT: ret void
174174;
175- ; ABI-LABEL: define {{[^@]+}}@defn_linkonce_odr_simple(ptr %varargs) {
175+ ; ABI-LABEL: define {{[^@]+}}@defn_linkonce_odr_simple(ptr %varargs) !prof !0 {
176176; ABI-NEXT: %va = alloca ptr, align 4
177177; ABI-NEXT: store ptr %varargs, ptr %va, align 4
178178; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -186,14 +186,14 @@ define linkonce_odr void @defn_linkonce_odr_simple(...) {
186186}
187187
188188; no declare for weak_odr
189- define weak_odr void @defn_weak_odr_simple (...) {
190- ; OPT-LABEL: define {{[^@]+}}@defn_weak_odr_simple(...) {
189+ define weak_odr void @defn_weak_odr_simple (...) !prof !0 {
190+ ; OPT-LABEL: define {{[^@]+}}@defn_weak_odr_simple(...) !prof !0 {
191191; OPT-NEXT: %va = alloca ptr, align 4
192192; OPT-NEXT: call void @llvm.va_start.p0(ptr %va)
193193; OPT-NEXT: call void @sink_valist(ptr %va)
194194; OPT-NEXT: ret void
195195;
196- ; ABI-LABEL: define {{[^@]+}}@defn_weak_odr_simple(ptr %varargs) {
196+ ; ABI-LABEL: define {{[^@]+}}@defn_weak_odr_simple(ptr %varargs) !prof !0 {
197197; ABI-NEXT: %va = alloca ptr, align 4
198198; ABI-NEXT: store ptr %varargs, ptr %va, align 4
199199; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -207,8 +207,8 @@ define weak_odr void @defn_weak_odr_simple(...) {
207207}
208208
209209declare external void @decl_external_simple (...)
210- define external void @defn_external_simple (...) {
211- ; OPT-LABEL: define {{[^@]+}}@defn_external_simple(...) {
210+ define external void @defn_external_simple (...) !prof !0 {
211+ ; OPT-LABEL: define {{[^@]+}}@defn_external_simple(...) !prof !0 {
212212; OPT-NEXT: entry:
213213; OPT-NEXT: %va_start = alloca ptr, align 4
214214; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start)
@@ -218,7 +218,7 @@ define external void @defn_external_simple(...) {
218218; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start)
219219; OPT-NEXT: ret void
220220;
221- ; ABI-LABEL: define {{[^@]+}}@defn_external_simple(ptr %varargs) {
221+ ; ABI-LABEL: define {{[^@]+}}@defn_external_simple(ptr %varargs) !prof !0 {
222222; ABI-NEXT: %va = alloca ptr, align 4
223223; ABI-NEXT: store ptr %varargs, ptr %va, align 4
224224; ABI-NEXT: call void @sink_valist(ptr %va)
@@ -230,3 +230,15 @@ define external void @defn_external_simple(...) {
230230 call void @llvm.va_end (ptr %va )
231231 ret void
232232}
233+
234+ !0 = !{!"function_entry_count" , i64 1000 }
235+ ;.
236+ ; OPT: attributes #0 = { nocallback nofree nosync nounwind willreturn }
237+ ; OPT: attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
238+ ;.
239+ ; ABI: attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
240+ ;.
241+ ; OPT: !0 = !{!"function_entry_count", i64 1000}
242+ ;.
243+ ; ABI: !0 = !{!"function_entry_count", i64 1000}
244+ ;.
0 commit comments