From: Marek Polacek Date: Tue, 3 Dec 2013 11:57:31 +0000 (+0000) Subject: re PR c/59351 (ICE on empty compound literal with -pedantic) X-Git-Tag: releases/gcc-4.9.0~2313 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=da0fc4547a3377430cbc522c4676cd1f707f32d2;p=thirdparty%2Fgcc.git re PR c/59351 (ICE on empty compound literal with -pedantic) PR c/59351 c/ * c-decl.c (build_compound_literal): Allow compound literals with empty initial value. testsuite/ * gcc.dg/pr59351.c: New test. From-SVN: r205627 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 42b0bb7db8e1..b97e65ec2494 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2013-12-03 Marek Polacek + + PR c/59351 + * c-decl.c (build_compound_literal): Allow compound literals with + empty initial value. + 2013-12-02 Joseph Myers PR c/58235 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 27be7fc1b031..3ebc002560eb 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -4693,7 +4693,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 c34641f1a17c..60019c9c8a58 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-03 Marek Polacek + + PR c/59351 + * gcc.dg/pr59351.c: New test. + 2013-12-03 Chung-Ju Wu * gcc.dg/20020312-2.c: Add __nds32__ case. 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" } */ +}