aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-12-19 14:58:17 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-12-19 14:58:17 +0000
commit1570e19df497e00a8565e53445961bf25db79725 (patch)
tree378594d74f7fc11a977f149d4410b2fcb69dce28
parent66825a3022e56e1bbe5308415c5b6cd9139597e9 (diff)
downloadgcc-1570e19df497e00a8565e53445961bf25db79725.zip
gcc-1570e19df497e00a8565e53445961bf25db79725.tar.gz
gcc-1570e19df497e00a8565e53445961bf25db79725.tar.bz2
re PR c++/83490 (ICE in find_call_stack_args, at dce.c:392)
PR c++/83490 * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P on an error node. * g++.dg/abi/pr83490.C: New test. From-SVN: r255824
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/abi/pr83490.C17
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f6af469..05e2a15 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-12-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83490
+ * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
+ on an error node.
+
2017-12-19 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (overriderregs): New variable.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b9f6e27..82a79bd 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -7218,7 +7218,7 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, /* Argument info to initialize */
bool seen_empty_type = false;
FOREACH_FUNCTION_ARGS (fntype, argtype, iter)
{
- if (VOID_TYPE_P (argtype))
+ if (argtype == error_mark_node || VOID_TYPE_P (argtype))
break;
if (TYPE_EMPTY_P (argtype))
seen_empty_type = true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9849fba..dd51941 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-12-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83490
+ * g++.dg/abi/pr83490.C: New test.
+
2017-12-19 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/83471
diff --git a/gcc/testsuite/g++.dg/abi/pr83490.C b/gcc/testsuite/g++.dg/abi/pr83490.C
new file mode 100644
index 0000000..850c4c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/pr83490.C
@@ -0,0 +1,17 @@
+// PR c++/83490
+// { dg-options "-Wabi" }
+
+struct A
+{
+ A foo(void i = 0); // { dg-error "incomplete type|invalid use" }
+};
+
+void bar()
+{
+ A().foo();
+}
+
+A A::foo(void i) // { dg-error "incomplete type|invalid use" }
+{
+ return A();
+}