From 5147d10aa4b2b608a02fb885a5510c983e148f06 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Thu, 16 Jan 2014 11:42:56 +0000 Subject: [PATCH] re PR middle-end/59827 (ICE on array with incomplete element type) PR middle-end/59827 * cgraph.c (gimple_check_call_args): Don't use DECL_ARG_TYPE if it is error_mark_node. testsuite/ * gcc.dg/pr59827.c: New test. From-SVN: r206660 --- gcc/ChangeLog | 6 ++++++ gcc/cgraph.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr59827.c | 15 +++++++++++++++ 4 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr59827.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 255597fe539..0580d162613 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-16 Marek Polacek + + PR middle-end/59827 + * cgraph.c (gimple_check_call_args): Don't use DECL_ARG_TYPE if + it is error_mark_node. + 2014-01-15 Uros Bizjak * config/i386/i386.c (ix86_hard_regno_mode_ok): Use diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 09fb4cb3a51..92b31b92252 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -3035,6 +3035,7 @@ gimple_check_call_args (gimple stmt, tree fndecl, bool args_count_match) break; arg = gimple_call_arg (stmt, i); if (p == error_mark_node + || DECL_ARG_TYPE (p) == error_mark_node || arg == error_mark_node || (!types_compatible_p (DECL_ARG_TYPE (p), TREE_TYPE (arg)) && !fold_convertible_p (DECL_ARG_TYPE (p), arg))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a533d4f8154..7db83e6572c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-16 Marek Polacek + + PR middle-end/59827 + * gcc.dg/pr59827.c: New test. + 2014-01-16 Andreas Schwab * gcc.c-torture/execute/pr59747.c (fn1): Return a value. diff --git a/gcc/testsuite/gcc.dg/pr59827.c b/gcc/testsuite/gcc.dg/pr59827.c new file mode 100644 index 00000000000..77e1e9ca206 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59827.c @@ -0,0 +1,15 @@ +/* PR middle-end/59827 */ +/* { dg-do compile } */ + +int +foo (int p[2][]) /* { dg-error "array type has incomplete element type" } */ +{ + return p[0][0]; +} + +void +bar (void) +{ + int p[2][1]; + foo (p); /* { dg-error "type of formal parameter 1 is incomplete" } */ +} -- 2.30.2