IPA: support -flto + -flive-patching=inline-clone
There's no fundamental reason why -flive-patching=inline-clone can't coexist with -flto. Yes, one can theoretically have many more clone function that includes a live patch. It is pretty much the same as in-module inlining. gcc/ChangeLog: * opts.cc (finish_options): Print sorry message only for -flive-patching=inline-only-static. gcc/testsuite/ChangeLog: * gcc.dg/live-patching-2.c: Update scanned pattern. * gcc.dg/live-patching-5.c: New test.
This commit is contained in:
parent
edbb2551d1
commit
1a308905c1
3 changed files with 13 additions and 4 deletions
|
@ -1288,8 +1288,9 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
|
|||
"%<-fsanitize=kernel-address%>");
|
||||
|
||||
/* Currently live patching is not support for LTO. */
|
||||
if (opts->x_flag_live_patching && opts->x_flag_lto)
|
||||
sorry ("live patching is not supported with LTO");
|
||||
if (opts->x_flag_live_patching == LIVE_PATCHING_INLINE_ONLY_STATIC && opts->x_flag_lto)
|
||||
sorry ("live patching (with %qs) is not supported with LTO",
|
||||
"inline-only-static");
|
||||
|
||||
/* Currently vtable verification is not supported for LTO */
|
||||
if (opts->x_flag_vtable_verify && opts->x_flag_lto)
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target lto } */
|
||||
/* { dg-options "-O2 -flive-patching -flto" } */
|
||||
/* { dg-options "-O2 -flive-patching=inline-only-static -flto" } */
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-message "sorry, unimplemented: live patching is not supported with LTO" "-flive-patching and -flto together" { target *-*-* } 0 } */
|
||||
/* { dg-message "sorry, unimplemented: live patching \\(with 'inline-only-static'\\) is not supported with LTO" "-flive-patching and -flto together" { target *-*-* } 0 } */
|
||||
|
|
8
gcc/testsuite/gcc.dg/live-patching-5.c
Normal file
8
gcc/testsuite/gcc.dg/live-patching-5.c
Normal file
|
@ -0,0 +1,8 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target lto } */
|
||||
/* { dg-options "-O2 -flive-patching -flto" } */
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue