http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59198
--- Comment #9 from Paul Thomas <pault at gcc dot gnu.org> --- Hi Tobias, I need to walk away from this one for 24 hours. I have established this chain: (i) We start building decay_t; (ii) During which we have to build decay_gen_t (from trans-types.c:2456); (iii) Followed by decay_term_t; (iv) Which has a decay_t as its only component; (v) Since this is in the process of being built, what is retruned is the backend_decl without any of the fields. Thus the size cannot be determined; (vi) For reasons that I cannot see, since this component is a pointer, indeterminate size this propagates back to the size of the decay_gen_t component in decay_t; and (vii) This I suppose but have not confirmed, clobbers the initialisation of the vtable. This latter is surmise, on the basis that changing the 'term' field to a pointer still causes the size problem but the ICE goes away. The programme even executes! I cannot see why there is a problem in estimating the size, since the relevant components are either allocatable or pointers - thus the size can be determined. Cheers Paul