Skip to content

Commit

Permalink
Compiler Attributes: improve explanation of header
Browse files Browse the repository at this point in the history
Explain better what "optional" attributes are, and avoid calling
them so to avoid confusion. Simply retain "Optional" as a word
to look for in the comments.

Moreover, add a couple sentences to explain a bit more the intention
and the documentation links.

Signed-off-by: Miguel Ojeda <[email protected]>
  • Loading branch information
ojeda committed Nov 8, 2018
1 parent 8bd66d1 commit 24efee4
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions include/linux/compiler_attributes.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 24efee4

Please sign in to comment.