diff options
author | David Malcolm <dmalcolm@redhat.com> | 2018-11-13 15:59:57 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2018-11-13 15:59:57 +0000 |
commit | 9228f64cc2ceb54764a302103e3b754c0b6235a2 (patch) | |
tree | 74f795207b48d03aacd73cb423fc749de4062e8e /gcc/ipa-inline.c | |
parent | be40afb2b93a0f8f5739dd36c3c804e6f809d1d4 (diff) | |
download | gcc-9228f64cc2ceb54764a302103e3b754c0b6235a2.zip gcc-9228f64cc2ceb54764a302103e3b754c0b6235a2.tar.gz gcc-9228f64cc2ceb54764a302103e3b754c0b6235a2.tar.bz2 |
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
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r-- | gcc/ipa-inline.c | 14 |
1 files changed, 8 insertions, 6 deletions
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)); } } |