> On Jun 13, 2014, at 10:57 AM, Tyler Nowicki <[email protected]> wrote:
> Modified: cfe/trunk/include/clang/Sema/AttributeList.h
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/AttributeList.h?rev=210925&r1=210924&r2=210925&view=diff
> ==============================================================================
> --- 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(...)
>     AS_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;

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 :)

        - Doug

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to