>>> 
>>>>  - ipa-pta (disabled by default, -fno-ipa-pta)
>>>>  - ipa-reference (list of accessed/modified global vars), disable by 
>>>> -fno-ipa-refernece
>>>>  - stack alignment requirements (no flag to disable)
>>> 
>>> Would it be possible to add flag for it? Can you please point to a location 
>>> where
>>> the optimization happen?
> 
> In expand_call
> 
>  /* Figure out the amount to which the stack should be aligned.  */
>  preferred_stack_boundary = PREFERRED_STACK_BOUNDARY;
>  if (fndecl)
>    {
>      struct cgraph_rtl_info *i = cgraph_node::rtl_info (fndecl);
>      /* Without automatic stack alignment, we can't increase preferred
>         stack boundary.  With automatic stack alignment, it is
>         unnecessary since unless we can guarantee that all callers will
>         align the outgoing stack properly, callee has to align its
>         stack anyway.  */
>      if (i
>          && i->preferred_incoming_stack_boundary
>          && i->preferred_incoming_stack_boundary < preferred_stack_boundary)
>        preferred_stack_boundary = i->preferred_incoming_stack_boundary;
>    }
> 

As I checked, in the above, i->preferred_incoming_stack_boundary is set to 
non-zero
when "decl_binds_to_current_def_p ()” is TRUE as the following: (in 
rest_of_clean_state()
of final.c)

  /* We can reduce stack alignment on call site only when we are sure that
     the function body just produced will be actually used in the final
     executable.  */
  if (decl_binds_to_current_def_p (current_function_decl))
    {
      unsigned int pref = crtl->preferred_stack_boundary;
      if (crtl->stack_alignment_needed > crtl->preferred_stack_boundary)
        pref = crtl->stack_alignment_needed;
      cgraph_node::rtl_info (current_function_decl)
        ->preferred_incoming_stack_boundary = pref;
    }

It looks like that “decl_binds_to_current_def_p()”  will be FALSE when the 
routine
is live-patched, right? 
So, should we disable all the places that guided by 
“decl_binds_to_current_def_p()”? 

thanks.

Qing


Reply via email to