> > 
> > Probably not ;)
> > 
> > But seriously it's a matter of a) keeping constructors for each
> > variable separate and optimize them in GIMPLE, b) recognize
> > resulting code that can be expressed with a initializer
> > 
> > a) can be done with delaying inlining to IPA time and hoping
> > that early opts do enough to perform the necessary simplification,
> > b) needs a new pass (but I guess it shouldn't be _that_ hard...)
> 
> I'm not sure totally skipping inlining in C++ is that great an idea
> since most C++ ctors will end up calling things.  Isn't it enough to not
> inline the initializer for a variable into the file level function that
> calls all the initializers, which you could do by internally apply
> attribute noinline I guess.
> 
> > I think we already have constructor functions marked specially,
> > hopefully with a link to the initialized variable.
> 
> I'd expect that's what DECL_STATIC_CONSTRUCTOR does, but I'm not sure
> there's a link or where we could put one if there isn't.

If you mean language level static constructors, then it doesn't. C++ FE
produce them and then wrap thems in static_construction functions that
are the only having DECL_STATIC_CONSTRUCTOR calling the actual ctors.

Should not be hard to add though. Need to read back why inlining would
be undesriable here - not inliing ctors in general would indeed be problematic
(preventing SRA and more stuff)

Honza
> 
> Trev
> 
> > 
> > Richard.

Reply via email to