Commit ec3e6835 by Joseph Myers Committed by Joseph Myers

re PR c/15749 (--pedantic-errors behaves differently from --pedantic with C-compiler on Linux)

	PR c/15749
	* c-decl.c (grokdeclarator, finish_struct): Don't pedwarn for
	misuses of structures with flexible array members if
	in_system_header.

testsuite:
	* gcc.dg/pr15749-1.c, gcc.dg/pr15749-1.h: New test.

From-SVN: r82506
parent a4a90b84
2004-05-31 Joseph S. Myers <jsm@polyomino.org.uk>
PR c/15749
* c-decl.c (grokdeclarator, finish_struct): Don't pedwarn for
misuses of structures with flexible array members if
in_system_header.
2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr> 2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
PR target/15693 PR target/15693
......
...@@ -3928,7 +3928,7 @@ grokdeclarator (tree declarator, tree declspecs, ...@@ -3928,7 +3928,7 @@ grokdeclarator (tree declarator, tree declspecs,
type = error_mark_node; type = error_mark_node;
} }
if (pedantic && flexible_array_type_p (type)) if (pedantic && !in_system_header && flexible_array_type_p (type))
pedwarn ("invalid use of structure with flexible array member"); pedwarn ("invalid use of structure with flexible array member");
if (size == error_mark_node) if (size == error_mark_node)
...@@ -5204,7 +5204,7 @@ finish_struct (tree t, tree fieldlist, tree attributes) ...@@ -5204,7 +5204,7 @@ finish_struct (tree t, tree fieldlist, tree attributes)
} }
} }
if (pedantic && TREE_CODE (t) == RECORD_TYPE if (pedantic && !in_system_header && TREE_CODE (t) == RECORD_TYPE
&& flexible_array_type_p (TREE_TYPE (x))) && flexible_array_type_p (TREE_TYPE (x)))
pedwarn ("%Jinvalid use of structure with flexible array member", x); pedwarn ("%Jinvalid use of structure with flexible array member", x);
......
2004-05-31 Joseph S. Myers <jsm@polyomino.org.uk>
PR c/15749
* gcc.dg/pr15749-1.c, gcc.dg/pr15749-1.h: New test.
2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr> 2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.dg/sparc-trap-1.c: New test. * gcc.dg/sparc-trap-1.c: New test.
......
/* Flexible array misuses (that are accepted without -pedantic) should
be OK in system headers even with -pedantic-errors. PR 15749
from Tuomo dot Tikkanen at nokia dot com. */
/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
#include "pr15749-1.h"
/* Similar to c99-flex-array-3.c, but a system header so should not
have diagnostics even with -pedantic-errors. */
#pragma GCC system_header
struct flex { int a; int b[]; };
union rf1 { struct flex a; int b; };
union rf2 { int a; struct flex b; };
union rf3 { int a; union rf1 b; };
union rf4 { union rf2 a; int b; };
struct t0 { struct flex a; };
struct t1 { union rf1 a; };
struct t2 { union rf2 a; };
struct t3 { union rf3 a; };
struct t4 { union rf4 a; };
void f0 (struct flex[]);
void f1 (union rf1[]);
void f2 (union rf2[]);
void f3 (union rf3[]);
void f4 (union rf4[]);
struct flex a0[1];
union rf1 a1[1];
union rf2 a2[1];
union rf3 a3[1];
union rf4 a4[1];
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment