enum class LangOptions::ClangABI

Description

Clang versions with different platform ABI conformance.

Declared at: clang/include/clang/Basic/LangOptions.h:174

Enumerators

NameValueComment
Ver3_80Attempt to be ABI-compatible with code generated by Clang 3.8.x (SVN r257626). This causes < 1 x long long> to be passed in an integer register instead of an SSE register on x64_64.
Ver41Attempt to be ABI-compatible with code generated by Clang 4.0.x (SVN r291814). This causes move operations to be ignored when determining whether a class type can be passed or returned directly.
Ver62Attempt to be ABI-compatible with code generated by Clang 6.0.x (SVN r321711). This causes determination of whether a type is standard-layout to ignore collisions between empty base classes and between base classes and member subobjects, which affects whether we reuse base class tail padding in some ABIs.
Ver73Attempt to be ABI-compatible with code generated by Clang 7.0.x (SVN r338536). This causes alignof (C++) and _Alignof (C11) to be compatible with __alignof (i.e., return the preferred alignment) rather than returning the required alignment.
Ver94Attempt to be ABI-compatible with code generated by Clang 9.0.x (SVN r351319). This causes vectors of __int128 to be passed in memory instead of passing in multiple scalar registers on x86_64 on Linux and NetBSD.
Ver115Attempt to be ABI-compatible with code generated by Clang 11.0.x (git 2e10b7a39b93). This causes clang to pass unions with a 256-bit vector member on the stack instead of using registers, to not properly mangle substitutions for template names in some cases, and to mangle declaration template arguments without a cast to the parameter type even when that can lead to mangling collisions.
Ver126Attempt to be ABI-compatible with code generated by Clang 12.0.x (git 8e464dd76bef). This causes clang to mangle lambdas within global-scope inline variables incorrectly.
Ver147Attempt to be ABI-compatible with code generated by Clang 14.0.x. This causes clang to: - mangle dependent nested names incorrectly. - pack non-POD members of packed structs. - make trivial only those defaulted copy constructors with a parameter-type-list equivalent to the parameter-type-list of an implicit declaration.
Latest8Conform to the underlying platform's C and C++ ABIs as closely as we can.