aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2018-01-17 21:40:46 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2018-01-17 20:40:46 +0000
commita99670f923dec07fe1b2813419f33e0cd18e091e (patch)
tree7639a782b167f2ec0ee7b30446cf912d8a1e8821
parent8fca809b59757519517e67a23b6df005e9e452dd (diff)
downloadgcc-a99670f923dec07fe1b2813419f33e0cd18e091e.zip
gcc-a99670f923dec07fe1b2813419f33e0cd18e091e.tar.gz
gcc-a99670f923dec07fe1b2813419f33e0cd18e091e.tar.bz2
re PR ipa/83051 (ICE on valid code at -O3: in edge_badness, at ipa-inline.c:1024)
PR ipa/83051 * ipa-inline.c (flatten_function): Do not overwrite final inlining failure. * gcc.c-torture/compile/pr83051-2.c: New testcase. From-SVN: r256818
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-inline.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr83051-2.c12
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6f30d4c..6091649 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-17 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/83051
+ * ipa-inline.c (flatten_function): Do not overwrite final inlining
+ failure.
+
2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 145ffbb..4a7181e 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -2083,7 +2083,8 @@ flatten_function (struct cgraph_node *node, bool early)
"Not inlining %s into %s to avoid cycle.\n",
xstrdup_for_dump (callee->name ()),
xstrdup_for_dump (e->caller->name ()));
- e->inline_failed = CIF_RECURSIVE_INLINING;
+ if (cgraph_inline_failed_type (e->inline_failed) != CIF_FINAL_ERROR)
+ e->inline_failed = CIF_RECURSIVE_INLINING;
continue;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a1ebfc3..fb0e919 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-17 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/83051
+ * gcc.c-torture/compile/pr83051-2.c: New testcase.
+
2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/81054
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr83051-2.c b/gcc/testsuite/gcc.c-torture/compile/pr83051-2.c
new file mode 100644
index 0000000..2bb2eaf
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr83051-2.c
@@ -0,0 +1,12 @@
+/* { dg-options "-fno-early-inlining" } */
+void
+bar ()
+{
+ bar (0);
+}
+
+__attribute__ ((flatten))
+void foo ()
+{
+ bar ();
+}