Hi Segher,
Thanks for the comments.
on 2023/1/4 18:46, Segher Boessenkool wrote:
> On Wed, Jan 04, 2023 at 05:20:14PM +0800, Kewen.Lin wrote:
>> As Honza pointed out in [1], the current uses of function
>> optimize_function_for_speed_p in rs6000_option_override_internal
>> are too early, since the query results from the functions
>> optimize_function_for_{speed,size}_p could be changed later due
>> to profile feedback and some function attributes handlings etc.
>>
>> This patch is to move optimize_function_for_speed_p to all the
>> use places of the corresponding flags, which follows the existing
>> practices. Maybe we can cache it somewhere at an appropriate
>> timing, but that's another thing.
>
>> @@ -25604,7 +25602,9 @@ rs6000_call_aix (rtx value, rtx func_desc, rtx
>> tlsarg, rtx cookie)
>>
>> /* Can we optimize saving the TOC in the prologue or
>> do we need to do it at every call? */
>> - if (TARGET_SAVE_TOC_INDIRECT && !cfun->calls_alloca)
>> + if (TARGET_SAVE_TOC_INDIRECT
>> + && !cfun->calls_alloca
>> + && optimize_function_for_speed_p (cfun))
>> cfun->machine->save_toc_in_prologue = true;
>
> Is this correct? If so, it really needs a separate testcase.
>
Yes, it just moves the condition from:
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -3978,8 +3978,7 @@ rs6000_option_override_internal (bool global_init_p)
/* If we can shrink-wrap the TOC register save separately, then use
-msave-toc-indirect unless explicitly disabled. */
if ((rs6000_isa_flags_explicit & OPTION_MASK_SAVE_TOC_INDIRECT) == 0
- && flag_shrink_wrap_separate
- && optimize_function_for_speed_p (cfun))
+ && flag_shrink_wrap_separate)
rs6000_isa_flags |= OPTION_MASK_SAVE_TOC_INDIRECT;
here.
I tried to find one test case before, but failed to find one which is not
fragile
to test. And I thought the associated test case has demonstrated why the use of
optimize_function_for_{speed,size}_p is too early in function
rs6000_option_override_internal, so I gave up then. Do you worry about that we
could revert it unexpectedly in future and no sensitive test case is on it?
BR,
Kewen