r210925 - Adds a Pragma spelling for attributes to tablegen and makes use of it for loop
aaron at aaronballman.com
Thu Nov 20 13:12:46 PST 2014
On Thu, Nov 20, 2014 at 3:59 PM, Douglas Gregor <dgregor at apple.com> wrote:
> On Jun 13, 2014, at 10:57 AM, Tyler Nowicki <tnowicki at apple.com> wrote:
> Modified: cfe/trunk/include/clang/Sema/AttributeList.h
> --- cfe/trunk/include/clang/Sema/AttributeList.h (original)
> +++ cfe/trunk/include/clang/Sema/AttributeList.h Fri Jun 13 12:57:25 2014
> @@ -80,7 +80,9 @@ public:
> /// __declspec(...)
> /// __ptr16, alignas(...), etc.
> - AS_Keyword
> + AS_Keyword,
> + /// #pragma ...
> + AS_Pragma
> Amusingly, this new enumerator overflows the bitfield used to store the
> Syntax value:
> /// The number of expression arguments this attribute has.
> /// The expressions themselves are stored after the object.
> unsigned NumArgs : 15;
> /// Corresponds to the Syntax enum.
> unsigned SyntaxUsed : 2;
Yoiks! Good catch, Doug. It seems we need a bit more test coverage. ;-)
> Yet more amusingly, extending this bit-ield to three bits breaks things, as
> does replacing the one source of AS_Syntax attributes with AS_GNU :)
I will investigate, but what "things" does it break when you extend
the bit field to three bits? I modified NumArgs : 15 (down one from
16) and SyntaxUsed : 3 (up one from 2), and all tests passed for me
with MSVC on Windows (not that test coverage is the end-all, be-all).
More information about the cfe-commits