------- Additional Comments From ebotcazou at gcc dot gnu dot org 2005-09-29 17:24 ------- > The problem here is that we have to create some types before setting > size_type, and in creating those types we need to set their size to some > integral constant, and that integral constant has to have a type. That uses > the stub sizetype type, which we overwrite further down set_sizetype. > > /* Replace our original stub sizetype. */ > memcpy (sizetype, t, tree_size (sizetype)); > TYPE_MAIN_VARIANT (sizetype) = sizetype;
OK, I totally missed that the types 't' are not supposed to escape from set_sizetype, right? > My guess is that we've already created some type variants of the stub type at > that point, which is not what I expected. There should really be an > gcc_assert (!TYPE_NEXT_VARIANT (sizetype) && !TYPE_NEXT_VARIANT (t)); > just before the memcpy The bug appears to be that the second type 't' does escape from set_sizetype because it is the main variant of bitsizetype, as Richard Kenner has found. Thanks for your feedback. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24053