1f08c3bdfSopenharmony_ciextern int fun(int); 2f08c3bdfSopenharmony_ci 3f08c3bdfSopenharmony_citypedef int (*fun_t)(int); 4f08c3bdfSopenharmony_ci 5f08c3bdfSopenharmony_cifun_t fa(void) { return &fun; } 6f08c3bdfSopenharmony_cifun_t f0(void) { return fun; } 7f08c3bdfSopenharmony_cifun_t f1(void) { return *fun; } 8f08c3bdfSopenharmony_ci 9f08c3bdfSopenharmony_ci/* 10f08c3bdfSopenharmony_ci * check-name: degen-function 11f08c3bdfSopenharmony_ci * check-command: test-linearize -m64 -Wno-decl -fdump-ir=linearize $file 12f08c3bdfSopenharmony_ci * check-assert: sizeof(void *) == 8 13f08c3bdfSopenharmony_ci * 14f08c3bdfSopenharmony_ci * check-output-start 15f08c3bdfSopenharmony_cifa: 16f08c3bdfSopenharmony_ci.L0: 17f08c3bdfSopenharmony_ci <entry-point> 18f08c3bdfSopenharmony_ci symaddr.64 %r1 <- fun 19f08c3bdfSopenharmony_ci phisrc.64 %phi1(return) <- %r1 20f08c3bdfSopenharmony_ci br .L1 21f08c3bdfSopenharmony_ci 22f08c3bdfSopenharmony_ci.L1: 23f08c3bdfSopenharmony_ci phi.64 %r2 <- %phi1(return) 24f08c3bdfSopenharmony_ci ret.64 %r2 25f08c3bdfSopenharmony_ci 26f08c3bdfSopenharmony_ci 27f08c3bdfSopenharmony_cif0: 28f08c3bdfSopenharmony_ci.L2: 29f08c3bdfSopenharmony_ci <entry-point> 30f08c3bdfSopenharmony_ci symaddr.64 %r3 <- fun 31f08c3bdfSopenharmony_ci phisrc.64 %phi2(return) <- %r3 32f08c3bdfSopenharmony_ci br .L3 33f08c3bdfSopenharmony_ci 34f08c3bdfSopenharmony_ci.L3: 35f08c3bdfSopenharmony_ci phi.64 %r4 <- %phi2(return) 36f08c3bdfSopenharmony_ci ret.64 %r4 37f08c3bdfSopenharmony_ci 38f08c3bdfSopenharmony_ci 39f08c3bdfSopenharmony_cif1: 40f08c3bdfSopenharmony_ci.L4: 41f08c3bdfSopenharmony_ci <entry-point> 42f08c3bdfSopenharmony_ci symaddr.64 %r5 <- fun 43f08c3bdfSopenharmony_ci phisrc.64 %phi3(return) <- %r5 44f08c3bdfSopenharmony_ci br .L5 45f08c3bdfSopenharmony_ci 46f08c3bdfSopenharmony_ci.L5: 47f08c3bdfSopenharmony_ci phi.64 %r6 <- %phi3(return) 48f08c3bdfSopenharmony_ci ret.64 %r6 49f08c3bdfSopenharmony_ci 50f08c3bdfSopenharmony_ci 51f08c3bdfSopenharmony_ci * check-output-end 52f08c3bdfSopenharmony_ci */ 53