1f08c3bdfSopenharmony_citypedef int (*fun_t)(void*);
2f08c3bdfSopenharmony_ci
3f08c3bdfSopenharmony_ciint foo(void *a, void *fun)
4f08c3bdfSopenharmony_ci{
5f08c3bdfSopenharmony_ci	return ((fun_t)fun)(a);
6f08c3bdfSopenharmony_ci}
7f08c3bdfSopenharmony_ci
8f08c3bdfSopenharmony_ciint bar(void *a, void *fun)
9f08c3bdfSopenharmony_ci{
10f08c3bdfSopenharmony_ci	return ((int (*)(void *))fun)(a);
11f08c3bdfSopenharmony_ci}
12f08c3bdfSopenharmony_ci
13f08c3bdfSopenharmony_ciint qux(void *a, void *fun)
14f08c3bdfSopenharmony_ci{
15f08c3bdfSopenharmony_ci	return (*(fun_t)fun)(a);
16f08c3bdfSopenharmony_ci}
17f08c3bdfSopenharmony_ci
18f08c3bdfSopenharmony_ciint quz(void *a, void *fun)
19f08c3bdfSopenharmony_ci{
20f08c3bdfSopenharmony_ci	return (*(int (*)(void *))fun)(a);
21f08c3bdfSopenharmony_ci}
22f08c3bdfSopenharmony_ci
23f08c3bdfSopenharmony_ci/*
24f08c3bdfSopenharmony_ci * check-name: call via casted function pointer
25f08c3bdfSopenharmony_ci * check-command: test-linearize -Wno-decl $file
26f08c3bdfSopenharmony_ci *
27f08c3bdfSopenharmony_ci * check-output-ignore
28f08c3bdfSopenharmony_ci * check-output-excludes: load
29f08c3bdfSopenharmony_ci * check-output-pattern(4): ptrcast\\..* %arg2
30f08c3bdfSopenharmony_ci * check-output-pattern(4): call\\..* %arg1
31f08c3bdfSopenharmony_ci */
32