2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/35321
* c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
/testsuite
2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/35321
* g++.dg/parse/offsetof8.C: New.
From-SVN: r139628
+2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/35321
+ * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
+
2008-08-27 Paul Brook <paul@codesourcery.com>
* config.gcc: Loosen checks for arm uclinux eabi targets.
return error_mark_node;
case CALL_EXPR:
+ case TARGET_EXPR:
error ("cannot apply %<offsetof%> when %<operator[]%> is overloaded");
return error_mark_node;
+2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/35321
+ * g++.dg/parse/offsetof8.C: New.
+
2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c++/17880
--- /dev/null
+// PR c++/35321
+
+struct A
+{
+ A operator[] (int);
+};
+
+struct B
+{
+ A a;
+};
+
+void foo()
+{
+ __builtin_offsetof(B, a[0]); /* { dg-error "error: cannot apply 'offsetof' when 'operator\\\[\\\]' is overloaded" } */
+}