More __comp_ctor () woes

Brendon Costa bcosta@avdat.com.au
Wed Oct 25 08:37:00 GMT 2006


I have been looking at the source in

class.c:
    clone_function_decl()
    clone_constructors_and_destructors()

pt.c:
    check_explicit_specialization()

In pt.c: check_explicit_specialization() it specifically requests that 
the clone function of a specialised constructor NOT add the new clone to 
the classes method vector.


Does this have something to do with the comment in the code in that by 
not adding a method to the types method vector it somehow defines the 
constructor as being "not in charge"?

I thought that an "in charge" or not "in charge" constructor was defined 
using some other means than by wether or not the constructor is in the 
types method vector.


I can now go ahead and hook into the clone method to gather the 
information i need, however it is a bit hackish and I am still trying to 
understand why the specialisation of a template constructor does not get 
added to the methods vector.


Thanks for any information in advance.
Brendon.



The appropiate few lines of code in the pt.c: 
check_explicit_specialization() file look as shown below:


else if (DECL_CONSTRUCTOR_P (decl) || DECL_DESTRUCTOR_P (decl))
        /* This is indeed a specialization.  In case of constructors
           and destructors, we need in-charge and not-in-charge
           versions in V3 ABI.  */
        clone_function_decl (decl, /*update_method_vec_p=*/0);

      /* Register this specialization so that we can find it
         again.  */
      decl = register_specialization (decl, gen_tmpl, targs);




More information about the Gcc mailing list