@honza: PING On 10/3/18 12:53 PM, Martin Liška wrote: > On 10/3/18 11:04 AM, Jan Hubicka wrote: >>> >>> That was promised to be done by Honza Hubička. He's very skilled in IPA optimizations and he's aware >>> of optimizations that cause troubles for live-patching. >> >> :) I am not sure how skilful I am, but here is what I arrived to. > > Heh! Thanks for the analysis. > >> >> We have transformations that are modeled as clonning, which are >> - inlining (can't be disabled completely because of always inline, but -fno-inline >> does most of stuff) >> - cloning (disabled via -fno-ipa-cp) >> - ipa-sra (-fno-ipa-sra) >> - splitting (-fno-partial-inlining) >> These should play well with Martin's tracking code > > I hope so! > >> >> We propagate info about side effects of function: >> - function attribute discovery (pure, const, nothrow, malloc) >> Some of this can be disabled by -fno-ipa-pure-const, but not all >> of it. > > Would it be possible to add option for the remaining ones? > > Nothrow does not have flag but it is obviously not a concern >> for C++ > > s/C++/C? > >> - 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? > >> - inter-procedural register allocation (-fno-ipa-ra) >> >> 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? > >> >> Identical code folding merges function bodies that are semanticaly equivalent >> and thus one can't patch one without patching another, -fno-ipa-icf > > Agree, I recommend disabling that. > >> >> Unreachable code/variable removal may be concern too (no flag to disable) > > For functions that should be fine and handled by my script. > For variables can be problem when a variable becomes alive But that > should be extremely rare for live-patching. > >> >> Write only global variable discovery (no flag to dosable) > > Similarly. > >> >> Visibility changes with -flto and/or -fwhole-program >> >> We also have profile propagation (discovery of cuntions used only in cold regions, >> but that I guess is only performance issue not correctness) >> No flag to disable > > Hope these 2 does not happen for current Linux kernel. > > Martin > >> >> Honza >> >>> >>> Martin >>> >>>> >>>> thanks. >>>> >>>> Qing >>>> >>> >