[...@gnu-35 rrs]$ cat foo.cc struct foo { virtual void bar(); struct Rect { int bottom; }; struct Region {
static Region subtract(const Rect& lhs, const Rect& rhs) { Region reg; Rect* storage = reg.storage; { if (lhs.bottom > rhs.bottom) storage++; reg.count = storage - reg.storage; } return reg; } Rect storage[4]; int count; }; Rect dirtyRegion; Rect oldDirtyRegion; }; void foo::bar() { const Region copyBack(Region::subtract(oldDirtyRegion, dirtyRegion)); } [...@gnu-35 rrs]$ /export/gnu/import/rrs/164143/usr/bin/gcc -S -O foo.cc foo.cc: In member function virtual void foo::bar(): foo.cc:27:70: internal compiler error: in add_phi_arg, at tree-phinodes.c:395 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. [...@gnu-35 rrs]$ -- Summary: internal compiler error: in add_phi_arg, at tree- phinodes.c:395 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45709