This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: compatibility of structs/unions/enums in the middle end


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]