On Sun, Nov 11, 2018 at 2:33 AM David Malcolm <dmalc...@redhat.com> wrote: > > PR ipa/87955 reports a problem I introduced in r265920, where I converted > the guard in report_inline_failed_reason from using: > if (dump_file) > to using > if (dump_enabled_p ()). > without updating the calls to cl_target_option_print_diff and > cl_optimization_print_diff, which assume that dump_file is non-NULL. > > The functions are auto-generated. Rather than porting them to the dump > API, this patch applies the workaround of adding the missing checks on > dump_file before calling them. > > Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. > > OK for trunk?
OK. Richard. > gcc/ChangeLog: > PR ipa/87955 > * ipa-inline.c (report_inline_failed_reason): Guard calls to > cl_target_option_print_diff and cl_optimization_print_diff with > if (dump_file). > > gcc/testsuite/ChangeLog: > PR ipa/87955 > * gcc.target/i386/pr87955.c: New test. > --- > gcc/ipa-inline.c | 14 ++++++++------ > gcc/testsuite/gcc.target/i386/pr87955.c | 10 ++++++++++ > 2 files changed, 18 insertions(+), 6 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/i386/pr87955.c > > diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c > index e04ede7..173808a 100644 > --- a/gcc/ipa-inline.c > +++ b/gcc/ipa-inline.c > @@ -244,13 +244,15 @@ report_inline_failed_reason (struct cgraph_edge *e) > e->callee->ultimate_alias_target > ()->lto_file_data->file_name); > } > if (e->inline_failed == CIF_TARGET_OPTION_MISMATCH) > - cl_target_option_print_diff > - (dump_file, 2, target_opts_for_fn (e->caller->decl), > - target_opts_for_fn (e->callee->ultimate_alias_target ()->decl)); > + if (dump_file) > + cl_target_option_print_diff > + (dump_file, 2, target_opts_for_fn (e->caller->decl), > + target_opts_for_fn (e->callee->ultimate_alias_target ()->decl)); > if (e->inline_failed == CIF_OPTIMIZATION_MISMATCH) > - cl_optimization_print_diff > - (dump_file, 2, opts_for_fn (e->caller->decl), > - opts_for_fn (e->callee->ultimate_alias_target ()->decl)); > + if (dump_file) > + cl_optimization_print_diff > + (dump_file, 2, opts_for_fn (e->caller->decl), > + opts_for_fn (e->callee->ultimate_alias_target ()->decl)); > } > } > > diff --git a/gcc/testsuite/gcc.target/i386/pr87955.c > b/gcc/testsuite/gcc.target/i386/pr87955.c > new file mode 100644 > index 0000000..ed87da6 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr87955.c > @@ -0,0 +1,10 @@ > +/* { dg-options "-O2 -fopt-info-inline-missed" } */ > + > +float a; > + > +__attribute__((__target__("fpmath=387"))) > +int b() { > + return a; > +} > + > +int c() { return b(); } /* { dg-missed "not inlinable: c/\[0-9\]* -> > b/\[0-9\]*, target specific option mismatch" } */ > -- > 1.8.5.3 >