backport: re PR c/59351 (ICE on empty compound literal with -pedantic)

Backport from mainline
	2013-12-03  Marek Polacek  <polacek@redhat.com>

	PR c/59351
	* c-decl.c (build_compound_literal): Allow compound literals with
	empty initial value.

From-SVN: r205632
This commit is contained in:
Marek Polacek 2013-12-03 13:52:12 +00:00 committed by Marek Polacek
parent d4ce14f16b
commit 0ada7fd51c
4 changed files with 28 additions and 1 deletions

View File

@ -1,3 +1,12 @@
2013-12-03 Marek Polacek <polacek@redhat.com>
Backport from mainline
2013-12-03 Marek Polacek <polacek@redhat.com>
PR c/59351
* c-decl.c (build_compound_literal): Allow compound literals with
empty initial value.
2013-12-01 Eric Botcazou <ebotcazou@adacore.com>
* config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an

View File

@ -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;

View File

@ -1,3 +1,11 @@
2013-12-03 Marek Polacek <polacek@redhat.com>
Backport from mainline
2013-12-03 Marek Polacek <polacek@redhat.com>
PR c/59351
* gcc.dg/pr59351.c: New test.
2013-11-28 Uros Bizjak <ubizjak@gmail.com>
Backport from mainline

View File

@ -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" } */
}