This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
gengtype & mark_hook in unions not working
- From: Basile Starynkevitch <basile at starynkevitch dot net>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 2 Oct 2012 09:57:53 +0200
- Subject: 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} ***