Defining a class method which returns a copy of one of its members, and this member is declared "packed", and this member is from another class type, causes an internal compiler error when this method is called.
The bug was verified on both gcc 3.4.2 and 3.4.3, on i686-linux and powerpc- linux. The following simple program will crash g++ when compiled with -DSHOW_ICE. --------------------------------------------------------------------------- class A { public: int i; A() {} A(const A& a) { i = a.i; } }; class B { #ifdef SHOW_ICE A a __attribute__((packed)); #else A a; #endif public: B() {} A GetA() { return a; } }; int main() { B b; return b.GetA().i; } --------------------------------------------------------------------------- Jean-Denis Boyer, Mediatrix Telecom Inc. -- Summary: ICE when returning a copy of a packed member Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jdboyer at mediatrix dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18378