[cfe-dev] invalid bits size for WrittenBuiltinSpecs::Type

Vladimir Voskresensky via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 13 10:35:39 PDT 2017


Hello Clang Developers,

in file clang/Basic/Specifiers.h there is
    struct clang::WrittenBuiltinSpecs {
      /*DeclSpec::TST*/ unsigned Type  : 5; // << must be *6*
....
   };

"Type" field must be 6 to match DeclSpec::TST which is the same as enum 
TypeSpecifierType
which has
  TST_error // erroneous type
with value 43 which can not be kept in 5 bits field.

as a correct example you can see that
clang::DeclSpec::TypeSpecType field is 6 bits

So, we corrupt values  during save in 
clang::DeclSpec::SaveWrittenBuiltinSpecs for all after TST_image1d_t.
Btw, due to this TST_error is changed to TST_float128....

Hope it helps,
Vladimir.



More information about the cfe-dev mailing list