Author: Craig Topper Date: 2025-03-03T13:01:08-08:00 New Revision: 2b509ecf2dadcd5ea81b15c85f116c20b9b1f649
URL: https://github.com/llvm/llvm-project/commit/2b509ecf2dadcd5ea81b15c85f116c20b9b1f649 DIFF: https://github.com/llvm/llvm-project/commit/2b509ecf2dadcd5ea81b15c85f116c20b9b1f649.diff LOG: [AST] Reorder fields in FunctionTypeBitfields to avoid splitting a field across 32 bit boundary Fixes #129521. Added: Modified: clang/include/clang/AST/Type.h Removed: ################################################################################ diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index 3cd2be2d2170a..79cf237431450 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -1943,11 +1943,6 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase { LLVM_PREFERRED_TYPE(TypeBitfields) unsigned : NumTypeBits; - /// Extra information which affects how the function is called, like - /// regparm and the calling convention. - LLVM_PREFERRED_TYPE(CallingConv) - unsigned ExtInfo : 14; - /// The ref-qualifier associated with a \c FunctionProtoType. /// /// This is a value of type \c RefQualifierKind. @@ -1966,12 +1961,6 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase { LLVM_PREFERRED_TYPE(bool) unsigned HasExtQuals : 1; - /// The number of parameters this function has, not counting '...'. - /// According to [implimits] 8 bits should be enough here but this is - /// somewhat easy to exceed with metaprogramming and so we would like to - /// keep NumParams as wide as reasonably possible. - unsigned NumParams : FunctionTypeNumParamsWidth; - /// The type of exception specification this function has. LLVM_PREFERRED_TYPE(ExceptionSpecificationType) unsigned ExceptionSpecType : 4; @@ -1991,6 +1980,17 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase { /// Whether this function has a trailing return type. LLVM_PREFERRED_TYPE(bool) unsigned HasTrailingReturn : 1; + + /// Extra information which affects how the function is called, like + /// regparm and the calling convention. + LLVM_PREFERRED_TYPE(CallingConv) + unsigned ExtInfo : 14; + + /// The number of parameters this function has, not counting '...'. + /// According to [implimits] 8 bits should be enough here but this is + /// somewhat easy to exceed with metaprogramming and so we would like to + /// keep NumParams as wide as reasonably possible. + unsigned NumParams : FunctionTypeNumParamsWidth; }; class ObjCObjectTypeBitfields { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits