Commit 817aed6f by Nathan Sidwell Committed by Nathan Sidwell

re PR c++/11614 (Incorrect handling of pointers to arrays)

cp:
	PR c++/11614
	* decl.c (grokdeclarator): An array member is only a flexible
	array member if the field itself is the array.
testsuite:
	* g++.dg/ext/flexary1.C: New test.

From-SVN: r69673
parent a2f7be91
2003-07-22 Nathan Sidwell <nathan@codesourcery.com>
PR c++/11614
* decl.c (grokdeclarator): An array member is only a flexible
array member if the field itself is the array.
2003-07-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10793
......
......@@ -10615,14 +10615,18 @@ grokdeclarator (tree declarator,
register tree size;
size = TREE_OPERAND (declarator, 1);
declarator = TREE_OPERAND (declarator, 0);
/* VC++ spells a zero-sized array with []. */
/* C99 spells a flexible array member []. */
if (size == NULL_TREE && decl_context == FIELD && ! staticp
&& ! RIDBIT_SETP (RID_TYPEDEF, specbits))
&& ! RIDBIT_SETP (RID_TYPEDEF, specbits)
&& !(declarator &&
(TREE_CODE (declarator) == CALL_EXPR
|| TREE_CODE (declarator) == INDIRECT_REF
|| TREE_CODE (declarator) == ADDR_EXPR
|| TREE_CODE (declarator) == ARRAY_REF)))
size = integer_zero_node;
declarator = TREE_OPERAND (declarator, 0);
type = create_array_type_for_decl (dname, type, size);
ctype = NULL_TREE;
......
2003-07-22 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/ext/flexary1.C: New test.
2003-07-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10793
......
// { dg-do compile }
// Copyright (C) 2003 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 22 Jul 2003 <nathan@codesourcery.com>
// PR c++ 11614
typedef int ary_t[];
struct test
{
ary_t *b;
int (*a)[]; // this is not a flexible array member
};
void test(void)
{
struct test s;
int (*a)[] = 0;
ary_t *b = 0;
a = s.a;
a = s.b;
s.a = a;
s.b = a;
b = s.a;
b = s.b;
s.a = b;
s.b = b;
}
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