cris: support -fstack-usage
authorHans-Peter Nilsson <hp@axis.com>
Wed, 24 Feb 2021 01:22:58 +0000 (02:22 +0100)
committerHans-Peter Nilsson <hp@axis.com>
Wed, 24 Feb 2021 17:38:29 +0000 (18:38 +0100)
All the bits were there, used with a pre-existing
-mmax-stackframe=SIZE which unfortunately seems to lack
test-cases.

Note that the early-return for -mno-prologue-epilogue (what
some targets call -mnaked) is deliberately not clearing
current_function_static_stack_size, as I consider that
erroneous usage but don't really care to emit a better error
message.

For stack-usage-1.c, like most ILP32 targets, CRIS (at -O0)
needs 4 bytes for the return-address.  The default size of
256 seems ill chosen but not worth fixing.

gcc:
* config/cris/cris.c (cris_expand_prologue): Set
current_function_static_stack_size, if flag_stack_usage_info.

gcc/testsuite:
* gcc.dg/stack-usage-1.c: Adjust for CRIS.

gcc/config/cris/cris.c
gcc/testsuite/gcc.dg/stack-usage-1.c

index 8a42aa1..0774ed8 100644 (file)
@@ -2892,8 +2892,13 @@ cris_expand_prologue (void)
       framesize += size + cfoa_size;
     }
 
+  /* FIXME: -mmax-stackframe=SIZE is obsoleted; use -Wstack-usage=SIZE
+     instead.  Make it an alias?  */
   if (cris_max_stackframe && framesize > cris_max_stackframe)
     warning (0, "stackframe too big: %d bytes", framesize);
+
+  if (flag_stack_usage_info)
+    current_function_static_stack_size = framesize;
 }
 
 /* The expander for the epilogue pattern.  */
index be1254a..93cfe7c 100644 (file)
 #define SIZE 252
 #elif defined (__csky__)
 #  define SIZE 252
+#elif defined (__CRIS__)
+#  define SIZE 252
 #else
 #  define SIZE 256
 #endif