From d1574a9b820f17adb9004255e2018967e9be063b Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Sun, 27 Feb 2022 19:47:25 +0000 Subject: [PATCH] Fix declarations of _DINFINITY, _SINFINITY and _SQNAN The declarations of _DINFINITY, _SINFINITY and _SQNAN need to be constant expressions. 2022-02-27 John David Anglin fixincludes/ChangeLog: * inclhack.def (hpux_math_constexpr): New hack. * fixincl.x: Regenerate. * tests/base/math.h: Update. --- fixincludes/fixincl.x | 44 +++++++++++++++++++++++++++++++++++++++---- fixincludes/inclhack.def | 18 ++++++++++++++++++ fixincludes/tests/base/math.h | 7 +++++++ 3 files changed, 65 insertions(+), 4 deletions(-) diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index b5cea5a..bad4904 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed January 15, 2022 at 10:54:24 PM by AutoGen 5.18.16 + * It has been AutoGen-ed February 27, 2022 at 07:47:03 PM by AutoGen 5.18.16 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jan 15 22:54:24 UTC 2022 +/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Feb 27 19:47:03 UTC 2022 * * You must regenerate it. Use the ./genfixes script. * @@ -15,7 +15,7 @@ * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * - * This file contains 266 fixup descriptions. + * This file contains 267 fixup descriptions. * * See README for more information. * @@ -4518,6 +4518,36 @@ static const char* apzHpux11_Cpp_Pow_InlinePatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Hpux_Math_Constexpr fix + */ +tSCC zHpux_Math_ConstexprName[] = + "hpux_math_constexpr"; + +/* + * File name selection pattern + */ +tSCC zHpux_Math_ConstexprList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Math_ConstexprMachs[] = { + "*-hp-hpux11*", + (const char*)NULL }; +#define HPUX_MATH_CONSTEXPR_TEST_CT 0 +#define aHpux_Math_ConstexprTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Hpux_Math_Constexpr + */ +static const char* apzHpux_Math_ConstexprPatch[] = { sed_cmd_z, + "-e", "s@^[ \t]*extern[ \t]*const[ \t]*double[ \t]*_DINFINITY;[ \t]*$@# define _DINFINITY (__builtin_inf ())@", + "-e", "s@^[ \t]*extern[ \t]*const[ \t]*float[ \t]*_SINFINITY;[ \t]*$@# define _SINFINITY (__builtin_inff ())@", + "-e", "s@^[ \t]*extern[ \t]*const[ \t]*float[ \t]*_SQNAN;[ \t]*$@# define _SQNAN (__builtin_nanf (\\\"\\\"))@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Hpux10_Ctype_Declarations1 fix */ tSCC zHpux10_Ctype_Declarations1Name[] = @@ -10844,7 +10874,7 @@ static const char* apzX11_SprintfPatch[] = { */ #define REGEX_COUNT 305 #define MACH_LIST_SIZE_LIMIT 187 -#define FIX_COUNT 266 +#define FIX_COUNT 267 /* * Enumerate the fixes @@ -10957,6 +10987,7 @@ typedef enum { HPPA_HPUX_FP_MACROS_FIXIDX, HPUX10_CPP_POW_INLINE_FIXIDX, HPUX11_CPP_POW_INLINE_FIXIDX, + HPUX_MATH_CONSTEXPR_FIXIDX, HPUX10_CTYPE_DECLARATIONS1_FIXIDX, HPUX10_CTYPE_DECLARATIONS2_FIXIDX, HPUX10_STDIO_DECLARATIONS_FIXIDX, @@ -11654,6 +11685,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { HPUX11_CPP_POW_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aHpux11_Cpp_Pow_InlineTests, apzHpux11_Cpp_Pow_InlinePatch, 0 }, + { zHpux_Math_ConstexprName, zHpux_Math_ConstexprList, + apzHpux_Math_ConstexprMachs, + HPUX_MATH_CONSTEXPR_TEST_CT, FD_MACH_ONLY, + aHpux_Math_ConstexprTests, apzHpux_Math_ConstexprPatch, 0 }, + { zHpux10_Ctype_Declarations1Name, zHpux10_Ctype_Declarations1List, apzHpux10_Ctype_Declarations1Machs, HPUX10_CTYPE_DECLARATIONS1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 8400d0c..7605ac8 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -2283,6 +2283,24 @@ fix = { }; /* + * This hack fixes the declarations of _DINFINITY, _SINFINITY and _SQNAN. + */ +fix = { + hackname = hpux_math_constexpr; + mach = "*-hp-hpux11*"; + files = math.h; + sed = "s@^[ \t]*extern[ \t]*const[ \t]*double[ \t]*_DINFINITY;" + "[ \t]*$@# define _DINFINITY (__builtin_inf ())@"; + sed = "s@^[ \t]*extern[ \t]*const[ \t]*float[ \t]*_SINFINITY;" + "[ \t]*$@# define _SINFINITY (__builtin_inff ())@"; + sed = "s@^[ \t]*extern[ \t]*const[ \t]*float[ \t]*_SQNAN;" + "[ \t]*$@# define _SQNAN (__builtin_nanf (\\\"\\\"))@"; + test_text = " extern const double _DINFINITY;\n" + " extern const float _SINFINITY;\n" + " extern const float _SQNAN;"; +}; + +/* * Fix hpux 10.X missing ctype declarations 1 */ fix = { diff --git a/fixincludes/tests/base/math.h b/fixincludes/tests/base/math.h index 7525fd8..29b6757 100644 --- a/fixincludes/tests/base/math.h +++ b/fixincludes/tests/base/math.h @@ -57,6 +57,13 @@ #endif /* HPUX11_CPP_POW_INLINE_CHECK */ +#if defined( HPUX_MATH_CONSTEXPR_CHECK ) +# define _DINFINITY (__builtin_inf ()) +# define _SINFINITY (__builtin_inff ()) +# define _SQNAN (__builtin_nanf ("")) +#endif /* HPUX_MATH_CONSTEXPR_CHECK */ + + #if defined( HPUX11_FABSF_CHECK ) #ifdef _PA_RISC #ifndef __cplusplus -- 2.7.4