Feature #681 » 0046-gnulib-common.m4-Update-to-serial-94.patch
| dependencies/m4/gnulib-common.m4 | ||
|---|---|---|
|
# gnulib-common.m4
|
||
|
# serial 93
|
||
|
# serial 94
|
||
|
dnl Copyright (C) 2007-2024 Free Software Foundation, Inc.
|
||
|
dnl This file is free software; the Free Software Foundation
|
||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||
| ... | ... | |
|
# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3)
|
||
|
# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7)
|
||
|
# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96)
|
||
|
# define _GL_ATTR_reproducible 0 /* not yet supported, as of GCC 14 */
|
||
|
# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9)
|
||
|
# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0)
|
||
|
# define _GL_ATTR_unsequenced 0 /* not yet supported, as of GCC 14 */
|
||
|
# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7)
|
||
|
# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
|
||
|
# endif
|
||
| ... | ... | |
|
_GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied
|
||
|
by the Nth argument of the function is the size of the returned memory block.
|
||
|
*/
|
||
|
/* Applies to: function, pointer to function, function types. */
|
||
|
/* Applies to: functions, pointer to functions, function types. */
|
||
|
#ifndef _GL_ATTRIBUTE_ALLOC_SIZE
|
||
|
# if _GL_HAS_ATTRIBUTE (alloc_size)
|
||
|
# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
|
||
| ... | ... | |
|
/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the
|
||
|
function and report an error if it cannot do so. */
|
||
|
/* Applies to: function. */
|
||
|
/* Applies to: functions. */
|
||
|
#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE
|
||
|
# if _GL_HAS_ATTRIBUTE (always_inline)
|
||
|
# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
|
||
| ... | ... | |
|
/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show
|
||
|
in stack traces when debugging. The compiler should omit the function from
|
||
|
stack traces. */
|
||
|
/* Applies to: function. */
|
||
|
/* Applies to: functions. */
|
||
|
#ifndef _GL_ATTRIBUTE_ARTIFICIAL
|
||
|
# if _GL_HAS_ATTRIBUTE (artificial)
|
||
|
# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
|
||
| ... | ... | |
|
# endif
|
||
|
#endif
|
||
|
/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate
|
||
|
calls to the function with the same arguments.
|
||
|
This attribute is safe for a function that neither depends on nor affects
|
||
|
observable state, and always returns exactly once - e.g., does not loop
|
||
|
forever, and does not call longjmp.
|
||
|
(This attribute is stricter than _GL_ATTRIBUTE_PURE.) */
|
||
|
/* It is OK for a compiler to move calls to the function and to omit
|
||
|
calls to the function if another call has the same arguments or the
|
||
|
result is not used.
|
||
|
This attribute is safe for a function that neither depends on
|
||
|
nor affects state, and always returns exactly once -
|
||
|
e.g., does not raise an exception, call longjmp, or loop forever.
|
||
|
(This attribute is stricter than _GL_ATTRIBUTE_PURE because the
|
||
|
function cannot observe state. It is stricter than
|
||
|
_GL_ATTRIBUTE_UNSEQUENCED because the function must return exactly
|
||
|
once and cannot depend on state addressed by its arguments.) */
|
||
|
/* Applies to: functions. */
|
||
|
#ifndef _GL_ATTRIBUTE_CONST
|
||
|
# if _GL_HAS_ATTRIBUTE (const)
|
||
|
# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
|
||
|
# else
|
||
|
# define _GL_ATTRIBUTE_CONST
|
||
|
# define _GL_ATTRIBUTE_CONST _GL_ATTRIBUTE_UNSEQUENCED
|
||
|
# endif
|
||
|
#endif
|
||
| ... | ... | |
|
minimizing the memory required. */
|
||
|
/* Applies to: struct members, struct, union,
|
||
|
in C++ also: class. */
|
||
|
#ifndef _GL_ATTRIBUTE_PACKED
|
||
|
/* Oracle Studio 12.6 miscompiles code with __attribute__ ((__packed__)) despite
|
||
|
__has_attribute OK. */
|
||
|
#ifndef _GL_ATTRIBUTE_PACKED
|
||
|
# if _GL_HAS_ATTRIBUTE (packed) && !defined __SUNPRO_C
|
||
|
# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
|
||
|
# else
|
||
| ... | ... | |
|
# endif
|
||
|
#endif
|
||
|
/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate
|
||
|
calls to the function with the same arguments if observable state is not
|
||
|
changed between calls.
|
||
|
This attribute is safe for a function that does not affect
|
||
|
observable state, and always returns exactly once.
|
||
|
(This attribute is looser than _GL_ATTRIBUTE_CONST.) */
|
||
|
/* It is OK for a compiler to move calls to the function and to omit
|
||
|
calls to the function if another call has the same arguments or the
|
||
|
result is not used, and if observable state is the same.
|
||
|
This attribute is safe for a function that does not affect observable state
|
||
|
and always returns exactly once.
|
||
|
(This attribute is looser than _GL_ATTRIBUTE_CONST because the function
|
||
|
can depend on observable state. It is stricter than
|
||
|
_GL_ATTRIBUTE_REPRODUCIBLE because the function must return exactly
|
||
|
once and cannot affect state addressed by its arguments.) */
|
||
|
/* Applies to: functions. */
|
||
|
#ifndef _GL_ATTRIBUTE_PURE
|
||
|
# if _GL_HAS_ATTRIBUTE (pure)
|
||
|
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||
|
# else
|
||
|
# define _GL_ATTRIBUTE_PURE
|
||
|
# define _GL_ATTRIBUTE_PURE _GL_ATTRIBUTE_REPRODUCIBLE
|
||
|
# endif
|
||
|
#endif
|
||
|
/* It is OK for a compiler to move calls to the function and to omit duplicate
|
||
|
calls to the function with the same arguments, so long as the state
|
||
|
addressed by its arguments is the same and is updated in time for
|
||
|
the rest of the program.
|
||
|
This attribute is safe for a function that is effectless and idempotent; see
|
||
|
ISO C 23 § 6.7.12.7 for a definition of these terms.
|
||
|
(This attribute is looser than _GL_ATTRIBUTE_UNSEQUENCED because
|
||
|
the function need not be stateless and idempotent. It is looser
|
||
|
than _GL_ATTRIBUTE_PURE because the function need not return
|
||
|
exactly once and can affect state addressed by its arguments.)
|
||
|
See also <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm> and
|
||
|
<https://stackoverflow.com/questions/76847905/>. */
|
||
|
/* Applies to: functions, pointer to functions, function types. */
|
||
|
#ifndef _GL_ATTRIBUTE_REPRODUCIBLE
|
||
|
# if _GL_HAS_ATTRIBUTE (reproducible)
|
||
|
# define _GL_ATTRIBUTE_REPRODUCIBLE [[reproducible]]
|
||
|
# else
|
||
|
# define _GL_ATTRIBUTE_REPRODUCIBLE
|
||
|
# endif
|
||
|
#endif
|
||
| ... | ... | |
|
# endif
|
||
|
#endif
|
||
|
/* It is OK for a compiler to move calls to the function and to omit duplicate
|
||
|
calls to the function with the same arguments, so long as the state
|
||
|
addressed by its arguments is the same.
|
||
|
This attribute is safe for a function that is effectless, idempotent,
|
||
|
stateless, and independent; see ISO C 23 § 6.7.12.7 for a definition of
|
||
|
these terms.
|
||
|
(This attribute is stricter than _GL_ATTRIBUTE_REPRODUCIBLE because
|
||
|
the function must be stateless and independent. It is looser than
|
||
|
_GL_ATTRIBUTE_CONST because the function need not return exactly
|
||
|
once and can depend on state addressed by its arguments.)
|
||
|
See also <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm> and
|
||
|
<https://stackoverflow.com/questions/76847905/>. */
|
||
|
/* Applies to: functions, pointer to functions, function types. */
|
||
|
#ifndef _GL_ATTRIBUTE_UNSEQUENCED
|
||
|
# if _GL_HAS_ATTRIBUTE (unsequenced)
|
||
|
# define _GL_ATTRIBUTE_UNSEQUENCED [[unsequenced]]
|
||
|
# else
|
||
|
# define _GL_ATTRIBUTE_UNSEQUENCED
|
||
|
# endif
|
||
|
#endif
|
||
|
/* A helper macro. Don't use it directly. */
|
||
|
#ifndef _GL_ATTRIBUTE_UNUSED
|
||
|
# if _GL_HAS_ATTRIBUTE (unused)
|
||