compatibility of structs/unions/enums in the middle end
Uecker, Martin
Martin.Uecker@med.uni-goettingen.de
Wed Oct 2 18:24:00 GMT 2019
Am Mittwoch, den 02.10.2019, 17:37 +0200 schrieb Richard Biener:
> On October 2, 2019 3:55:43 PM GMT+02:00, "Uecker, Martin" <Martin.Uecker@med.uni-goettingen.de>
> wrote:
> > Am Mittwoch, den 02.10.2019, 15:12 +0200 schrieb Richard Biener:
> > > On Wed, Oct 2, 2019 at 3:10 PM Richard Biener
> > > <richard.guenther@gmail.com> wrote:
> > > >
...
> > > Oh, and LTO does _not_ merge types declared inside a function,
> > > so
> > >
> > > void foo () { struct S { int i; }; }
> > > void bar () { struct S { int i; }; }
> > >
> > > the two S are distinct and objects of that type do not conflict.
> >
> > This is surprising as these types are compatible across TUs. So
> > if some pointer is passed between these functions this is
> > supposed to work.
>
> So if they are compatible the frontend needs to mark them so in this case.
It can't. The front end never sees the other TU.
Best,
Martin
More information about the Gcc
mailing list