c: port YY_ATTRIBUTE_UNUSED to Sun C 5.12

Sun C 5.12 defines __SUNPRO_C to 0x5120 but diagnoses
‘__attribute__ ((__unused__))’.  Change the ifdefs to use
the same method as Gnulib in this area.
* data/skeletons/c.m4 (YY_ATTRIBUTE): Remove, since
not all attributes were added in the same compiler version.
(YY_ATTRIBUTE_PURE, YY_ATTRIBUTE_UNUSED):
Use specific GCC version for each attribute.
Pay no attention to __SUNPRO_C.
* tests/headers.at (Several parsers): Tighten tests accordingly.
This commit is contained in:
Paul Eggert
2019-10-17 11:28:38 -07:00
parent 7a557ee7fe
commit 83c9051a64
2 changed files with 10 additions and 12 deletions

View File

@@ -282,22 +282,20 @@ m4_define([b4_table_value_equals],
# Provide portable compiler "attributes". If "noreturn" is passed, define # Provide portable compiler "attributes". If "noreturn" is passed, define
# _Noreturn. # _Noreturn.
m4_define([b4_attribute_define], m4_define([b4_attribute_define],
[[#ifndef YY_ATTRIBUTE [[#ifndef YY_ATTRIBUTE_PURE
# if (defined __GNUC__ \ # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
&& (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
|| defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
# else # else
# define YY_ATTRIBUTE(Spec) /* empty */ # define YY_ATTRIBUTE_PURE
# endif # endif
#endif #endif
#ifndef YY_ATTRIBUTE_PURE
# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
#endif
#ifndef YY_ATTRIBUTE_UNUSED #ifndef YY_ATTRIBUTE_UNUSED
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
# define YY_ATTRIBUTE_UNUSED
# endif
#endif #endif
]m4_bmatch([$1], [\bnoreturn\b], [[/* The _Noreturn keyword of C11. */ ]m4_bmatch([$1], [\bnoreturn\b], [[/* The _Noreturn keyword of C11. */

View File

@@ -321,7 +321,7 @@ AT_PERL_CHECK([[-n -0777 -e '
|YYChar |YYChar
|YYPUSH_MORE(?:_DEFINED)? |YYPUSH_MORE(?:_DEFINED)?
|YYUSE |YYUSE
|YY_ATTRIBUTE(?:_PURE|_UNUSED)? |YY_ATTRIBUTE(?:_PURE|_UNUSED)
|YY_CONSTEXPR |YY_CONSTEXPR
|YY_COPY |YY_COPY
|YY_CPLUSPLUS |YY_CPLUSPLUS