enum class LangOptions::ClangABI
Description
Clang versions with different platform ABI conformance.
Declared at: clang/include/clang/Basic/LangOptions.h:174
Enumerators
Name | Value | Comment |
---|---|---|
Ver3_8 | 0 | Attempt 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. |
Ver4 | 1 | Attempt 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. |
Ver6 | 2 | Attempt 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. |
Ver7 | 3 | Attempt 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. |
Ver9 | 4 | Attempt 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. |
Ver11 | 5 | Attempt 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. |
Ver12 | 6 | Attempt 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. |
Ver14 | 7 | Attempt 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. |
Latest | 8 | Conform to the underlying platform's C and C++ ABIs as closely as we can. |