OSDN Git Service

2007-10-11 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Oct 2007 08:11:18 +0000 (08:11 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Oct 2007 08:11:18 +0000 (08:11 +0000)
PR c/33726
* c-typeck.c (build_array_ref): Do not strip qualifiers from
the array element type.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129227 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr33726.c [new file with mode: 0644]

index f2568d6..0d1c15a 100644 (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
index 0bad8e5..3d80ce2 100644 (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.  */
index cb4f5d9..49f071b 100644 (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
diff --git a/gcc/testsuite/gcc.dg/pr33726.c b/gcc/testsuite/gcc.dg/pr33726.c
new file mode 100644 (file)
index 0000000..e87cbc5
--- /dev/null
@@ -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);
+}
+