http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54314



--- Comment #28 from Jan Hubicka <hubicka at ucw dot cz> 2013-01-28 19:05:40 
UTC ---

> > 1) Just add the check.  We will then miss all devirtualization oppurtunities

> >    through the construction vtable.

> 

> The front end does devirtualization itself for calls within constructors, so

> the impact of this isn't likely to be too bad.



Does it cover all the cases we can potentially handle by middle-end? Or does it

stop

i.e. at function boundary?

On the other hand I would say that calls close to consturction are those that

are

likely to be devirtualized, so we should not ignore thoe.



> >    what happens on targets not supporting visibility?

> 

> I think that setting DECL_VISIBILITY should do the trick even if it isn't

> reflected in the assembly output.  I added the DECL_ARTIFICIAL check to

> default_assemble_visibility so that this wouldn't cause warnings.



Yes, that seem like way to go.

> 

> > 3) Perhaps we can use DECL_VALUE_EXPR or somethin similar to keep track of

> >    the canonical way to reffer into tthe construction vtable? (i.e. by

> > reference

> >    to vtable) We can then lower all direct references to the indirect

> >    references late, i.e. in expansion?

> 

> Hmm, that makes sense.



OK, if you help me with C++ bits, I can give this a try.



Honza

Reply via email to