PR tree-optimization/81303
[official-gcc.git] / gcc / testsuite / gcc.dg / sibcall-6.c
blob8ee72cac4440b60b734073e18cabcaf303c3256f
1 /* A simple check to see whether indirect calls are
2 being sibcall optimized on targets that do support
3 this notion, i.e. have the according call patterns
4 in place.
6 Copyright (C) 2002 Free Software Foundation Inc.
7 Contributed by Andreas Bauer <baueran@in.tum.de> */
9 /* { dg-do run { target epiphany-*-* i?86-*-* x86_64-*-* s390*-*-* } } */
10 /* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ia32 && { ! nonpic } } } } */
11 /* { dg-options "-O2 -foptimize-sibling-calls -fno-ipa-cp" } */
13 extern void abort (void);
14 extern void exit (int);
16 int foo (int);
17 int bar (int);
19 int (*ptr) (int);
20 int *f_addr;
22 int
23 main ()
25 ptr = bar;
26 foo (7);
27 exit (0);
30 int __attribute__ ((noinline))
31 bar (b)
32 int b;
34 if (f_addr == (int*) __builtin_return_address (0))
35 return b;
36 else
37 abort ();
40 int __attribute__ ((noinline))
41 foo (f)
42 int f;
44 f_addr = (int*) __builtin_return_address (0);
45 return (*ptr)(f);