On 11/12/18 3:28 AM, Qing Zhao wrote: > Hi, > > >> On Nov 10, 2018, at 2:51 AM, Martin Liška <mliska@xxxxxxx> wrote: >> >> On 11/9/18 6:43 PM, Qing Zhao wrote: >>> Hi, Martin, >>> >>> thanks a lot for the previous two new options for live-patching. >>> >>> >>> I have two more questions below: >> >> Hello. >> >>> >>> 1. do we still need new options to disable the following: >>> A. unreachable code/variable removal? >> >> I hope it's guarded with newly added option -fipa-reference-addressable. Correct me >> if I'm wrong. > > The followings are some previous discussions on this: > > “ >>>> >>>> We perform discovery of functions/variables with no address taken and >>>> optimizations that are not valid otherwise such as duplicating them >>>> or doing skipping them for alias analysis (no flag to disable) >>> >>> Can you be please more verbose here? What optimizations do you mean? > > See ipa_discover_readonly_nonaddressable_vars. If addressable bit is > cleared we start analyzing uses of the variable via ipa_reference or so. > If writeonly bit is set, we start removing writes to the variable and if > readonly bit is set we skip any analysis about whether vairable changed. > “ > > the new -fipa-reference-addressable is to control the above, seems not the unreachable code/variable removal? > >> >>> B. Visibility changes with -flto and/or -fwhole-program? >> >> The options are not used in linux kernel, thus I didn't consider. > > Okay, I see. > >> >>> >>> 2. for this new patch, could you please explain a little bit more on the problem? >> >> We want to enable a single option that will disable all possible (and future) optimizations >> that influence live patching. > > Okay, I see. > > I am also working on a similar option as yours, but make the -flive-patching as two level control: > > +flive-patching > +Common RejectNegative Alias(flive-patching=,inline-clone) > + > +flive-patching= > +Common Report Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_NONE) > +-flive-patching=[inline-only-static|inline-clone] Control optimizations to provide a safe comp for live-patching purpose. > > the implementation for -flive-patching=inline-clone (the default) is exactly as yours, the new level -flive-patching=inline-only-static > is to only enable inlining of static function for live patching, which is important for multiple-processes live patching to control memory > consumption. > > (please see my 2nd version of the -flive-patching proposal). > > I will send out my complete patch in another email. Hi, sure, works for me. Let's make 2 level option. Martin > > thanks. > > Qing > >