This is the mail archive of the gcc-patches@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: [C++ patch] Move FINAL flag to middle-end trees.


> On 08/23/2013 10:51 AM, Jan Hubicka wrote:
> >Sadly we ICE here because BINFO of type is not built yet.
> >I tried to move the code after xref_binfos and it does seem to lead to errors
> >while building libstdc++ PCH.  Any idea what to do here?
> 
> If it's causing trouble, let's just put the flag on the type.

OK, I mostly need the flag on type anyway, so it will save some indirection.  I will
re-test and commit the variant using default_def flag of type.

In the next step I would like to introduce the DECL_CPP_CONSTRUCTOR/DESTRUCTOR macro.
The catch I run into is that these flags are tested on TEMPLATE_DECL so the middle-end
macro bombs on type checking.  I wonder what is best approach here.

I guess I can just disable FUNCTION_DECL checking on this macro in middle-end,
but I do not like it much.  Or I can have same C++ FE macros using the same
flag that also allow templates, but then we can get them out of sync.  Or I can
update 100+ places in C++ FE to use different macro on template or I can
introduce SET variant that will care about decl type or I can just have two
flags and make C++ FE to mirror DECL_CONSTRUCTOR_P into the middle end flag?

Any more resonable options?
> 
> >here I now can devirtualize b->foo into A because A is in anonymous namespace.
> >We however won't remove b because it is externally visible.  Is it valid to
> >bring b local based on fact that A is anonymous and thus no valid C++ program
> >can read it?
> 
> Hmm, determine_visibility ought to be doing that already.

You are right.  I simplified the testcase from code I looked at but probably I
overlooked something.  Sorry for the noise!

Honza


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