Commit 82efaf43 by Jason Merrill

re PR c++/10091 ([parisc] ICE in cp_expr_size, at cp/cp-lang.c:307)

        PR c++/10091
        * expr.c (expand_expr) [ADDR_EXPR]: Disallow taking the address of
        an unaligned member of TREE_ADDRESSABLE type.
        * cp/typeck.c (build_class_member_access_expr): Compare
        TYPE_MAIN_VARIANTs.

From-SVN: r64523
parent 10326855
// PR c++/10091
// Bug: We were dying because in general, B::a doesn't have enough
// alignment for us to take its address. But if the B is C::b, it does
// have enough alignment, and we should be able to determine that.
// This only failed on STRICT_ALIGNMENT targets (i.e. not i686)
struct A {
int i;
A();
A(const A&);
A& operator=(const A&);
};
struct B {
A a;
} __attribute__ ((packed));
struct C {
B b;
int j;
};
void f (const A&);
void g (const C& c)
{
f (c.b.a);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment