https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113688
--- Comment #20 from uecker at gcc dot gnu.org ---
This was based on a discussion with Richard. TYPE_CANONICAL is used for
aliasing decisions and the FE must set it to from equivalence classes for types
that are
compatible. In C, the types
int[];
int[3];
int[n];
are compatible, and this means that also the following types
are compatible:
struct foo { int a; int b[]; };
struct foo { int a; int b[3]; };
struct foo { int a; int b[n]; };
Treating them as not compatible (by setting different TYPE_CANONICAL) causes
subtle miscompilation issues in C. I wonder how this works in Ada?