Author: rnk Date: Mon Mar 13 13:42:30 2017 New Revision: 297654 URL: http://llvm.org/viewvc/llvm-project?rev=297654&view=rev Log: Widen bitfield for type specifiers for OpenCL types
Added a static_assert to catch this issue at compile time. Modified: cfe/trunk/include/clang/Basic/Specifiers.h Modified: cfe/trunk/include/clang/Basic/Specifiers.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Specifiers.h?rev=297654&r1=297653&r2=297654&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/Specifiers.h (original) +++ cfe/trunk/include/clang/Basic/Specifiers.h Mon Mar 13 13:42:30 2017 @@ -82,11 +82,12 @@ namespace clang { /// \brief Structure that packs information about the type specifiers that /// were written in a particular type specifier sequence. struct WrittenBuiltinSpecs { - /*DeclSpec::TST*/ unsigned Type : 5; + static_assert(TST_error < 1 << 6, "Type bitfield not wide enough for TST"); + /*DeclSpec::TST*/ unsigned Type : 6; /*DeclSpec::TSS*/ unsigned Sign : 2; /*DeclSpec::TSW*/ unsigned Width : 2; unsigned ModeAttr : 1; - }; + }; /// \brief A C++ access specifier (public, private, protected), plus the /// special value "none" which means different things in different contexts. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits