diff mbox series

Disable ipa-modref with -flive-patching

Message ID 20200925220751.GB57232@kam.mff.cuni.cz
State New
Headers show
Series Disable ipa-modref with -flive-patching | expand

Commit Message

Jan Hubicka Sept. 25, 2020, 10:07 p.m. UTC
Hi,
ipa-modref propagates knowledge about callee to caller function. This is
not compatible with live patching and thus this patch makes
-flive-patching to imply -fno-ipa-modref.

Bootstrapped/regtested x86_64-linux, comitted.

gcc/ChangeLog:

2020-09-26  Jan Hubicka  <hubicka@ucw.cz>

	* doc/invoke.texi: Add -fno-ipa-modref to flags disabled by
	-flive-patching.
	* opts.c (control_options_for_live_patching): Disable ipa-modref.
diff mbox series

Patch

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 2091e0cd23b..226b0e1dc91 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -10879,7 +10879,7 @@  callers are impacted, therefore need to be patched as well.
 @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-stack-alignment -fipa-modref}
 
 @item inline-only-static
 
diff --git a/gcc/opts.c b/gcc/opts.c
index 3c4a0b540b4..3bda59afced 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -792,6 +792,13 @@  control_options_for_live_patching (struct gcc_options *opts,
       else
 	opts->x_flag_ipa_pure_const = 0;
 
+      if (opts_set->x_flag_ipa_modref && opts->x_flag_ipa_modref)
+	error_at (loc,
+		  "%<-fipa-modref%> is incompatible with "
+		  "%<-flive-patching=inline-only-static|inline-clone%>");
+      else
+	opts->x_flag_ipa_modref = 0;
+
       /* FIXME: disable unreachable code removal.  */
 
       /* discovery of functions/variables with no address taken.  */