Commit 66189108 by Marek Polacek Committed by Marek Polacek

re PR c/68668 (bogus error: invalid use of array with unspecified bounds)

	PR c/68668
	* c-decl.c (grokdeclarator): If ORIG_QUAL_INDIRECT is indirect, use
	TREE_TYPE of ORIG_QUAL_TYPE, otherwise decrement ORIG_QUAL_INDIRECT.

	* gcc.dg/pr68668.c: New test.

From-SVN: r231374
parent 71e54687
2015-12-07 Marek Polacek <polacek@redhat.com>
PR c/68668
* c-decl.c (grokdeclarator): If ORIG_QUAL_INDIRECT is indirect, use
TREE_TYPE of ORIG_QUAL_TYPE, otherwise decrement ORIG_QUAL_INDIRECT.
2015-12-04 Eric Botcazou <ebotcazou@adacore.com>
* c-tree.h (c_build_va_arg): Adjust prototype.
......
......@@ -6417,6 +6417,13 @@ grokdeclarator (const struct c_declarator *declarator,
{
/* Transfer const-ness of array into that of type pointed to. */
type = TREE_TYPE (type);
if (orig_qual_type != NULL_TREE)
{
if (orig_qual_indirect == 0)
orig_qual_type = TREE_TYPE (orig_qual_type);
else
orig_qual_indirect--;
}
if (type_quals)
type = c_build_qualified_type (type, type_quals, orig_qual_type,
orig_qual_indirect);
......
2015-12-07 Marek Polacek <polacek@redhat.com>
PR c/68668
* gcc.dg/pr68668.c: New test.
2015-12-07 Vladimir Makarov <vmakarov@redhat.com>
* gcc.target/i386/pr68349.c (strlen): Rename to my_strlen.
......
/* PR c/68668 */
/* { dg-do compile } */
typedef const int T[];
typedef const int U[1];
int
fn1 (T p)
{
return p[0];
}
int
fn2 (U p[2])
{
return p[0][0];
}
int
fn3 (U p[2][3])
{
return p[0][0][0];
}
int
fn4 (U *p)
{
return p[0][0];
}
int
fn5 (U (*p)[1])
{
return (*p)[0][0];
}
int
fn6 (U (*p)[1][2])
{
return (*p)[0][0][0];
}
int
fn7 (U **p)
{
return p[0][0][0];
}
int
fn8 (U (**p)[1])
{
return (*p)[0][0][0];
}
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