On Fri, 3 Jan 2014, Jakub Jelinek wrote: > On Fri, Jan 03, 2014 at 11:15:32AM +0100, Richard Biener wrote: > > so if there is a decl then use its type signature, otherwise > > (indirect calls) use the caller signature (and hope it matches > > the callee...). That it later falls back to looking at > > DECL_ARGUMENTS is odd (probably a FE issue where we have a > > fndecl with a bogus type?) > > For K&R C non-prototyped functions > foo (x, y) > int x, y; > { > return x + y; > } > I think TYPE_ARG_TYPES is NULL (?) and DECL_ARGUMENTS is the only way to get > at the types.
Ah, indeed. A C speciality that shouldn't survive GENERICization if that's really the case. I wonder how int main() { return (*(&foo))(0, 0); } works though. Or __auto_type x = foo; (substitute for that new C __auto thing). The former probably because we fold away the indirection very early. Richard.