From: Eric Botcazou Date: Wed, 9 Nov 2005 23:28:59 +0000 (+0000) Subject: function.c (assign_stack_local_1): Issue an error message if the frame size overflows... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9070115b6c6db4a9aba7745854cc37b15a88c601;p=gcc.git function.c (assign_stack_local_1): Issue an error message if the frame size overflows in the signed target arithmetics. * function.c (assign_stack_local_1): Issue an error message if the frame size overflows in the signed target arithmetics. From-SVN: r106717 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b3e05f39c12..ea221506610 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-11-09 Eric Botcazou + + * function.c (assign_stack_local_1): Issue an error message if + the frame size overflows in the signed target arithmetics. + 2005-11-09 Eric Botcazou * tree.c (build_qualified_type): Chain the new type to the original diff --git a/gcc/function.c b/gcc/function.c index 9e36af74d72..963ad4f1e94 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -479,6 +479,19 @@ assign_stack_local_1 (enum machine_mode mode, HOST_WIDE_INT size, int align, function->x_stack_slot_list = gen_rtx_EXPR_LIST (VOIDmode, x, function->x_stack_slot_list); + /* Try to detect frame size overflows. */ + if ((FRAME_GROWS_DOWNWARD + ? (unsigned HOST_WIDE_INT) -function->x_frame_offset + : (unsigned HOST_WIDE_INT) function->x_frame_offset) + > ((unsigned HOST_WIDE_INT) 1 << (BITS_PER_WORD - 1)) + /* Leave room for the fixed part of the frame. */ + - 64 * UNITS_PER_WORD) + { + error ("%Jtotal size of local objects too large", function->decl); + /* Avoid duplicate error messages as much as possible. */ + function->x_frame_offset = 0; + } + return x; }