diff options
author | Marek Polacek <polacek@redhat.com> | 2015-11-05 18:21:30 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2015-11-05 18:21:30 +0000 |
commit | bfcfbfa0d18abea5f6ced6ec4de409aa3810733e (patch) | |
tree | ef71137066f2639805c87c5bb97d6e1665cf4a6f /gcc | |
parent | 5d819bb7c82fa999fd4a1da2a3afdf715667859c (diff) | |
download | gcc-bfcfbfa0d18abea5f6ced6ec4de409aa3810733e.zip gcc-bfcfbfa0d18abea5f6ced6ec4de409aa3810733e.tar.gz gcc-bfcfbfa0d18abea5f6ced6ec4de409aa3810733e.tar.bz2 |
re PR c/68090 (VLA compound literal -- "confused by earlier errors, bailing out")
PR c/68090
* c-parser.c (c_parser_postfix_expression_after_paren_type): Don't
deal with pre-evaluation on invalid types.
* gcc.dg/pr68090.c: New test.
From-SVN: r229823
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c/c-parser.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr68090.c | 13 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 9c39fd9..7839024 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2015-11-05 Marek Polacek <polacek@redhat.com> + + PR c/68090 + * c-parser.c (c_parser_postfix_expression_after_paren_type): Don't + deal with pre-evaluation on invalid types. + 2015-11-05 Jakub Jelinek <jakub@redhat.com> Ilya Verbin <ilya.verbin@intel.com> diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index ab324d3..e2f55b3 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -7855,7 +7855,7 @@ c_parser_postfix_expression_after_paren_type (c_parser *parser, expr.value = build_compound_literal (start_loc, type, init.value, non_const); expr.original_code = ERROR_MARK; expr.original_type = NULL; - if (type_expr) + if (type != error_mark_node && type_expr) { if (TREE_CODE (expr.value) == C_MAYBE_CONST_EXPR) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bcf9096..2727d7d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-11-05 Marek Polacek <polacek@redhat.com> + + PR c/68090 + * gcc.dg/pr68090.c: New test. + 2015-11-05 James Greenhalgh <james.greenhalgh@arm.com> * gcc.dg/ifcvt-4.c: New. diff --git a/gcc/testsuite/gcc.dg/pr68090.c b/gcc/testsuite/gcc.dg/pr68090.c new file mode 100644 index 0000000..87b3b93 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68090.c @@ -0,0 +1,13 @@ +/* PR c/68090 */ +/* { dg-do compile } */ +/* { dg-options "" } */ + +void +fn (int i) +{ + (int[(0, 1)]) { 0 }; /* { dg-error "compound literal has variable size" } */ + (int[i]) { 0 }; /* { dg-error "compound literal has variable size" } */ + (int[(0, i)]) { 0 }; /* { dg-error "compound literal has variable size" } */ + (int [][i]){ 0 }; /* { dg-error "compound literal has variable size" } */ + (int [][(1, 2)]){ 0 }; /* { dg-error "compound literal has variable size" } */ +} |