[Bug middle-end/24053] [4.1 Regression] Ada bootstrap ICE in build_int_cst_wide, at tree.c:795

ebotcazou at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Sep 29 17:24:00 GMT 2005


------- 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



More information about the Gcc-bugs mailing list