From 0ef27747490f76e20b16f161c993443302578ecb Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Thu, 16 Jan 2014 14:59:46 +0000 Subject: [PATCH] re PR middle-end/59827 (ICE on array with incomplete element type) PR middle-end/59827 * gimple-low.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: r206665 --- gcc/ChangeLog | 9 +++++++++ gcc/gimple-low.c | 1 + gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/pr59827.c | 15 +++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr59827.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edcbb91e4002..1fd13ea2b012 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-01-16 Marek Polacek + + Backport from mainline + 2014-01-16 Marek Polacek + + PR middle-end/59827 + * gimple-low.c (gimple_check_call_args): Don't use DECL_ARG_TYPE if + it is error_mark_node. + 2014-01-14 Uros Bizjak Revert: diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c index 293d4d7b82b1..1f74512e7f69 100644 --- a/gcc/gimple-low.c +++ b/gcc/gimple-low.c @@ -249,6 +249,7 @@ gimple_check_call_args (gimple stmt, tree fndecl) 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 520a15ab9332..23c358b894e8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-01-16 Marek Polacek + + Backport from mainline + 2014-01-16 Marek Polacek + + PR middle-end/59827 + * gcc.dg/pr59827.c: New test. + 2014-01-10 Richard Earnshaw PR rtl-optimization/54300 diff --git a/gcc/testsuite/gcc.dg/pr59827.c b/gcc/testsuite/gcc.dg/pr59827.c new file mode 100644 index 000000000000..77e1e9ca2060 --- /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.47.2