Honza: PING
On 12/6/18 12:16 AM, Qing Zhao wrote:
> Hi, Honza,
>
> I have one question relate to whether to disable nothrow for -flive-patching
> as following:
>
> actually, there are two passes here:
>
> 1. local nothrow pass: in this pass, nothrow attribute is set locally after
> analyzing every stmt of the function
> body:
>
> unsigned int
> pass_nothrow::execute (function *)
> {
> struct cgraph_node *node;
> basic_block this_block;
> …
>
> }
>
> 2. nothrow propagation pass: (it’s included in the ipa_pure_const pass as
> following, propagate the nothrow
> attribute along callcgraph)
>
> unsigned int
> pass_ipa_pure_const::
> execute (function *)
> {
> bool remove_p;
>
> /* Nothrow makes more function to not lead to return and improve
> later analysis. */
> propagate_nothrow ();
> propagate_malloc ();
> remove_p = propagate_pure_const ();
>
> delete funct_state_summaries;
> return remove_p ? TODO_remove_functions : 0;
> }
>
> the nothrow propagation pass is included in ipa_pure_const pass, and is
> guarded by flag_ipa_pure_const,
> this flag_ipa_pure_const is disabled when -flive-patching is ON.
>
>
> So, my question is:
>
> shall we disable local nothrow pass as well when -flive-patching is ON?
>
> my understanding is: we should.
>
> the reason is: the local nothrow pass is setting the nothrow attribute for
> the current routine based on its
> body, and this “nothrow” attribute will be used when generating EH code
> around callsite from the caller
> of the routine. so the nothrow attribute might impact other routines than the
> current routine. as a result,
> we should disable this pass?
>
> what’s your opinion on this?
>
> thanks.
>
> Qing
>
>> On Nov 28, 2018, at 2:24 PM, Qing Zhao <[email protected]
>> <mailto:[email protected]>> wrote:
>>>
>>> Shall we also disable nothrow or we will worry about C++ only ter?
>>
>> This is also mainly for C++ applications, so currently should not be a
>> problem.
>> But I can add a separate simple patch to add another flag to control nothrow
>> propagation and disable it when -flive-patching is ON.
>>
>>>
>>> Patch is OK,
>>
>> thanks for the review.
>>
>> I will commit the patch very soon.
>>
>> Qing
>>> thanks!
>>> Honza
>