Support alternate attribute spelling __enable_if__
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 13 Jul 2015 14:13:01 +0000 (14:13 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 13 Jul 2015 14:13:01 +0000 (14:13 +0000)
commitef5aa29e12d0203a8196ed715d262357deddc218
treed3f0adf3a3827a10f145611695e31f1e67356002
parent6d8f78507310f2a2a37a6cd24bfc2f99e4e2dc1a
Support alternate attribute spelling __enable_if__

Attribute names usually support an alternate spelling that uses double
underscores before and after the attribute name, like e.g. attribute
((__aligned__)) for attribute ((aligned)). This is necessary to allow
use of attributes in system headers without polluting the name space.

However, for attribute ((enable_if)) that alternate spelling does not
work correctly. This is because of code in Parser::ParseGNUAttributeArgs
(ParseDecl.cpp) that specifically checks for the "enable_if" spelling
without allowing the alternate spelling.

Similar code in ParseDecl.cpp uses the normalizeAttrName helper to allow
both spellings. This patch adds use of that helper for the "enable_if"
check as well, which fixes attribute ((__enable_if__)).

Differential Revision: http://reviews.llvm.org/D11142

llvm-svn: 242029
clang/lib/Parse/ParseDecl.cpp
clang/test/Sema/enable_if.c