Lambda types have names that are anonymous for all intents and purposes, but sometimes need to be distinguished from other unnamed types. We currently create lambda names specially. This patch changes that to use the anon-name machinery, and then set another spare bit on that identifier to mark it specially. The 'LAMBDA_TYPE_P' macro can accept any node (not just types), but that (a) is different to the TYPE_ANON_P and other such macros, and (b) nearly all use cases fall into: i) we know we have a type, ii) we're doing LAMBDA_TYPE_P (DECL_CONTEXT (thing)) This suggests replacing LAMBDA_TYPE_P with: 1) TYPE_LAMBDA_P for cases we have a type 2) DECL_LAMBDA_SCOPE_P for the context case (mirroring DECL_CLASS_SCOPE_P) I'll do that in a later patch. nathan -- Nathan Sidwell