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....
Yes, I agree. In fact, this is how I got here myself. I ran test using Clank (the Java port of CLang) and got Java-assert that reducing from enumerator to 5 bits doesn’t fit for TST_error value Please, send me the changeset when you are done with compiler warning. Thanks! Vladimir.