OSDN Git Service

* config/i386/i386.md (UNSPEC_VSIBADDR): New.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / stack-usage-1.c
1 /* { dg-do compile } */
2 /* { dg-options "-fstack-usage" } */
3
4 /* This is aimed at testing basic support for -fstack-usage in the back-ends.
5    See the SPARC back-end for example (grep flag_stack_usage_info in sparc.c).
6    Once it is implemented, adjust SIZE below so that the stack usage for the
7    function FOO is reported as 256 or 264 in the stack usage (.su) file.
8    Then check that this is the actual stack usage in the assembly file.  */
9
10 #if defined(__i386__)
11 #  define SIZE 248
12 #elif defined(__x86_64__)
13 #  define SIZE 356
14 #elif defined (__sparc__)
15 #  if defined (__arch64__)
16 #    define SIZE 76
17 #  else
18 #    define SIZE 160
19 #  endif
20 #elif defined(__hppa__)
21 #  define SIZE 192
22 #elif defined (__alpha__)
23 #  define SIZE 240
24 #elif defined (__ia64__)
25 #  define SIZE 272
26 #elif defined(__mips__)
27 #  if defined (__mips_abicalls) \
28       || (defined _MIPS_SIM && (_MIPS_SIM ==_ABIN32 || _MIPS_SIM==_ABI64))
29 #    define SIZE 240
30 #  else
31 #    define SIZE 248
32 #  endif
33 #elif defined (__powerpc64__) || defined (__ppc64__) || defined (__POWERPC64__) \
34       || defined (__PPC64__)
35 #  define SIZE 180
36 #elif defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) \
37       || defined (__POWERPC__) || defined (PPC) || defined (_IBMR2)
38 #  if defined (__ALTIVEC__)
39 #    if defined (__APPLE__)
40 #      define SIZE 204
41 #    else
42 #      define SIZE 220
43 #    endif
44 #  else
45 #    define SIZE 240
46 #  endif
47 #elif defined (__AVR__)
48 #  define SIZE 254
49 #elif defined (__s390x__)
50 #  define SIZE 96  /* 256 - 160 bytes for register save area */
51 #elif defined (__s390__)
52 #  define SIZE 160 /* 256 -  96 bytes for register save area */
53 #elif defined (__SPU__)
54 #  define SIZE 224
55 #else
56 #  define SIZE 256
57 #endif
58
59 int foo (void)
60 {
61   char arr[SIZE];
62   arr[0] = 1;
63   return 0;
64 }
65
66 /* { dg-final { scan-stack-usage "foo\t\(256|264\)\tstatic" } } */
67 /* { dg-final { cleanup-stack-usage } } */