From 060fbabfb9c4b3a671c58c5b8838d5580706d75a Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Sat, 7 Feb 1998 23:26:08 +0000 Subject: [PATCH] expr.c (clear_pending_stack_adjust): Handle case where a function calls alloca... * expr.c (clear_pending_stack_adjust): Handle case where a function calls alloca, but the user has specified -fomit-fframe-pointer. From-SVN: r17770 --- gcc/ChangeLog | 3 +++ gcc/expr.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f0198fd..e3e61f7e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Sun Feb 8 00:09:59 1998 Jeffrey A Law (law@cygnus.com) + * expr.c (clear_pending_stack_adjust): Handle case where a function + calls alloca, but the user has specified -fomit-fframe-pointer. + * function.c (assign_parms): Fix typo in last change. Sat Feb 7 23:54:29 1998 Robert Lipe diff --git a/gcc/expr.c b/gcc/expr.c index 4d927d7..74c6be5 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -9576,14 +9576,18 @@ init_pending_stack_adjust () } /* When exiting from function, if safe, clear out any pending stack adjust - so the adjustment won't get done. */ + so the adjustment won't get done. + + Note, if the current function calls alloca, then it must have a + frame pointer regardless of the value of flag_omit_frame_pointer. */ void clear_pending_stack_adjust () { #ifdef EXIT_IGNORE_STACK if (optimize > 0 - && ! flag_omit_frame_pointer && EXIT_IGNORE_STACK + && (! flag_omit_frame_pointer || current_function_calls_alloca) + && EXIT_IGNORE_STACK && ! (DECL_INLINE (current_function_decl) && ! flag_no_inline) && ! flag_inline_functions) pending_stack_adjust = 0; -- 2.7.4