Commit 9228f64c by David Malcolm Committed by David Malcolm

Fix ICE with -fopt-info-inline (PR ipa/87955)

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.

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.

From-SVN: r266079
parent be40afb2
2018-11-13 David Malcolm <dmalcolm@redhat.com> 2018-11-13 David Malcolm <dmalcolm@redhat.com>
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).
2018-11-13 David Malcolm <dmalcolm@redhat.com>
* doc/invoke.texi (-fsave-optimization-record): Note that the * doc/invoke.texi (-fsave-optimization-record): Note that the
output is compressed. output is compressed.
* optinfo-emit-json.cc: Include <zlib.h>. * optinfo-emit-json.cc: Include <zlib.h>.
...@@ -244,13 +244,15 @@ report_inline_failed_reason (struct cgraph_edge *e) ...@@ -244,13 +244,15 @@ report_inline_failed_reason (struct cgraph_edge *e)
e->callee->ultimate_alias_target ()->lto_file_data->file_name); e->callee->ultimate_alias_target ()->lto_file_data->file_name);
} }
if (e->inline_failed == CIF_TARGET_OPTION_MISMATCH) if (e->inline_failed == CIF_TARGET_OPTION_MISMATCH)
cl_target_option_print_diff if (dump_file)
(dump_file, 2, target_opts_for_fn (e->caller->decl), cl_target_option_print_diff
target_opts_for_fn (e->callee->ultimate_alias_target ()->decl)); (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) if (e->inline_failed == CIF_OPTIMIZATION_MISMATCH)
cl_optimization_print_diff if (dump_file)
(dump_file, 2, opts_for_fn (e->caller->decl), cl_optimization_print_diff
opts_for_fn (e->callee->ultimate_alias_target ()->decl)); (dump_file, 2, opts_for_fn (e->caller->decl),
opts_for_fn (e->callee->ultimate_alias_target ()->decl));
} }
} }
......
2018-11-13 David Malcolm <dmalcolm@redhat.com>
PR ipa/87955
* gcc.target/i386/pr87955.c: New test.
2018-11-12 Aldy Hernandez <aldyh@redhat.com> 2018-11-12 Aldy Hernandez <aldyh@redhat.com>
* gcc.dg/tree-ssa/pr64130.c: Adjust for new value_range pretty * gcc.dg/tree-ssa/pr64130.c: Adjust for new value_range pretty
......
/* { 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" } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment