On Sat, Jun 22 2024, Gerd Möllmann wrote: > I was thinking of using 1 struct instead of 4, like so > > enum Lisp_Fwd_Pred > { > /* Something with values for the Lisp_Object predicate ... */ > ... > }; > > struct Lisp_Fwd > { > enum Lisp_Fwd_Type : 8; > enum Lisp_Fwd_Predicate predicate : 8; > union > { > intmax_t *intvar; > bool *boolvar; > Lisp_Object *objvar; > int offset; > } u; > }; > > Then removing the Lisp_Fwd_Bool etc. structures that currently exist and > replace this > > typedef struct { void const *fwdptr; } lispfwd; > > which is just a void * with ornaments, with const struct Lisp_Fwd *. These patches do this; only that the predicate is still a Lisp_Object.