summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-30 16:26:09 +0000
committerjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-30 16:26:09 +0000
commit76870d0c4fc737b8793349e53e0a8aab63e3df24 (patch)
treef6460af39d2f4f54a9cf53ee18228403a092a227
parent7773bde8de1f0af457dc8fba1a3e35ef7460109c (diff)
downloadppe42-gcc-76870d0c4fc737b8793349e53e0a8aab63e3df24.tar.gz
ppe42-gcc-76870d0c4fc737b8793349e53e0a8aab63e3df24.zip
2009-07-30 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/40570 * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single use inlining loops. * testsuite/gcc.c-torture/compile/pr40570.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150263 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-inline.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40570.c22
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ca374c343d1..f5b3ba34104 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-07-30 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/40570
+ * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
+ use inlining loops.
+
2009-07-30 Razya Ladelsky <razya@il.ibm.com>
* ssa-loop-manip.c: Include langhooks.h.
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 040096fa0d1..dde8181c86c 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -1227,6 +1227,8 @@ cgraph_decide_inlining (void)
&& !node->needed
&& node->local.inlinable
&& node->callers->inline_failed
+ && node->callers->caller != node
+ && node->callers->caller->global.inlined_to != node
&& !gimple_call_cannot_inline_p (node->callers->call_stmt)
&& !DECL_EXTERNAL (node->decl)
&& !DECL_COMDAT (node->decl))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e3b61034dc9..f86fc53c2fd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-30 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/40570
+ * gcc.c-torture/compile/pr40570.c: New test.
+
2009-07-29 Jason Merrill <jason@redhat.com>
PR c++/14912
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40570.c b/gcc/testsuite/gcc.c-torture/compile/pr40570.c
new file mode 100644
index 00000000000..7c3f4d83b2e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr40570.c
@@ -0,0 +1,22 @@
+extern void anything(int);
+
+static int foo(int i);
+
+static int bar(int i) { foo(i); }
+
+extern int j;
+
+static int foo(int i)
+{
+ if (j)
+ anything(j);
+ return bar(i);
+}
+
+int baz()
+{
+ foo(0);
+ if (baz())
+ return 1;
+ return 0;
+}
OpenPOWER on IntegriCloud