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.

Reply via email to