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?

Reply via email to