aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-10-11 08:11:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-10-11 08:11:18 +0000
commit31b52b5a21ea72420cc11a9077843ad6cbc059a2 (patch)
tree1ad830132c4e994fd801417643c425df98ea1803 /gcc
parent50f0f3665baa3d351d1c15d62a5a93e56d3d3d7e (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/c-typeck.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr33726.c17
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);
+}
+