https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97448
Jiu Fu Guo <guojiufu at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |guojiufu at gcc dot gnu.org
--- Comment #2 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> ---
In rs6000-logue.cc, there are code to check if there are
something(var/vector/...) using stack. But the vars_size is adjusted under
these options, and then even if there are no vars, the 'vars_size' is not
'0'(it becomes padding size).
So, tune code:
unadjust_vars_size = info->vars_size;
if (FRAME_GROWS_DOWNWARD)
773 info->vars_size
774 += RS6000_ALIGN (info->fixed_size + info->vars_size +
info->parm_size,
775 ABI_STACK_BOUNDARY / BITS_PER_UNIT)
776 - (info->fixed_size + info->vars_size + info->parm_size);
unajust_non_fixed_size = unadjust_vars_size + info->parm_size +
info->save_size;
868 non_fixed_size = info->vars_size + info->parm_size + info->save_size;
919 info->push_p = non_fixed_size != 0; ==>
919 info->push_p = unajust_non_fixed_size != 0;
Sorry for not putting the patch here.