On Wed, Dec 17, 2014 at 4:03 PM, Aaron Ballman <[email protected]> wrote: > > On Tue, Dec 16, 2014 at 4:17 PM, Nico Weber <[email protected]> wrote: > > Ok, I moved -Wkeyword-macro into -pedantic in r224371. I also removed > > -Wreserved-id-macro in the same revision, as it's not covered by the > > standards bit you cited > > I do not think -Wreserved-id-macro should be removed entirely, but I > do think it should have a heuristic update before being recommitted, > and is too chatty to leave in currently. > > [global.names] specifies that those names are reserved to the > implementation, but implementations may require use of them. For > instance, __need_size_t may need to be #defined before including > <stddef.h>, and that's valid because the implementer expects that. > However, __MY_SILLY_HEADER_GUARD__ should not be allowed. > > One heuristic which may work would be to make it only trigger on > header include guards when defining macros and to always trigger on > nonmacro names (and never in system headers). I'm not certain how > chatty such a heuristic would be, but it would have less false > positives than the previous patch did. > > FWIW, this can pick out real problems -- I ran into this myself when > working on tablegenning attribute code, which would accidentally > create identifiers like foo__bar, which are reserved to the > implementation.
Such identifiers are used quite frequently within Clang, where we do things like prefixing keywords with "kw_"; if the keyword starts with an underscore, this pattern gives you a double underscore. IIRC, the point of this rule is that some old name mangling schemes used __ (the old GNU mangling scheme used it between function name and signature, and I think some compiler used it as a stand-in for ::). Since such names don't conflict with our mangling scheme (or indeed any modern mangling scheme, as far as I know), this warning should probably be under a different flag.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
