URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 149 |
Rev 154 |
// PR c++/10091
|
// PR c++/10091
|
|
|
// Original synopsis
|
// Original synopsis
|
// Bug: We were dying because in general, B::a doesn't have enough
|
// 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
|
// 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.
|
// have enough alignment, and we should be able to determine that.
|
|
|
// This only failed on STRICT_ALIGNMENT targets (i.e. not i686)
|
// This only failed on STRICT_ALIGNMENT targets (i.e. not i686)
|
|
|
// July 2003
|
// July 2003
|
// packing of non-pods is now only allowed if the non-pod is itself
|
// packing of non-pods is now only allowed if the non-pod is itself
|
// packed. Also only such pods can be reference bound to non-consts
|
// packed. Also only such pods can be reference bound to non-consts
|
|
|
struct A {
|
struct A {
|
int i;
|
int i;
|
|
|
A();
|
A();
|
A(const A&);
|
A(const A&);
|
A& operator=(const A&);
|
A& operator=(const A&);
|
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
|
|
struct B {
|
struct B {
|
A a;
|
A a;
|
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
|
|
struct C {
|
struct C {
|
B b;
|
B b;
|
int j;
|
int j;
|
};
|
};
|
|
|
void f (A&);
|
void f (A&);
|
void g (C& c)
|
void g (C& c)
|
{
|
{
|
f (c.b.a);
|
f (c.b.a);
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.