bfin.c (bfin_expand_prologue): Set current_function_static_stack_size if flag_stack_u...
authorNick Clifton <nickc@redhat.com>
Thu, 25 Jun 2015 12:33:14 +0000 (12:33 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Thu, 25 Jun 2015 12:33:14 +0000 (12:33 +0000)
     * config/bfin/bfin.c (bfin_expand_prologue): Set
     current_function_static_stack_size if flag_stack_usage_info is
     set.
     * config/ft32/ft32.c (ft32_expand_prologue): Likewise.
     * config/h8300/h8300.c (h8300_expand_prologue): Likewise.
     * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
     * config/m32c/m32c.c (m32c_emit_prologue): Likewise.

test * gcc.dg/stack-usage-1.c: Add SIZE values for V850, MN10300,
     H8300 and M32R targets.

From-SVN: r224937

gcc/ChangeLog
gcc/config/bfin/bfin.c
gcc/config/ft32/ft32.c
gcc/config/ft32/ft32.h
gcc/config/h8300/h8300.c
gcc/config/iq2000/iq2000.c
gcc/config/m32c/m32c.c
gcc/config/m32r/m32r.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/stack-usage-1.c

index 5e8c7f85d8483f2396ba465bb8e18d3bd8804a31..f51931079db617700a2df54dd8f86756a78be01c 100644 (file)
@@ -1,3 +1,13 @@
+2015-06-25  Nick Clifton  <nickc@redhat.com>
+
+       * config/bfin/bfin.c (bfin_expand_prologue): Set
+       current_function_static_stack_size if flag_stack_usage_info is
+        set.
+       * config/ft32/ft32.c (ft32_expand_prologue): Likewise.
+       * config/h8300/h8300.c (h8300_expand_prologue): Likewise.
+       * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
+       * config/m32c/m32c.c (m32c_emit_prologue): Likewise.
+
 2015-06-25  Tom de Vries  <tom@codesourcery.com>
 
        * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Don't claim in header
index 594272ff12fe2db3804bd0341a82da749f92f496..dade478541fc290517f19734bf3bbc5dd61c0ee4 100644 (file)
@@ -1090,6 +1090,9 @@ bfin_expand_prologue (void)
   tree attrs = TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl));
   bool all = lookup_attribute ("saveall", attrs) != NULL_TREE;
 
+  if (flag_stack_usage_info)
+    current_function_static_stack_size = frame_size;
+
   if (fkind != SUBROUTINE)
     {
       expand_interrupt_handler_prologue (spreg, fkind, all);
index bc18c23fd839ff64f0fc61dad8e4b3478379a57f..1630c9c04c4c97fef168c3a6b12f45fba9d2f0c9 100644 (file)
@@ -59,7 +59,7 @@
 #include "basic-block.h"
 #include "df.h"
 #include "builtins.h"
-
+#include "emit-rtl.h"
 
 #include <stdint.h>
 
@@ -199,7 +199,7 @@ ft32_print_operand (FILE * file, rtx x, int code)
       return;
 
     case 'm':
-      fprintf (file, "%d", -INTVAL(x));
+      fprintf (file, "%ld", (long) (- INTVAL(x)));
       return;
 
     case 'd':                   // a DW spec, from an integer alignment (for BLKmode insns)
@@ -456,6 +456,9 @@ ft32_expand_prologue (void)
 
   ft32_compute_frame ();
 
+  if (flag_stack_usage_info)
+    current_function_static_stack_size = cfun->machine->size_for_adjusting_sp;
+
   if (!must_link () && (cfun->machine->callee_saved_reg_size == 4))
     {
       insn =
index 0835aaef2865e0f7d30c482416984f0cb0b008b4..a1722a88c0da6659cb563bd62efb7a172ca8fe59 100644 (file)
@@ -248,7 +248,7 @@ enum reg_class
 
 /* Define this macro if pushing a word onto the stack moves the stack
    pointer to a smaller address.  */
-#define STACK_GROWS_DOWNWARD
+#define STACK_GROWS_DOWNWARD 1
 
 #define INITIAL_FRAME_POINTER_OFFSET(DEPTH) (DEPTH) = 0
 
index 8a8ff53c05c17d390cc8bf227cff7a2a41bf951c..4c7828a7131ba1a1e11641db4f735a918645f75b 100644 (file)
@@ -896,6 +896,12 @@ h8300_expand_prologue (void)
 
   /* Leave room for locals.  */
   h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()), true);
+
+  if (flag_stack_usage_info)
+    current_function_static_stack_size
+      = round_frame_size (get_frame_size ())
+      + (__builtin_popcount (saved_regs) * UNITS_PER_WORD)
+      + (frame_pointer_needed ? UNITS_PER_WORD : 0);
 }
 
 /* Return nonzero if we can use "rts" for the function currently being
index 518a6da23c1e088735aac0e88e5306661cd26b13..a16add75e32b406f3a508286cc390a58148bfb1c 100644 (file)
@@ -2072,6 +2072,9 @@ iq2000_expand_prologue (void)
        }
     }
 
+  if (flag_stack_usage_info)
+    current_function_static_stack_size = cfun->machine->total_size;
+
   emit_insn (gen_blockage ());
 }
 \f
index 10e53e4563f163d46f5426b9e7659060acd7531e..83209aa2a3702303446c9e6dce52c3aaa5a6b570 100644 (file)
@@ -4123,6 +4123,9 @@ m32c_emit_prologue (void)
       && !m32c_function_needs_enter ())
     cfun->machine->use_rts = 1;
 
+  if (flag_stack_usage_info)
+    current_function_static_stack_size = frame_size;
+  
   if (frame_size > 254)
     {
       extra_frame_size = frame_size - 254;
index bf88ef2633293b1aa232c982e8a6fbebd933d4c0..cc40b4578b0433aca7831f57845f0e44e5c5e66c 100644 (file)
@@ -1665,6 +1665,9 @@ m32r_expand_prologue (void)
   if (! current_frame_info.initialized)
     m32r_compute_frame_size (get_frame_size ());
 
+  if (flag_stack_usage_info)
+    current_function_static_stack_size = current_frame_info.total_size;
+
   gmask = current_frame_info.gmask;
 
   /* These cases shouldn't happen.  Catch them now.  */
index 699e70c4a8540aa6b24482230f86613bd20c3b0a..cb0c5bc5eea9e0ce1b54a62af22ddba15b3115b3 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-25  Nick Clifton  <nickc@redhat.com>
+
+       * gcc.dg/stack-usage-1.c: Add SIZE values for V850, MN10300,
+       H8300 and M32R targets.
+
 2015-06-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR fortran/66528
index 05e3df7bef0b857cb246e3a8b6d2f4c53ad23716..55edc7ec61f448c97d9df22a10ca5c9aac58880a 100644 (file)
 #  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