On Thu, Jul 30, 2020 at 05:08:37PM +0200, Oleg Nesterov wrote: > On 07/29, Luc Van Oostenryck wrote: > > The returned type will just be > > quite arbitrary, but I don't know how much it matters. > > Of course. And this is not good. For example: > > void func(void) > { > struct B *b; struct C *c; struct D *d; > _Generic(a, > int: b, > void*: c, > default: d > ) ->mem++; > } > > output: > > 1:6 def f func void ( ... ) > 3:18 func def . v b struct B * > 3:31 func def . v c struct C * > 3:44 func def . v d struct D * > 4:18 func --- v a bad type > 5:33 func --m . v b struct B * > 6:33 func --m . v c struct C * > 7:33 func --m . v d struct D * > 8:11 func -m- m D.mem bad type > > But I do not know how to improve it without serious complications, and Are you thinking about calling evaluate_symbol_list() or about something else? What kind of complications? > (so far) I think it doesn't worth the effort. Yes, _Generic() clearly makes things a bit more complicated here. Same for __auto_type, which is not yet used by the kernel but will probably be soon. -- Luc