On Thu, Oct 6, 2022 at 3:18 PM Qing Zhao <qing.z...@oracle.com> wrote: > > > > > On Oct 6, 2022, at 4:29 AM, Richard Biener <richard.guent...@gmail.com> > > wrote: > > > > On Wed, Oct 5, 2022 at 8:18 PM Qing Zhao via Gcc-patches > > <gcc-patches@gcc.gnu.org> wrote: > >> > >> > >> > >>> On Oct 5, 2022, at 1:36 PM, Martin Liška <mli...@suse.cz> wrote: > >>> > >>> On 10/5/22 16:50, Qing Zhao wrote: > >>>> I have two questions on this: > >>> > >>> Hello. > >>> > >>>> > >>>> 1. What’s the motivation to enable -flive-patching with -flto? Is there > >>>> any application that will try -flive-patching with -flto now? > >>> > >>> We're planning supporting GCC LTO Linux kernel support, so that's one > >>> motivation. And the second one is a possible > >>> use in user-space livepatching. Note majority of modern distros default > >>> to -flto (openSUSE, Fedora, Debian, Ubuntu, ...). > >> > >> Okay, I see. That’s reasonable. > >>> > >>>> > >>>> 2. Why only enable -flive-patching=inline-clone with -flto? > >>> > >>> Because the inline-only-static level (which you added/requested) would > >>> have to properly > >>> block inter-procedural inlining that happens in LTO > >>> (can_inline_edge_by_limits_p) and > >>> I'm not sure it would be properly blocked. So, feel free to extend my > >>> patch if you want? > >> > >> -flive-patching=inline-only-static > >> > >> Only enable static functions inlining, all the inlining of external > >> visible functions are blocked, So, LTO should be compatible with this > >> naturally without any issue, I think. > >> > >> i.e, when "-flive-patching=inline-only-static -flto" present together, > >> all the inter-procedural inlining should be automatically blocked by > >> -flive-patching=inline-only-static already. > >> > >> Do I miss anything here? > > > > WPA will promote externally visible functions static when all accesses > > are from LTO IR, I don't think we preserve > > the "original" visibility for IPA inlining heuristics. > > WPA is Whole Program Analysis?
Yes. > Okay, then It will promote all static function to extern functions. That’s > reasonable. No, all extern functions to static functions. > Is it hard to preserve the original “static” visibility in the IR? Probably not hard, and the IPA pass adjusting visbility could as well mark the functions as not to be inlined with -flive-patching=inline-only-static. > > > > OTOH inline-only-static could disable WPA inlining and do all inlining > > early ... > > Inline-only-static ONLY inlines static functions, how can it disable WPA > inlining? Don’t quite understand here. it's a flag so it can be used to control other things > thanks. > > Qing > > > > Richard, > > > >> > >> thanks. > >> > >> Qing > >> > >>> > >>> Martin > >>> > >>>> > >>>> thanks. >