This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][RFC] Come up with -flive-patching master option.
Hi,
> On Nov 10, 2018, at 2:51 AM, Martin Liška <mliska@suse.cz> 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.
thanks.
Qing