diff options
author | Marek Polacek <polacek@redhat.com> | 2017-12-19 14:58:17 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2017-12-19 14:58:17 +0000 |
commit | 1570e19df497e00a8565e53445961bf25db79725 (patch) | |
tree | 378594d74f7fc11a977f149d4410b2fcb69dce28 | |
parent | 66825a3022e56e1bbe5308415c5b6cd9139597e9 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/pr83490.C | 17 |
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(); +} |