2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
PR c++/33601
* tree.c (build_offset_type): Build canonical type based on the
TYPE_MAIN_VARIANT of the base type.
2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
* g++.dg/other/pr33601.C: New.
From-SVN: r129659
+2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
+
+ PR c++/33601
+ * tree.c (build_offset_type): Build canonical type based on the
+ TYPE_MAIN_VARIANT of the base type.
+
2007-10-26 Daniel Jacobowitz <dan@codesourcery.com>
* reorg.c (emit_delay_sequence): Move insn locator from the
+2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
+
+ * g++.dg/other/pr33601.C: New.
+
2007-10-26 Paolo Carlini <pcarlini@suse.de>
PR c++/31988
--- /dev/null
+struct A
+{
+ int membervar;
+};
+
+typedef const A type;
+
+int type::* getmemberptr() { return &type::membervar; }
if (TYPE_STRUCTURAL_EQUALITY_P (basetype)
|| TYPE_STRUCTURAL_EQUALITY_P (type))
SET_TYPE_STRUCTURAL_EQUALITY (t);
- else if (TYPE_CANONICAL (basetype) != basetype
+ else if (TYPE_CANONICAL (TYPE_MAIN_VARIANT (basetype)) != basetype
|| TYPE_CANONICAL (type) != type)
TYPE_CANONICAL (t)
- = build_offset_type (TYPE_CANONICAL (basetype),
+ = build_offset_type (TYPE_CANONICAL (TYPE_MAIN_VARIANT (basetype)),
TYPE_CANONICAL (type));
}