------- Additional Comments From ebotcazou at gcc dot gnu dot org  2005-09-27 
09:55 -------
> This looks like a latent bug in the Ada front-end as the only change to the
> middle-end would be the change to use TYPE_MAIN_VARIANT.

No, it isn't, please investigate a minimum before writing such a statement. 
It's a latent consistency bug in the integer-share-limit stuff.

In build_int_cst_wide, we're asserting that the type of shared constants
attached to a type is precisely that type:

      t = TREE_VEC_ELT (TYPE_CACHED_VALUES (type), ix);
      if (t)
        {
          /* Make sure no one is clobbering the shared constant.  */
          gcc_assert (TREE_TYPE (t) == type);

But in set_sizetype we're boldly copying TYPE_CACHED_VALUES between types:

  /* We do want to use bitsizetype's cache, as we will be replacing that
     type.  */
  TYPE_CACHED_VALUES (t) = TYPE_CACHED_VALUES (bitsizetype);
  TYPE_CACHED_VALUES_P (t) = TYPE_CACHED_VALUES_P (bitsizetype);


Nathan, who is right here?

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nathan at codesourcery dot
                   |                            |com
          Component|ada                         |middle-end


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24053

Reply via email to