mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
Small improvements to Compiler Attributes:
- Define asm_volatile_goto for non-gcc compilers From Nick Desaulniers - Improve the explanation of compiler_attributes.h -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPjU5OPd5QIZ9jqqOGXyLc2htIW0FAlvkElAACgkQGXyLc2ht IW1QnhAA3RDKTCK2Y5GsTbZpA3NDItnjKXqCFW24YyHookcgnKrytnsZgFCUKZBA ys551crML+7HeFC2HdipORLuG+cXbjEl5IzblTAqOQQGmPa9g+kVWOiMiZhJWTVT gHrkwZKxSV3ndbsCHtnX9UEFwjOWFGfdvdhe33pcFZefAXd7y/fjLnlPBdPq5zh0 BnHoLPRvuWFR+m2qOWbVTn/bq1JqpfTsn1fFC5aFFTruQRGBcPbpa1yoPiB6tVsJ OLdlScnS9J7zafGE65Ig+x57rYADV7c7Wm8kupwpo7Qvrmnhg4skUp7YGb/O4XiO sbH6N+Tn0PD3EzxxZGq1ZBq+ZirM2sfqYsWJmf+igfUU+fP/tmkl5JZtuIeW9c2J 9GZcMfn5LZkraPGV6eZBTou7Kdz33vLmPXGPOc49BZGWSthjQ/8NYD5yjfZvK2xv TFV2DdQ+WQizejwdsuAUrxOHCUUeLJEjsAkQrHKhzPWRs448bkAVWTy3IN1Z+g1o spElAy8PIK8XFVyAa8o/SPhB0sghIHERA4p7Y+utKdF/D/sy13cDd27R/Dzf/282 tu0tpb00glFYUHtDUpYKBFjYY76upcukPJ/QtQXDzI7ohRfULs7lHrxqFQBqzlKy mqDh5tmLNKdziQp5nttCAh3q/s8Bl591M/0aTKRYcY9yFp2Ezs0= =QZoP -----END PGP SIGNATURE----- Merge tag 'compiler-attributes-for-linus-v4.20-rc2' of https://github.com/ojeda/linux Pull compiler attribute fixlets from Miguel Ojeda: "Small improvements to Compiler Attributes: - Define asm_volatile_goto for non-gcc compilers (Nick Desaulniers) - Improve the explanation of compiler_attributes.h" * tag 'compiler-attributes-for-linus-v4.20-rc2' of https://github.com/ojeda/linux: Compiler Attributes: improve explanation of header include/linux/compiler*.h: define asm_volatile_goto
This commit is contained in:
commit
b00d209241
2 changed files with 13 additions and 5 deletions
|
@ -4,22 +4,26 @@
|
|||
|
||||
/*
|
||||
* The attributes in this file are unconditionally defined and they directly
|
||||
* map to compiler attribute(s) -- except those that are optional.
|
||||
* map to compiler attribute(s), unless one of the compilers does not support
|
||||
* the attribute. In that case, __has_attribute is used to check for support
|
||||
* and the reason is stated in its comment ("Optional: ...").
|
||||
*
|
||||
* Any other "attributes" (i.e. those that depend on a configuration option,
|
||||
* on a compiler, on an architecture, on plugins, on other attributes...)
|
||||
* should be defined elsewhere (e.g. compiler_types.h or compiler-*.h).
|
||||
* The intention is to keep this file as simple as possible, as well as
|
||||
* compiler- and version-agnostic (e.g. avoiding GCC_VERSION checks).
|
||||
*
|
||||
* This file is meant to be sorted (by actual attribute name,
|
||||
* not by #define identifier). Use the __attribute__((__name__)) syntax
|
||||
* (i.e. with underscores) to avoid future collisions with other macros.
|
||||
* If an attribute is optional, state the reason in the comment.
|
||||
* Provide links to the documentation of each supported compiler, if it exists.
|
||||
*/
|
||||
|
||||
/*
|
||||
* To check for optional attributes, we use __has_attribute, which is supported
|
||||
* on gcc >= 5, clang >= 2.9 and icc >= 17. In the meantime, to support
|
||||
* 4.6 <= gcc < 5, we implement __has_attribute by hand.
|
||||
* __has_attribute is supported on gcc >= 5, clang >= 2.9 and icc >= 17.
|
||||
* In the meantime, to support 4.6 <= gcc < 5, we implement __has_attribute
|
||||
* by hand.
|
||||
*
|
||||
* sparse does not support __has_attribute (yet) and defines __GNUC_MINOR__
|
||||
* depending on the compiler used to build it; however, these attributes have
|
||||
|
|
|
@ -130,6 +130,10 @@ struct ftrace_likely_data {
|
|||
# define randomized_struct_fields_end
|
||||
#endif
|
||||
|
||||
#ifndef asm_volatile_goto
|
||||
#define asm_volatile_goto(x...) asm goto(x)
|
||||
#endif
|
||||
|
||||
/* Are two types/vars the same type (ignoring qualifiers)? */
|
||||
#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
|
||||
|
||||
|
|
Loading…
Reference in a new issue