------- Comment #8 from rguenth at gcc dot gnu dot org  2009-12-11 23:05 -------
I think

       /* Put the integral type with the bigger precision first.  */
       else if (INTEGRAL_TYPE_P (f1->type)
               && INTEGRAL_TYPE_P (f2->type)
               && TYPE_PRECISION (f1->type) != TYPE_PRECISION (f2->type))
         return TYPE_PRECISION (f1->type) > TYPE_PRECISION (f2->type) ? -1 : 1;

makes more sense.  But still if both types are equal we still do not stabilize
the sort.

Note

      /* Put any integral type with non-full precision last.  */
      else if (INTEGRAL_TYPE_P (f1->type)
               && (TREE_INT_CST_LOW (TYPE_SIZE (f1->type))
                   != TYPE_PRECISION (f1->type)))
        return 1;
      else if (INTEGRAL_TYPE_P (f2->type)
               && (TREE_INT_CST_LOW (TYPE_SIZE (f2->type))
                   != TYPE_PRECISION (f2->type)))
        return -1;

isn't stable either.  In fact - can't we have two exactly the same
accesses in the array?


-- 


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

Reply via email to