re PR ipa/68790 (gcc.c-torture/execute/20050713-1.c FAILs with -O0 -fipa-icf)
authorMartin Liska <mliska@suse.cz>
Wed, 9 Dec 2015 09:34:59 +0000 (10:34 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Wed, 9 Dec 2015 09:34:59 +0000 (09:34 +0000)
Fix PR ipa/68790

PR ipa/68790
* ipa-icf.c (sem_function::param_used_p): Return true
if ipa_node_params_sum equals to NULL.
* gcc.dg/ipa/pr68790.c: New test.

From-SVN: r231446

gcc/ChangeLog
gcc/ipa-icf.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/ipa/pr68790.c [new file with mode: 0644]

index a3813b7cd01b71c2067eedc6706471f3ded98695..f465e22c675e9c2c1753ba0bc353cf056edcbf2d 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-09  Martin Liska  <mliska@suse.cz>
+
+       PR ipa/68790
+       * ipa-icf.c (sem_function::param_used_p): Return true
+       if ipa_node_params_sum equals to NULL.
+
 2015-12-09  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/68583
index 0029a48a61b1e70c9dded660134a957155d58431..889a07de697a47fb61823b5d760ba0ddb72a4cef 100644 (file)
@@ -544,7 +544,7 @@ bool
 sem_function::param_used_p (unsigned int i)
 {
   if (ipa_node_params_sum == NULL)
-    return false;
+    return true;
 
   struct ipa_node_params *parms_info = IPA_NODE_REF (get_node ());
 
index 68d9a2dcff416fd4a634b95f11993ae53452263d..1b017b760127e567df9912a001e04e1471c00e82 100644 (file)
@@ -1,3 +1,7 @@
+2015-12-09  Martin Liska  <mliska@suse.cz>
+
+       * gcc.dg/ipa/pr68790.c: New test.
+
 2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
 
        PR ipa/61886
diff --git a/gcc/testsuite/gcc.dg/ipa/pr68790.c b/gcc/testsuite/gcc.dg/ipa/pr68790.c
new file mode 100644 (file)
index 0000000..258c004
--- /dev/null
@@ -0,0 +1,40 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -fipa-icf -fdump-ipa-icf"  } */
+
+struct S
+{
+  int a;
+};
+
+int
+foo3 (struct S x, struct S y, struct S z)
+{
+  if (z.a != 9)
+    __builtin_abort ();
+  return 0;
+}
+
+int
+bar3 (struct S x, struct S y, struct S z)
+{
+  return foo3 (y, x, z);
+}
+
+int
+baz3 (struct S x, struct S y, struct S z)
+{
+  return foo3 (y, z, x);
+}
+
+int
+main (void)
+{
+  struct S
+    a = { 3 },
+    b = { 6 },
+    c = { 9 };
+
+  return bar3 (b, a, c);
+}
+
+/* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */