/* * The attributes in this file are unconditionally defined and they directly * 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. * Provide links to the documentation of each supported compiler, if it exists.
*/
/* * Note: users of __always_inline currently do not write "inline" themselves, * which seems to be required by gcc to apply the attribute according * to its docs (and also "warning: always_inline function might not be * inlinable [-Wattributes]" is emitted). * * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-always_005finline-function-attribute * clang: mentioned
*/ #define __always_inline inline __attribute__((__always_inline__))
/* * Add the pseudo keyword 'fallthrough' so case statement blocks * must end with any of these keywords: * break; * fallthrough; * continue; * goto <label>; * return [expression]; * * gcc: https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html#Statement-Attributes
*/ #if __has_attribute(__fallthrough__) # define fallthrough __attribute__((__fallthrough__)) #else # define fallthrough do {} while (0) /* fallthrough */ #endif
/* * The __used attribute guarantees that the attributed variable will be * always emitted by a compiler. It doesn't prevent the compiler from * throwing 'unused' warnings when it can't detect how the variable is * actually used. It's a compiler implementation details either emit * the warning in that case or not. * * The combination of both 'used' and 'unused' attributes ensures that * the variable would be emitted, and will not trigger 'unused' warnings. * The attribute is applicable for functions, static and global variables.
*/ #define __always_used __used __maybe_unused
/* * Optional: only supported since clang >= 14.0 * * clang: https://clang.llvm.org/docs/AttributeReference.html#disable-sanitizer-instrumentation * * disable_sanitizer_instrumentation is not always similar to * no_sanitize((<sanitizer-name>)): the latter may still let specific sanitizers * insert code into functions to prevent false positives. Unlike that, * disable_sanitizer_instrumentation prevents all kinds of instrumentation to * functions with the attribute.
*/ #if __has_attribute(disable_sanitizer_instrumentation) # define __disable_sanitizer_instrumentation \
__attribute__((disable_sanitizer_instrumentation)) #else # define __disable_sanitizer_instrumentation #endif
/* * Used by functions that use '__builtin_return_address'. These function * don't want to be splited or made inline, which can make * the '__builtin_return_address' get unexpected address.
*/ #define __fix_address noinline __noclone
#endif/* __LINUX_COMPILER_ATTRIBUTES_H */
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.25Bemerkung:
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.