re PR c/33726 (Type checking error with address-of and volatile and arrays)

2007-10-11  Richard Guenther  <rguenther@suse.de>

	PR c/33726
	* c-typeck.c (build_array_ref): Do not strip qualifiers from
	the array element type.

	* gcc.dg/pr33726.c: New testcase.

From-SVN: r129227
This commit is contained in:
Richard Guenther 2007-10-11 08:11:18 +00:00 committed by Richard Biener
parent 50f0f3665b
commit 31b52b5a21
4 changed files with 28 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2007-10-11 Richard Guenther <rguenther@suse.de>
PR c/33726
* c-typeck.c (build_array_ref): Do not strip qualifiers from
the array element type.
2007-10-11 Eric Botcazou <ebotcazou@libertysurf.fr>
PR rtl-optimization/33638

View file

@ -2113,8 +2113,6 @@ build_array_ref (tree array, tree index)
}
type = TREE_TYPE (TREE_TYPE (array));
if (TREE_CODE (type) != ARRAY_TYPE)
type = TYPE_MAIN_VARIANT (type);
rval = build4 (ARRAY_REF, type, array, index, NULL_TREE, NULL_TREE);
/* Array ref is const/volatile if the array elements are
or if the array is. */

View file

@ -1,3 +1,8 @@
2007-10-11 Richard Guenther <rguenther@suse.de>
PR c/33726
* gcc.dg/pr33726.c: New testcase.
2007-10-11 Uros Bizjak <ubizjak@gmail.com>
PR fortran/33500

View file

@ -0,0 +1,17 @@
/* { dg-do compile } */
/* We used to ICE here with type-checking enabled. */
typedef unsigned int U032;
typedef volatile struct X {
U032 Monochrome[1];
struct {
U032 WidthHeight;
} UnclippedRectangle[1];
} RivaBitmap;
void writel(void *);
void rivafb_fillrect(RivaBitmap *bm)
{
writel((void *)&bm->UnclippedRectangle[0].WidthHeight);
}