https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114713
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Version|unknown |14.0 CC| |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- [] and [0] are not the same. Note the C and C++ frontends encode [0] (or did encode) differently. See tree.cc:gimple_canonical_types_compatible_p I agree that from a QOI perspective [] and [0] should be compatible. Note [0] can have many "equivalent" domains, [3:2], [0:-1], [1:0], etc. but the current code has /* Array types are the same if the element types are the same and the number of elements are the same. */ ... /* The minimum/maximum values have to be the same. */ if ((min1 == min2 || (min1 && min2 which is somewhat contradicting comments. See also layout_type which says, when computing TYPE_SIZE of an array: /* ??? We have no way to distinguish a null-sized array from an array spanning the whole sizetype range, so we arbitrarily decide that [0, -1] is the only valid representation. */ if (integer_zerop (length) && TREE_OVERFLOW (length) && integer_zerop (lb)) length = size_zero_node; revealing that the constraints on TYPE_DOMAIN are not very well specified.