This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix ICE with -fopt-info-inline (PR ipa/87955)


On Sun, Nov 11, 2018 at 2:33 AM David Malcolm <dmalcolm@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
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]