diff options
author | Richard Guenther <rguenther@suse.de> | 2007-10-11 08:11:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-10-11 08:11:18 +0000 |
commit | 31b52b5a21ea72420cc11a9077843ad6cbc059a2 (patch) | |
tree | 1ad830132c4e994fd801417643c425df98ea1803 /gcc | |
parent | 50f0f3665baa3d351d1c15d62a5a93e56d3d3d7e (diff) | |
download | gcc-31b52b5a21ea72420cc11a9077843ad6cbc059a2.zip gcc-31b52b5a21ea72420cc11a9077843ad6cbc059a2.tar.gz gcc-31b52b5a21ea72420cc11a9077843ad6cbc059a2.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-typeck.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr33726.c | 17 |
4 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2568d6..0d1c15a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 0bad8e5..3d80ce2 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -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. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cb4f5d9..49f071b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/gcc.dg/pr33726.c b/gcc/testsuite/gcc.dg/pr33726.c new file mode 100644 index 0000000..e87cbc5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr33726.c @@ -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); +} + |