diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 120b50eae092..6dc807bb4ca9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Hariharan Sandanagobalane + + * config/picochip/picochip.c (flag_conserve_stack): set + PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under + fconserve-stack. Reduce call-overhead used by inliner. + Hariharan Sandanagobalane PR/38157 diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c index 36170421d191..a0686bdb262b 100644 --- a/gcc/config/picochip/picochip.c +++ b/gcc/config/picochip/picochip.c @@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not, see #include "target-def.h" #include "langhooks.h" #include "reload.h" +#include "params.h" #include "picochip-protos.h" @@ -303,6 +304,16 @@ picochip_return_in_memory(const_tree type, const_tree fntype ATTRIBUTE_UNUSED) void picochip_override_options (void) { + /* If we are optimizing for stack, dont let inliner to inline functions + that could potentially increase stack size.*/ + if (flag_conserve_stack) + { + PARAM_VALUE (PARAM_LARGE_STACK_FRAME) = 0; + PARAM_VALUE (PARAM_STACK_FRAME_GROWTH) = 0; + } + /* The function call overhead on picochip is not very high. Let the + inliner know so its heuristics become more reasonable. */ + PARAM_VALUE (PARAM_INLINE_CALL_COST) = 2; /* Turn off the elimination of unused types. The elaborator generates various interesting types to represent constants,