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: More __comp_ctor () woes


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);



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