aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-02-05 10:13:48 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2013-02-05 09:13:48 +0000
commitec4224ace54a5be0094fca263fe138f0ec77a61c (patch)
treec87abbd341862d805e335733b87d3d48afed3a67 /gcc
parent39f9719e9a6a8f061c8654f4e54d804f61a6f982 (diff)
downloadgcc-ec4224ace54a5be0094fca263fe138f0ec77a61c.zip
gcc-ec4224ace54a5be0094fca263fe138f0ec77a61c.tar.gz
gcc-ec4224ace54a5be0094fca263fe138f0ec77a61c.tar.bz2
re PR middle-end/55797 (ICE: verify_cgraph_node failed: edge has no corresponding call_stmt)
PR tree-optimization/55789 * g++.dg/tree-ssa/inline-1.C: Update max-inliner-iterations. * g++.dg/tree-ssa/inline-2.C: Update max-inliner-iterations. * g++.dg/tree-ssa/inline-3.C: Update max-inliner-iterations. * g++.dg/ipa/inline-1.C: New testcase. * g++.dg/ipa/inline-2.C: New testcase. * g++.dg/ipa/inline-3.C: New testcase. * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): Drop to 1. From-SVN: r195751
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/params.def2
-rw-r--r--gcc/testsuite/g++.dg/ipa/inline-1.C36
-rw-r--r--gcc/testsuite/g++.dg/ipa/inline-2.C36
-rw-r--r--gcc/testsuite/g++.dg/ipa/inline-3.C29
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/inline-1.C2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/inline-2.C2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/inline-3.C2
8 files changed, 111 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 59eaf48..8c480bb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,11 @@
2013-02-05 Jan Hubicka <jh@suse.cz>
- PR tree-optimization/r55789
+ PR tree-optimization/55789
+ * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): Drop to 1.
+
+2013-02-05 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55789
* cgraphclones.c (cgraph_remove_node_and_inline_clones): Remove
the dead call anyway.
diff --git a/gcc/params.def b/gcc/params.def
index 055b45a..97d4857 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -109,7 +109,7 @@ DEFPARAM (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY,
DEFPARAM (PARAM_EARLY_INLINER_MAX_ITERATIONS,
"max-early-inliner-iterations",
"The maximum number of nested indirect inlining performed by early inliner",
- 10, 0, 0)
+ 1, 0, 0)
/* Limit on probability of entry BB. */
DEFPARAM (PARAM_COMDAT_SHARING_PROBABILITY,
diff --git a/gcc/testsuite/g++.dg/ipa/inline-1.C b/gcc/testsuite/g++.dg/ipa/inline-1.C
new file mode 100644
index 0000000..b3dee08
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/inline-1.C
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-inline --param max-early-inliner-iterations=1" } */
+/* { dg-add-options bind_pic_locally } */
+
+namespace std {
+ extern "C" void puts(const char *s);
+}
+
+template <class T, class E> void
+foreach (T b, T e, void (*ptr)(E))
+{
+ for (; b != e; b++)
+ ptr(*b);
+}
+
+void
+inline_me (char *x)
+{
+ std::puts(x);
+}
+
+static void
+inline_me_too (char *x)
+{
+ std::puts(x);
+}
+
+int main(int argc, char **argv)
+{
+ foreach (argv, argv + argc, inline_me);
+ foreach (argv, argv + argc, inline_me_too);
+}
+
+/* { dg-final { scan-tree-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+/* { dg-final { scan-tree-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+/* { dg-final { cleanup-tree-dump "einline" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/inline-2.C b/gcc/testsuite/g++.dg/ipa/inline-2.C
new file mode 100644
index 0000000..fd284a1e2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/inline-2.C
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-inline --param max-early-inliner-iterations=1" } */
+/* { dg-add-options bind_pic_locally } */
+
+namespace std {
+ extern "C" void puts(const char *s);
+}
+
+template <class T, class E> void
+foreach (T b, T e, E ptr)
+{
+ for (; b != e; b++)
+ ptr(*b);
+}
+
+void
+inline_me (char *x)
+{
+ std::puts(x);
+}
+
+static void
+inline_me_too (char *x)
+{
+ std::puts(x);
+}
+
+int main(int argc, char **argv)
+{
+ foreach (argv, argv + argc, inline_me);
+ foreach (argv, argv + argc, inline_me_too);
+}
+
+/* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+/* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/inline-3.C b/gcc/testsuite/g++.dg/ipa/inline-3.C
new file mode 100644
index 0000000..602b140
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/inline-3.C
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-inline --param max-early-inliner-iterations=1" } */
+/* { dg-add-options bind_pic_locally } */
+
+#include <algorithm>
+
+void foo(const char *s);
+
+void
+inline_me (char *x)
+{
+ foo(x);
+}
+
+static void
+inline_me_too (char *x)
+{
+ foo(x);
+}
+
+int main(int argc, char **argv)
+{
+ std::for_each (argv, argv + argc, inline_me);
+ std::for_each (argv, argv + argc, inline_me_too);
+}
+
+/* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+/* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+/* { dg-final { cleanup-tree-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/inline-1.C b/gcc/testsuite/g++.dg/tree-ssa/inline-1.C
index 95b7d06..d8682be 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/inline-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/inline-1.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-einline" } */
+/* { dg-options "-O2 -fdump-tree-einline --param max-early-inliner-iterations=3" } */
/* { dg-add-options bind_pic_locally } */
namespace std {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/inline-2.C b/gcc/testsuite/g++.dg/tree-ssa/inline-2.C
index 656cba0..4c8a626 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/inline-2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/inline-2.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-einline" } */
+/* { dg-options "-O2 -fdump-tree-einline --param max-early-inliner-iterations=3" } */
/* { dg-add-options bind_pic_locally } */
namespace std {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/inline-3.C b/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
index f01f26c..512f83d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-einline" } */
+/* { dg-options "-O2 -fdump-tree-einline --param max-early-inliner-iterations=3" } */
/* { dg-add-options bind_pic_locally } */
#include <algorithm>