------- Comment #4 from rguenth at gcc dot gnu dot org 2006-11-29 19:47 ------- Further reduced testcase:
class NAMES_ITEM { }; struct ATOM { const NAMES_ITEM& getPredItem() const { } }; class ATOMSET { public: class FIND_RESULT { const NAMES_ITEM &pattern; public: FIND_RESULT() : pattern(pattern) { } FIND_RESULT(const FIND_RESULT &f) : pattern(f.pattern) { } FIND_RESULT(const NAMES_ITEM &pattern2) : pattern(pattern2) { } void operator=(const FIND_RESULT &f) { __builtin_memcpy(this,&f,sizeof(FIND_RESULT)); } }; void find(const ATOM &pattern, FIND_RESULT &f) { FIND_RESULT result(pattern.getPredItem()); f = result; } }; class INTERPRET { ATOMSET positive; public: void findInPositivePart(const ATOM &pattern, ATOMSET::FIND_RESULT &f) { positive.find(pattern,f); } }; struct GINTERPRET { void isTrue (void); }; extern INTERPRET J; static GINTERPRET *I; void printQueryI() { ATOM pattern; ATOMSET::FIND_RESULT f; J.findInPositivePart(pattern,f); I->isTrue(); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30017