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 <qing.z...@oracle.com >> <mailto:qing.z...@oracle.com>> 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 >