From: Jan Hubicka <hubicka@ucw.cz>
To: "Martin Liška" <mliska@suse.cz>
Cc: Qing Zhao <qing.zhao@oracle.com>, Miroslav Benes <mbenes@suse.cz>,
Martin Jambor <mjambor@suse.cz>,
live-patching@vger.kernel.org,
gcc Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH]Come up with -flive-patching master option.
Date: Fri, 16 Nov 2018 15:51:00 -0000 [thread overview]
Message-ID: <20181116155108.wjgy6kdf4qvsj2vk@kam.mff.cuni.cz> (raw)
In-Reply-To: <30e99713-0a96-3acb-ea5f-8f0996be69a6@suse.cz>
> On 11/16/18 2:36 AM, Qing Zhao wrote:
> > Hi,
> >
> > this is the new version of the patch.
> >
> > I have bootstrapped it on both aarch64 and x86, no regression.
> >
> > please take a look.
>
> Thanks for the updated version of the patch.
> I have last small nits I see:
>
> - gcc/common.opt: when running --help=common, the line is too long
> - gcc/doc/invoke.texi - 2 spaces in between sentences + better gol
> - gcc/opts.c - do not mix spaces + tabs
>
> With that I'm fine. But note that I'm not a maintainer :)
I wonder what happens, when I pass like -flive-patching -fwhole-program
compared to -fwhole-program -flive-patching.
It seems to me that in first case we will end up with whole-program
optimization while in the second we won't.
I guess we should behave in a way that we disable the passes when
they are enabled implicitly (such as by -O2) but output an error when
once uses contradicting set of options, lie -flive-patching
-fwhole-program?
Honza
>
> Thanks,
> Martin
>
> >
> > Okay for commit?
> >
> > thanks.
> >
> > Qing
> >
> > ==================================
> >
> > gcc/ChangeLog:
> >
> > 2018-11-15 qing zhao <qing.zhao@oracle.com>
> >
> > * cif-code.def (EXTERN_LIVE_ONLY_STATIC): New CIF code.
> > * common.opt: Add -flive-patching flag.
> > * doc/invoke.texi: Document -flive-patching.
> > * flag-types.h (enum live_patching_level): New enum.
> > * ipa-inline.c (can_inline_edge_p): Disable external functions from
> > inlining when flag_live_patching is LIVE_PATCHING_INLINE_ONLY_STATIC.
> > * opts.c (control_optimizations_for_live_patching): New function.
> > (finish_options): Make flag_live_patching incompatible with flag_lto.
> > (common_handle_option): Handle flive-patching flag.
> >
> > gcc/testsuite/ChangeLog:
> >
> > 2018-11-15 qing zhao <qing.zhao@oracle.com>
> >
> > * gcc.dg/live-patching-1.c: New test.
> > * gcc.dg/live-patching-2.c: New test.
> > * gcc.dg/tree-ssa/writeonly-3.c: New test.
> > * gcc.target/i386/ipa-stack-alignment-2.c: New test.
> >
> From e44d8b88ac5fb712d5b5e7fdf2f2ad7f43b8ea09 Mon Sep 17 00:00:00 2001
> From: marxin <mliska@suse.cz>
> Date: Fri, 16 Nov 2018 16:23:44 +0100
> Subject: [PATCH] my fixes.
>
> ---
> gcc/common.opt | 3 +--
> gcc/doc/invoke.texi | 8 ++++----
> gcc/opts.c | 2 +-
> 3 files changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/gcc/common.opt b/gcc/common.opt
> index 63cd6cc851d..35c24b8e8cf 100644
> --- a/gcc/common.opt
> +++ b/gcc/common.opt
> @@ -2187,8 +2187,7 @@ Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
> flive-patching=
> Common Report Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
> -flive-patching=[inline-only-static|inline-clone] Control IPA
> -optimizations to provide a safe compilation for live-patching. At the same
> -time, provides multiple-level control on the enabled IPA optimizations.
> +optimizations to provide a safe compilation for live-patching.
>
> Enum
> Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 0fb67163490..9cccc4455fa 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -9288,13 +9288,13 @@ impacted function of the former. If a function is patched, its impacted
> functions should be patched too.
>
> The impacted functions are decided by the compiler's interprocedural
> -optimizations. For example, inlining a function into its caller, cloning
> +optimizations. For example, inlining a function into its caller, cloning
> a function and changing its caller to call this new clone, or extracting
> a function's pureness/constness information to optimize its direct or
> indirect callers, etc.
>
> Usually, the more IPA optimizations enabled, the larger the number of
> -impacted functions for each function. In order to control the number of
> +impacted functions for each function. In order to control the number of
> impacted functions and computed the list of impacted function easily,
> we provide control to partially enable IPA optimizations on two different
> levels.
> @@ -9313,8 +9313,8 @@ callers need to be patched as well.
> @option{-flive-patching=inline-clone} disables the following optimization flags:
> @gccoptlist{-fwhole-program -fipa-pta -fipa-reference -fipa-ra @gol
> -fipa-icf -fipa-icf-functions -fipa-icf-variables @gol
> --fipa-bit-cp -fipa-vrp -fipa-pure-const -fipa-reference-addressable @gol
> --fipa-stack-alignment}
> +-fipa-bit-cp -fipa-vrp -fipa-pure-const @gol
> +-fipa-reference-addressable -fipa-stack-alignment}
>
> @item inline-only-static
>
> diff --git a/gcc/opts.c b/gcc/opts.c
> index 570155816e3..0b5e89faeee 100644
> --- a/gcc/opts.c
> +++ b/gcc/opts.c
> @@ -2347,7 +2347,7 @@ common_handle_option (struct gcc_options *opts,
>
> case OPT_flive_patching_:
> if (value)
> - control_optimizations_for_live_patching (opts, opts_set,
> + control_optimizations_for_live_patching (opts, opts_set,
> opts->x_flag_live_patching);
> break;
>
> --
> 2.19.1
>
next prev parent reply other threads:[~2018-11-16 15:51 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-18 18:58 [PATCH][Middle-end][Version 3]Add a new option to control inlining only on static functions Qing Zhao
2018-09-18 23:18 ` Martin Sebor
2018-09-19 15:07 ` Qing Zhao
2018-09-21 15:19 ` [PATCH][Middle-end][Version 4]Add " Qing Zhao
2018-09-26 1:01 ` PING: " Qing Zhao
2018-09-26 11:20 ` Alexander Monakov
2018-09-26 12:49 ` Paolo Carlini
2018-09-26 14:43 ` Qing Zhao
2018-09-26 15:18 ` Alexander Monakov
2018-09-26 23:07 ` Qing Zhao
2018-09-26 23:54 ` Alexander Monakov
2018-09-27 5:16 ` Qing Zhao
2018-09-27 7:46 ` Richard Biener
2018-09-27 16:30 ` Qing Zhao
2018-09-27 8:55 ` Alexander Monakov
2018-09-27 8:58 ` Jan Hubicka
2018-09-27 11:12 ` Richard Biener
2018-09-26 13:24 ` Jason Merrill
2018-09-26 13:31 ` Richard Biener
2018-09-26 13:40 ` Jason Merrill
2018-09-26 14:46 ` Jeff Law
2018-09-26 14:58 ` Jason Merrill
2018-09-26 15:10 ` Jan Hubicka
2018-09-26 17:12 ` Qing Zhao
2018-09-26 17:22 ` Jan Hubicka
2018-09-26 21:36 ` Qing Zhao
2018-09-27 9:47 ` Jan Hubicka
2018-09-27 12:29 ` GCC options for kernel live-patching (Was: Add a new option to control inlining only on static functions) Martin Jambor
2018-09-27 16:40 ` Qing Zhao
2018-10-01 17:14 ` Qing Zhao
2018-10-02 8:38 ` Martin Jambor
2018-10-02 14:00 ` Qing Zhao
2018-10-02 14:11 ` Martin Liška
2018-10-02 14:55 ` Qing Zhao
2018-10-02 14:59 ` Martin Liška
2018-10-02 15:24 ` Qing Zhao
2018-10-02 17:16 ` Martin Liška
2018-10-02 18:34 ` Richard Biener
2018-10-02 21:25 ` Qing Zhao
2018-10-03 9:05 ` Martin Liška
2018-10-03 10:53 ` Martin Jambor
2018-10-03 16:11 ` Qing Zhao
2018-10-04 13:20 ` Richard Biener
2018-10-18 19:36 ` [RFC] GCC support for live-patching Qing Zhao
2018-10-19 8:53 ` Bernhard Reutner-Fischer
2018-10-19 18:33 ` Qing Zhao
2018-10-24 21:16 ` Alexandre Oliva
2018-10-19 14:25 ` Andi Kleen
2018-10-19 18:33 ` Qing Zhao
2018-10-20 6:47 ` Andi Kleen
2018-10-22 13:07 ` Martin Jambor
2018-10-22 17:59 ` Qing Zhao
2018-10-22 15:36 ` Miroslav Benes
2018-10-22 21:01 ` Qing Zhao
2018-10-23 9:37 ` Miroslav Benes
2018-10-23 19:54 ` Qing Zhao
2018-10-24 13:17 ` Miroslav Benes
2018-10-23 13:37 ` Nicolai Stange
2018-10-23 20:34 ` Qing Zhao
2018-10-23 21:18 ` Nicolai Stange
2018-10-24 17:19 ` Qing Zhao
2018-10-31 22:04 ` [RFC] [2nd version] " Qing Zhao
2018-10-31 22:08 ` [RFC] " Qing Zhao
2018-10-03 9:23 ` GCC options for kernel live-patching (Was: Add a new option to control inlining only on static functions) Jan Hubicka
2018-10-03 11:27 ` Martin Liška
2018-10-22 10:49 ` Martin Liška
[not found] ` <20181105095135.j3mnzox6rkktkoto@kam.mff.cuni.cz>
2018-11-05 22:26 ` Qing Zhao
2018-11-07 14:22 ` Martin Liška
2018-11-07 14:27 ` Jan Hubicka
2018-11-07 14:44 ` Martin Liška
2018-11-08 14:59 ` Jan Hubicka
2018-11-09 15:33 ` [PATCH][RFC] Come up with -flive-patching master option Martin Liška
2018-11-09 17:43 ` Qing Zhao
2018-11-10 8:51 ` Martin Liška
2018-11-12 2:28 ` Qing Zhao
2018-11-12 8:53 ` Martin Liška
2018-11-12 22:29 ` Qing Zhao
2018-11-13 17:49 ` Qing Zhao
2018-11-13 19:18 ` Miroslav Benes
2018-11-13 21:16 ` Qing Zhao
2018-11-14 15:03 ` Martin Liška
2018-11-14 17:54 ` Qing Zhao
2018-11-15 8:41 ` Martin Liška
2018-11-15 15:41 ` Qing Zhao
2018-11-16 1:36 ` [PATCH]Come " Qing Zhao
2018-11-16 15:26 ` Martin Liška
2018-11-16 15:51 ` Jan Hubicka [this message]
2018-11-16 16:25 ` Qing Zhao
2018-11-16 16:05 ` Qing Zhao
2018-11-19 8:12 ` Martin Liška
[not found] ` <F78B52B9-9F9A-4FA0-91BF-A33307D87AA8@oracle.c! ! om>
2018-11-19 15:53 ` Qing Zhao
2018-11-20 12:10 ` Martin Liška
2018-11-20 15:32 ` [PATCH][Version 3]Come " Qing Zhao
2018-11-26 15:54 ` PING: " Qing Zhao
2018-11-30 17:04 ` [wwwdocs] [PATCH]introduce new -flive-patching master option into gcc9 Qing Zhao
2018-11-30 18:29 ` Jeff Law
2018-11-30 20:44 ` Qing Zhao
2018-11-28 15:52 ` [PATCH][Version 3]Come up with -flive-patching master option Jan Hubicka
2018-11-28 20:25 ` Qing Zhao
2018-11-29 16:16 ` Qing Zhao
2018-12-05 23:16 ` Question on Disable no throw for " Qing Zhao
2019-01-02 11:47 ` Martin Liška
2019-01-09 11:28 ` Martin Liška
2018-12-07 13:07 ` [PATCH][Version 3]Come up with " Rainer Orth
2018-12-07 15:14 ` Qing Zhao
2019-04-10 14:46 ` Jonathan Wakely
2019-04-10 19:24 ` Qing Zhao
2019-04-10 20:01 ` Jonathan Wakely
2019-04-11 8:11 ` Richard Biener
2018-11-14 22:05 ` [PATCH][RFC] Come " Miroslav Benes
[not found] ` <20181110170343.g3k7j7rlydid3ahr@kam.mff.cuni.cz>
2018-11-12 9:29 ` Martin Liška
2018-11-09 18:38 ` Bernhard Reutner-Fischer
2018-11-10 8:48 ` Martin Liška
2018-10-03 12:18 ` GCC options for kernel live-patching (Was: Add a new option to control inlining only on static functions) Martin Jambor
2018-10-03 16:00 ` Qing Zhao
2018-10-23 12:34 ` Performance impact of disabling non-clone IPA optimizations for the Linux kernel (was: "GCC options for kernel live-patching") Nicolai Stange
2018-10-24 14:30 ` Jiri Kosina
2018-10-24 14:44 ` Miroslav Benes
2018-09-27 16:32 ` [PATCH][Middle-end][Version 4]Add a new option to control inlining only on static functions Qing Zhao
2018-09-26 22:42 ` Qing Zhao
2018-09-26 16:02 ` Qing Zhao
2018-09-26 15:52 ` Qing Zhao
2018-09-26 16:02 ` Jan Hubicka
2018-09-26 18:51 ` Qing Zhao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181116155108.wjgy6kdf4qvsj2vk@kam.mff.cuni.cz \
--to=hubicka@ucw.cz \
--cc=gcc-patches@gcc.gnu.org \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=mjambor@suse.cz \
--cc=mliska@suse.cz \
--cc=qing.zhao@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).