Revert 2 ::get to ::get_create for IPA summaries (PR ipa/86279).
authorMartin Liska <mliska@suse.cz>
Mon, 2 Jul 2018 07:04:20 +0000 (09:04 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 2 Jul 2018 07:04:20 +0000 (07:04 +0000)
2018-07-02  Martin Liska  <mliska@suse.cz>

        PR ipa/86279
* ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
(propagate_nothrow): Likewise.
2018-07-02  Martin Liska  <mliska@suse.cz>

        PR ipa/86279
* gcc.dg/ipa/pr86279.c: New test.

From-SVN: r262298

gcc/ChangeLog
gcc/ipa-pure-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/ipa/pr86279.c [new file with mode: 0644]

index bc9edec62477dc3e3e09e0b7ce3068d44a096cf2..5c1b097c2af3a63b753908e9c4bc19d5e134c3e6 100644 (file)
@@ -1,3 +1,9 @@
+2018-07-02  Martin Liska  <mliska@suse.cz>
+
+        PR ipa/86279
+       * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
+       (propagate_nothrow): Likewise.
+
 2018-07-02  Martin Liska  <mliska@suse.cz>
 
         PR ipa/86323
index 714239f8734494d035c01305665a89a8fb47a123..dede783bd5f00f3144bb5f71772663267ca6981a 100644 (file)
@@ -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;
index 967956fd86e4e7fdf9c1639e0ccb3d773c068d59..a043fff2c8f1bca279f7558e6b0213c529897fd0 100644 (file)
@@ -1,3 +1,8 @@
+2018-07-02  Martin Liska  <mliska@suse.cz>
+
+        PR ipa/86279
+       * gcc.dg/ipa/pr86279.c: New test.
+
 2018-07-02  Martin Liska  <mliska@suse.cz>
 
         PR ipa/86323
diff --git a/gcc/testsuite/gcc.dg/ipa/pr86279.c b/gcc/testsuite/gcc.dg/ipa/pr86279.c
new file mode 100644 (file)
index 0000000..a936021
--- /dev/null
@@ -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);
+}