> Hi. > > This is one very similar patch. > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? > Thanks, > Martin
> From adf577edd5a1d2b6ed78c1cc18feaff23fbfdd1c Mon Sep 17 00:00:00 2001 > From: marxin <mli...@suse.cz> > Date: Thu, 24 Jan 2019 16:07:29 +0100 > Subject: [PATCH] Revert yet another ::get_create for IPA summary (PR > ipa/88958). > > gcc/ChangeLog: > > 2019-01-24 Martin Liska <mli...@suse.cz> > > PR ipa/88958 > * ipa-fnsummary.c (estimate_edge_devirt_benefit): Use > ::get_create as the symbol can be not seen yet. Using get_create will create empty fnsummary which is invalid and we do not want to use it anyway, so turning get into get_creates is not right fix in general. Here you just want to return false if isummary is NULL. Honza > > gcc/testsuite/ChangeLog: > > 2019-01-24 Martin Liska <mli...@suse.cz> > > PR ipa/88958 > * gcc.dg/ipa/pr88985.c: New test. > --- > gcc/ipa-fnsummary.c | 2 +- > gcc/testsuite/gcc.dg/ipa/pr88985.c | 13 +++++++++++++ > 2 files changed, 14 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/gcc.dg/ipa/pr88985.c > > diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c > index 535b3f22d49..af741f04eb2 100644 > --- a/gcc/ipa-fnsummary.c > +++ b/gcc/ipa-fnsummary.c > @@ -2581,7 +2581,7 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie, > callee = callee->function_symbol (&avail); > if (avail < AVAIL_AVAILABLE) > return false; > - isummary = ipa_fn_summaries->get (callee); > + isummary = ipa_fn_summaries->get_create (callee); > return isummary->inlinable; > } > > diff --git a/gcc/testsuite/gcc.dg/ipa/pr88985.c > b/gcc/testsuite/gcc.dg/ipa/pr88985.c > new file mode 100644 > index 00000000000..8253a893cf6 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/ipa/pr88985.c > @@ -0,0 +1,13 @@ > +void f (void) > +{ > +} > +__attribute__((__optimize__("O2"))) > +void g (void f()) > +{ > + f(); > +} > +__attribute__((__optimize__("O2"))) > +void h (void) > +{ > + g(f); > +} > -- > 2.20.1 >