Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/stack-usage-1.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c Fri Oct 27 22:46:09 2017 +0900 @@ -0,0 +1,112 @@ +/* { dg-do compile } */ +/* { dg-options "-fstack-usage" } */ +/* nvptx doesn't have a reg allocator, and hence no stack usage data. */ +/* { dg-skip-if "" { nvptx-*-* } } */ + +/* This is aimed at testing basic support for -fstack-usage in the back-ends. + See the SPARC back-end for example (grep flag_stack_usage_info in sparc.c). + Once it is implemented, adjust SIZE below so that the stack usage for the + function FOO is reported as 256 or 264 in the stack usage (.su) file. + Then check that this is the actual stack usage in the assembly file. */ + +#if defined(__aarch64__) +# define SIZE 256 /* No frame pointer for leaf functions (default) */ +#elif defined(__arc__) +# define SIZE (256-4) +#elif defined(__i386__) +# define SIZE 248 +#elif defined(__x86_64__) +# ifndef _WIN64 +# define SIZE 356 +# else +# define SIZE (256 - 24) +# endif +#elif defined (__sparc__) +# if defined (__arch64__) +# define SIZE 76 +# else +# define SIZE 160 +# endif +#elif defined(__hppa__) +# define SIZE 192 +#elif defined (__alpha__) +# define SIZE 240 +#elif defined (__ia64__) +# define SIZE 272 +#elif defined(__mips__) +# if defined (__mips_abicalls) \ + || (defined _MIPS_SIM && (_MIPS_SIM ==_ABIN32 || _MIPS_SIM==_ABI64)) +# define SIZE 240 +# else +# define SIZE 248 +# endif +#elif defined (__nds32__) +# define SIZE 248 /* 256 - 8 bytes, only $fp and padding bytes are saved in + the register save area under O0 optimization level. */ +#elif defined (__powerpc64__) || defined (__ppc64__) || defined (__POWERPC64__) \ + || defined (__PPC64__) +# if _CALL_ELF == 2 +# define SIZE 208 +# else +# define SIZE 180 +# endif +#elif defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) \ + || defined (__POWERPC__) || defined (PPC) || defined (_IBMR2) +# if defined (__ALTIVEC__) +# if defined (__APPLE__) +# define SIZE 204 +# else +# define SIZE 220 +# endif +# elif defined (_AIX) +# define SIZE 208 +# else +# define SIZE 240 +# endif +#elif defined (__riscv) +# define SIZE 240 +#elif defined (__AVR__) +#if defined (__AVR_3_BYTE_PC__ ) +# define SIZE 251 /* 256 - 2 bytes for Y - 3 bytes for return address */ +#else +# define SIZE 252 /* 256 - 2 bytes for Y - 2 bytes for return address */ +#endif +#elif defined (__s390x__) +# define SIZE 96 /* 256 - 160 bytes for register save area */ +#elif defined (__s390__) +# define SIZE 160 /* 256 - 96 bytes for register save area */ +#elif defined (__SPU__) +# define SIZE 224 +#elif defined (__epiphany__) +# define SIZE (256 - __EPIPHANY_STACK_OFFSET__) +#elif defined (__RL78__) +# define SIZE 254 +#elif defined (__sh__) +# define SIZE 252 +#elif defined (__frv__) +# define SIZE 248 +#elif defined (xstormy16) +# define SIZE 254 +#elif defined (__nios2__) +# define SIZE 252 +#elif defined (__v850__) +#define SIZE 260 +#elif defined (__mn10300__) +#define SIZE 252 +#elif defined (__H8300SX__) || defined (__H8300S__) || defined (__H8300H__) || defined (__H8300__) +#define SIZE 252 +#elif defined (__M32R__) +#define SIZE 252 +#else +# define SIZE 256 +#endif + +int foo (void) +{ + char arr[SIZE]; + arr[0] = 1; + return 0; +} + +/* { dg-final { scan-stack-usage "foo\t\(256|264\)\tstatic" } } */ +/* { dg-final { cleanup-stack-usage } } */