Add a new option -flive-patching={inline-only-static|inline-clone}
authorQing Zhao <qing.zhao@oracle.com>
Thu, 29 Nov 2018 16:06:03 +0000 (16:06 +0000)
committerQing Zhao <qinzhao@gcc.gnu.org>
Thu, 29 Nov 2018 16:06:03 +0000 (16:06 +0000)
commit6fd6a2ffee4bc790123d95fc7e638612aa0d7334
treef2ee949591c3fb81f413986103f972a776d98c52
parent4aff6d17446ade686d1746716906e8b32499a619
Add a new option -flive-patching={inline-only-static|inline-clone}
to support live patching in GCC.

2018-11-29  qing zhao  <qing.zhao@oracle.com>

gcc/ChangeLog:

* 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_options_for_live_patching): New function.
(finish_options): Make flag_live_patching incompatible with flag_lto.
Control IPA optimizations based on different levels of
flag_live_patching.

gcc/testsuite/ChangeLog:

* gcc.dg/live-patching-1.c: New test.
* gcc.dg/live-patching-2.c: New test.
* gcc.dg/live-patching-3.c: New test.
* gcc.dg/tree-ssa/writeonly-3.c: New test.
* gcc.target/i386/ipa-stack-alignment-2.c: New test.

From-SVN: r266627
13 files changed:
gcc/ChangeLog
gcc/cif-code.def
gcc/common.opt
gcc/doc/invoke.texi
gcc/flag-types.h
gcc/ipa-inline.c
gcc/opts.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/live-patching-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/live-patching-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/live-patching-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/writeonly-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/ipa-stack-alignment-2.c [new file with mode: 0644]