From: Marek Polacek Date: Tue, 3 Dec 2013 13:52:12 +0000 (+0000) Subject: backport: re PR c/59351 (ICE on empty compound literal with -pedantic) X-Git-Tag: releases/gcc-4.7.4~374 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ada7fd51c619ee06f724b03d84649586944e348;p=thirdparty%2Fgcc.git backport: re PR c/59351 (ICE on empty compound literal with -pedantic) Backport from mainline 2013-12-03 Marek Polacek PR c/59351 * c-decl.c (build_compound_literal): Allow compound literals with empty initial value. From-SVN: r205632 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3249195de5dc..649926ba2021 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-12-03 Marek Polacek + + Backport from mainline + 2013-12-03 Marek Polacek + + PR c/59351 + * c-decl.c (build_compound_literal): Allow compound literals with + empty initial value. + 2013-12-01 Eric Botcazou * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an diff --git a/gcc/c-decl.c b/gcc/c-decl.c index de46578e0bfb..2c3b8ac0ce82 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -4618,7 +4618,9 @@ build_compound_literal (location_t loc, tree type, tree init, bool non_const) { int failure = complete_array_type (&TREE_TYPE (decl), DECL_INITIAL (decl), true); - gcc_assert (!failure); + /* If complete_array_type returns 3, it means that the + initial value of the compound literal is empty. Allow it. */ + gcc_assert (failure == 0 || failure == 3); type = TREE_TYPE (decl); TREE_TYPE (DECL_INITIAL (decl)) = type; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 09ff06ffb554..2b24ea544f60 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-12-03 Marek Polacek + + Backport from mainline + 2013-12-03 Marek Polacek + + PR c/59351 + * gcc.dg/pr59351.c: New test. + 2013-11-28 Uros Bizjak Backport from mainline diff --git a/gcc/testsuite/gcc.dg/pr59351.c b/gcc/testsuite/gcc.dg/pr59351.c new file mode 100644 index 000000000000..384058f40418 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59351.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c99 -Wpedantic" } */ + +unsigned int +foo (void) +{ + return sizeof ((int[]) {}); /* { dg-warning "ISO C forbids empty initializer braces" } */ +}