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]

gengtype & mark_hook in unions not working


Hello All,


I observed in http://gcc.gnu.org/ml/gcc/2010-07/msg00248.html that 
sometimes mark_hook-s are not working (and MELT needs them strongly).

Actually, the following test case shows that mark hooks are not emitted when 
indirectly inside a union member.

To be specific, with the following file tmarkh.h

   /* file tmarkh.h */
   #define MYUTAG 1
   union GTY ((desc("%0.u_int"))) myutest_un {
     int GTY((skip)) u_int;
     struct mytest_st GTY ((tag("MYUTAG"))) u_mytest;
   };

   static GTY(()) union myutest_un *myutestptr;

   static inline void mymarker(struct mytest_st*s)
   {
     s->myflag = 1;
   }
   /* eof tmarkh.h */
   
when running gengtype (the one from the trunk, or the gcc-4.7 one) with
  gengtype  -D -v -r gtype.state -P _g-tmarkh.h tmarkh.h
you can observe that the generated _g-tmarkh.h don't contain any call to 
mymarker. If the static variable (here myutestptr) is declared with the 
struct mytest_st* type, the marker is emitted.

I'm investigating that bug and hope to submit a patch soon.

Regards.

-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


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