Revert 2 ::get to ::get_create for IPA summaries (PR ipa/86279).

Message ID 8aafba28-a6d7-f7a6-467a-30c39c725666@suse.cz
State New
Headers show
Series
  • Revert 2 ::get to ::get_create for IPA summaries (PR ipa/86279).
Related show

Commit Message

Martin Liška June 29, 2018, 1:41 p.m.
Hi.

It's revert of a hunk that causes a new ICE in IPA summaries.
Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.

Ready to be installed?
Martin

gcc/ChangeLog:

2018-06-29  Martin Liska  <mliska@suse.cz>

        PR ipa/86279
	* ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
	(propagate_nothrow): Likewise.

gcc/testsuite/ChangeLog:

2018-06-29  Martin Liska  <mliska@suse.cz>

        PR ipa/86279
	* gcc.dg/ipa/pr86279.c: New test.
---
 gcc/ipa-pure-const.c               |  5 ++---
 gcc/testsuite/gcc.dg/ipa/pr86279.c | 25 +++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 3 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/ipa/pr86279.c

Comments

Jeff Law June 29, 2018, 3:03 p.m. | #1
On 06/29/2018 07:41 AM, Martin Liška wrote:
> Hi.

> 

> It's revert of a hunk that causes a new ICE in IPA summaries.

> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.

> 

> Ready to be installed?

> Martin

> 

> gcc/ChangeLog:

> 

> 2018-06-29  Martin Liska  <mliska@suse.cz>

> 

>         PR ipa/86279

> 	* ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.

> 	(propagate_nothrow): Likewise.

> 

> gcc/testsuite/ChangeLog:

> 

> 2018-06-29  Martin Liska  <mliska@suse.cz>

> 

>         PR ipa/86279

> 	* gcc.dg/ipa/pr86279.c: New test.

ISTM that if you're reverting something recent of your own that's
causing failures you ought to be able to revert without waiting.

Anyway, OK.

jeff

Patch

diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 714239f8734..dede783bd5f 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -923,8 +923,7 @@  malloc_candidate_p (function *fun, bool ipa)
 	  cgraph_edge *cs = node->get_edge (call_stmt);
 	  if (cs)
 	    {
-	      ipa_call_summary *es = ipa_call_summaries->get (cs);
-	      gcc_assert (es);
+	      ipa_call_summary *es = ipa_call_summaries->get_create (cs);
 	      es->is_return_callee_uncaptured = true;
 	    }
 	}
@@ -1803,7 +1802,7 @@  propagate_nothrow (void)
       w = node;
       while (w)
 	{
-	  funct_state w_l = funct_state_summaries->get (w);
+	  funct_state w_l = funct_state_summaries->get_create (w);
 	  if (!can_throw && !TREE_NOTHROW (w->decl))
 	    {
 	      /* Inline clones share declaration with their offline copies;
diff --git a/gcc/testsuite/gcc.dg/ipa/pr86279.c b/gcc/testsuite/gcc.dg/ipa/pr86279.c
new file mode 100644
index 00000000000..a9360213ec6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr86279.c
@@ -0,0 +1,25 @@ 
+/* PR ipa/86279 */
+/* { dg-do compile } */
+/* { dg-options "-fipa-pure-const" } */
+
+typedef __SIZE_TYPE__ size_t;
+extern inline __attribute__ ((__always_inline__))
+void *
+memset (void *x, int y, size_t z)
+{
+  return __builtin___memset_chk (x, y, z, __builtin_object_size (x, 0));
+}
+
+void
+foo (unsigned char *x, unsigned char *y, unsigned char *z,
+     unsigned char *w, unsigned int v, int u, int t)
+{
+  int i;
+  for (i = 0; i < t; i++)
+    {
+      memset (z, x[0], v);
+      memset (w, y[0], v);
+      x += u;
+    }
+  __builtin_memcpy (z, x, u);
+}