diff options
author | Basile Starynkevitch <basile@starynkevitch.net> | 2012-10-04 17:22:15 +0000 |
---|---|---|
committer | Basile Starynkevitch <bstarynk@gcc.gnu.org> | 2012-10-04 17:22:15 +0000 |
commit | 35057bf7360505c67261d0a8b3650c0fb7ae0637 (patch) | |
tree | 9ca6aed283ac36761501be69e2e70a114c305e9c /gcc | |
parent | af2e10ee707f0d8884e652fe8e9a9a8489fb2fa4 (diff) | |
download | gcc-35057bf7360505c67261d0a8b3650c0fb7ae0637.zip gcc-35057bf7360505c67261d0a8b3650c0fb7ae0637.tar.gz gcc-35057bf7360505c67261d0a8b3650c0fb7ae0637.tar.bz2 |
Basile Starynkevitch <basile@starynkevitch.net>
* gengtype.c (walk_type): Emit mark_hook when inside a
struct of a union member.
From-SVN: r192092
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/gengtype.c | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abdd917..2a79135 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-10-04 Basile Starynkevitch <basile@starynkevitch.net> + + * gengtype.c (walk_type): Emit mark_hook when inside a + struct of a union member. + 2012-10-04 Georg-Johann Lay <avr@gjlay.de> * config/avr/predicates.md (flash_operand): New predicate. diff --git a/gcc/gengtype.c b/gcc/gengtype.c index 2ae4372..d872b4e 100644 --- a/gcc/gengtype.c +++ b/gcc/gengtype.c @@ -2810,6 +2810,7 @@ walk_type (type_p t, struct walk_type_data *d) const char *oldval = d->val; const char *oldprevval1 = d->prev_val[1]; const char *oldprevval2 = d->prev_val[2]; + const char *struct_mark_hook = NULL; const int union_p = t->kind == TYPE_UNION; int seen_default_p = 0; options_p o; @@ -2833,6 +2834,13 @@ walk_type (type_p t, struct walk_type_data *d) if (!desc && strcmp (o->name, "desc") == 0 && o->kind == OPTION_STRING) desc = o->info.string; + else if (!struct_mark_hook && strcmp (o->name, "mark_hook") == 0 + && o->kind == OPTION_STRING) + struct_mark_hook = o->info.string; + + if (struct_mark_hook) + oprintf (d->of, "%*s%s (&%s));\n", + d->indent, "", struct_mark_hook, oldval); d->prev_val[2] = oldval; d->prev_val[1] = oldprevval2; |