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.