summaryrefslogtreecommitdiff
path: root/fixincludes
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-19 07:05:45 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2005-05-19 07:05:45 +0000
commite849ea70ce30e304c569cc735649e207707b5e2a (patch)
treeb868266a6c9589956b7ebb466b05e348d7f83b8b /fixincludes
parentc62a2234539a6c6429e6943eef62731234c7c565 (diff)
downloadgcc-e849ea70ce30e304c569cc735649e207707b5e2a.tar.gz
fixincludes/
PR target/19933 PR target/21315 * inclhack.def: New fixes solaris_math_[1-9]. * fixincl.x: Regenerate. * tests/base/iso/math_c99.h: New. gcc/testsuite/ * gcc.dg/c99-math.h: New * gcc.dg/c99-math-float-1.c: New test. * gcc.dg/c99-math-double-1.c: Likewise. * gcc.dg/c99-math-long-double-1.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99953 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'fixincludes')
-rw-r--r--fixincludes/ChangeLog9
-rw-r--r--fixincludes/fixincl.x477
-rw-r--r--fixincludes/inclhack.def170
-rw-r--r--fixincludes/tests/base/iso/math_c99.h112
4 files changed, 763 insertions, 5 deletions
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index c0d2881445c..de13766fa73 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,12 @@
+2005-05-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+ Joseph S. Myers <joseph@codesourcery.com>
+
+ PR target/19933
+ PR target/21315
+ * inclhack.def: New fixes solaris_math_[1-9].
+ * fixincl.x: Regenerate.
+ * tests/base/iso/math_c99.h: New.
+
2005-05-19 Kelley Cook <kcook@gcc.gnu.org>
* aclocal.m4: Remove superfluous reference to accross.m4.
diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x
index 7d9e7c891d3..9b39019fe6f 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 Saturday May 7, 2005 at 07:01:32 PM UTC
+ * It has been AutoGen-ed Thursday May 19, 2005 at 08:56:10 AM CEST
* From the definitions inclhack.def
* and the template file fixincl
*/
-/* DO NOT CVS-MERGE THIS FILE, EITHER Sat May 7 19:01:33 UTC 2005
+/* DO NOT CVS-MERGE THIS FILE, EITHER Thu May 19 08:56:10 CEST 2005
*
* 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 179 fixup descriptions.
+ * This file contains 188 fixup descriptions.
*
* See README for more information.
*
@@ -4607,6 +4607,419 @@ static const char* apzSco_UtimePatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Solaris_Math_1 fix
+ */
+tSCC zSolaris_Math_1Name[] =
+ "solaris_math_1";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_1List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_1Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_1Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_1Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_1_TEST_CT 2
+static tTestDesc aSolaris_Math_1Tests[] = {
+ { TT_NEGREP, zSolaris_Math_1Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_1Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_1
+ */
+static const char* apzSolaris_Math_1Patch[] = {
+ "format",
+ "#define\tHUGE_VA%1\t(__builtin_huge_va%2())",
+ "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_2 fix
+ */
+tSCC zSolaris_Math_2Name[] =
+ "solaris_math_2";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_2List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_2Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_2Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_2Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_2_TEST_CT 2
+static tTestDesc aSolaris_Math_2Tests[] = {
+ { TT_NEGREP, zSolaris_Math_2Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_2Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_2
+ */
+static const char* apzSolaris_Math_2Patch[] = {
+ "format",
+ "#define\tINFINITY\t(__builtin_inff())",
+ "^#define[ \t]+INFINITY[ \t]+__builtin_infinity",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_3 fix
+ */
+tSCC zSolaris_Math_3Name[] =
+ "solaris_math_3";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_3List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_3Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_3Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_3Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_3_TEST_CT 2
+static tTestDesc aSolaris_Math_3Tests[] = {
+ { TT_NEGREP, zSolaris_Math_3Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_3Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_3
+ */
+static const char* apzSolaris_Math_3Patch[] = {
+ "format",
+ "#define\tNAN\t\t(__builtin_nanf(\"\"))",
+ "^#define[ \t]+NAN[ \t]+__builtin_nan",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_4 fix
+ */
+tSCC zSolaris_Math_4Name[] =
+ "solaris_math_4";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_4List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_4Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_4Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_4Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_4_TEST_CT 2
+static tTestDesc aSolaris_Math_4Tests[] = {
+ { TT_NEGREP, zSolaris_Math_4Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_4Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_4
+ */
+static const char* apzSolaris_Math_4Patch[] = {
+ "format",
+ "#define\tfpclassify(x) \\\n\
+ __extension__ ({ __typeof(x) __x_fp = (x); \\\n\
+\t\t isnan(__x_fp) \\\n\
+\t\t ? FP_NAN \\\n\
+\t\t : isinf(__x_fp) \\\n\
+\t\t ? FP_INFINITE \\\n\
+\t\t : isnormal(__x_fp) \\\n\
+\t\t\t ? FP_NORMAL \\\n\
+\t\t\t : __x_fp == 0.0 \\\n\
+\t\t\t ? FP_ZERO \\\n\
+\t\t\t : FP_SUBNORMAL; })",
+ "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_5 fix
+ */
+tSCC zSolaris_Math_5Name[] =
+ "solaris_math_5";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_5List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_5Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_5Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_5Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_5_TEST_CT 2
+static tTestDesc aSolaris_Math_5Tests[] = {
+ { TT_NEGREP, zSolaris_Math_5Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_5Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_5
+ */
+static const char* apzSolaris_Math_5Patch[] = {
+ "format",
+ "#define\tisfinite(x) \\\n\
+ __extension__ ({ __typeof (x) __x_f = (x); \\\n\
+\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })",
+ "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_6 fix
+ */
+tSCC zSolaris_Math_6Name[] =
+ "solaris_math_6";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_6List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_6Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_6Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_6Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_6_TEST_CT 2
+static tTestDesc aSolaris_Math_6Tests[] = {
+ { TT_NEGREP, zSolaris_Math_6Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_6Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_6
+ */
+static const char* apzSolaris_Math_6Patch[] = {
+ "format",
+ "#define\tisinf(x) \\\n\
+ __extension__ ({ __typeof (x) __x_i = (x); \\\n\
+\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })",
+ "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_7 fix
+ */
+tSCC zSolaris_Math_7Name[] =
+ "solaris_math_7";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_7List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_7Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_7Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_7Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_7_TEST_CT 2
+static tTestDesc aSolaris_Math_7Tests[] = {
+ { TT_NEGREP, zSolaris_Math_7Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_7Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_7
+ */
+static const char* apzSolaris_Math_7Patch[] = {
+ "format",
+ "#define\tisnormal(x) \\\n\
+ __extension__ ({ __typeof(x) __x_n = (x); \\\n\
+\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n\
+\t\t __builtin_expect(isfinite(__x_n) \\\n\
+\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n\
+\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n\
+\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n\
+\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n\
+\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })",
+ "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_8 fix
+ */
+tSCC zSolaris_Math_8Name[] =
+ "solaris_math_8";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_8List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_8Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_8Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_8Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_8_TEST_CT 2
+static tTestDesc aSolaris_Math_8Tests[] = {
+ { TT_NEGREP, zSolaris_Math_8Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_8Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_8
+ */
+static const char* apzSolaris_Math_8Patch[] = {
+ "format",
+ "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n\
+\t\t\t ? __builtin_signbitf(x) \\\n\
+\t\t\t : sizeof(x) == sizeof(long double) \\\n\
+\t\t\t ? __builtin_signbitl(x) \\\n\
+\t\t\t : __builtin_signbit(x))",
+ "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_9 fix
+ */
+tSCC zSolaris_Math_9Name[] =
+ "solaris_math_9";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_9List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_9Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_9Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_9Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_9_TEST_CT 2
+static tTestDesc aSolaris_Math_9Tests[] = {
+ { TT_NEGREP, zSolaris_Math_9Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_9Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_9
+ */
+static const char* apzSolaris_Math_9Patch[] = {
+ "format",
+ "#define\t%1(x, y)%2__builtin_%1(x, y)",
+ "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Solaris_Mutex_Init_1 fix
*/
tSCC zSolaris_Mutex_Init_1Name[] =
@@ -7161,9 +7574,9 @@ static const char* apzX11_SprintfPatch[] = {
*
* List of all fixes
*/
-#define REGEX_COUNT 209
+#define REGEX_COUNT 227
#define MACH_LIST_SIZE_LIMIT 261
-#define FIX_COUNT 179
+#define FIX_COUNT 188
/*
* Enumerate the fixes
@@ -7283,6 +7696,15 @@ typedef enum {
SCO_REGSET_FIXIDX,
SCO_STATIC_FUNC_FIXIDX,
SCO_UTIME_FIXIDX,
+ SOLARIS_MATH_1_FIXIDX,
+ SOLARIS_MATH_2_FIXIDX,
+ SOLARIS_MATH_3_FIXIDX,
+ SOLARIS_MATH_4_FIXIDX,
+ SOLARIS_MATH_5_FIXIDX,
+ SOLARIS_MATH_6_FIXIDX,
+ SOLARIS_MATH_7_FIXIDX,
+ SOLARIS_MATH_8_FIXIDX,
+ SOLARIS_MATH_9_FIXIDX,
SOLARIS_MUTEX_INIT_1_FIXIDX,
SOLARIS_MUTEX_INIT_2_FIXIDX,
SOLARIS_SOCKET_FIXIDX,
@@ -7921,6 +8343,51 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
SCO_UTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSco_UtimeTests, apzSco_UtimePatch, 0 },
+ { zSolaris_Math_1Name, zSolaris_Math_1List,
+ apzSolaris_Math_1Machs,
+ SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_1Tests, apzSolaris_Math_1Patch, 0 },
+
+ { zSolaris_Math_2Name, zSolaris_Math_2List,
+ apzSolaris_Math_2Machs,
+ SOLARIS_MATH_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_2Tests, apzSolaris_Math_2Patch, 0 },
+
+ { zSolaris_Math_3Name, zSolaris_Math_3List,
+ apzSolaris_Math_3Machs,
+ SOLARIS_MATH_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_3Tests, apzSolaris_Math_3Patch, 0 },
+
+ { zSolaris_Math_4Name, zSolaris_Math_4List,
+ apzSolaris_Math_4Machs,
+ SOLARIS_MATH_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_4Tests, apzSolaris_Math_4Patch, 0 },
+
+ { zSolaris_Math_5Name, zSolaris_Math_5List,
+ apzSolaris_Math_5Machs,
+ SOLARIS_MATH_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_5Tests, apzSolaris_Math_5Patch, 0 },
+
+ { zSolaris_Math_6Name, zSolaris_Math_6List,
+ apzSolaris_Math_6Machs,
+ SOLARIS_MATH_6_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_6Tests, apzSolaris_Math_6Patch, 0 },
+
+ { zSolaris_Math_7Name, zSolaris_Math_7List,
+ apzSolaris_Math_7Machs,
+ SOLARIS_MATH_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_7Tests, apzSolaris_Math_7Patch, 0 },
+
+ { zSolaris_Math_8Name, zSolaris_Math_8List,
+ apzSolaris_Math_8Machs,
+ SOLARIS_MATH_8_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_8Tests, apzSolaris_Math_8Patch, 0 },
+
+ { zSolaris_Math_9Name, zSolaris_Math_9List,
+ apzSolaris_Math_9Machs,
+ SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 },
+
{ zSolaris_Mutex_Init_1Name, zSolaris_Mutex_Init_1List,
apzSolaris_Mutex_Init_1Machs,
SOLARIS_MUTEX_INIT_1_TEST_CT, FD_MACH_ONLY,
diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
index 1dac8328757..447997b14fb 100644
--- a/fixincludes/inclhack.def
+++ b/fixincludes/inclhack.def
@@ -2564,6 +2564,176 @@ fix = {
test_text = "extern int utime(const char *, struct utimbuf *);";
};
+/*
+ * Sun Solaris 10 defines several C99 math macros in terms of
+ * builtins specific to the Studio compiler, in particular not
+ * compatible with the GNU compiler.
+ */
+fix = {
+ hackname = solaris_math_1;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())";
+ c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef HUGE_VAL\n"
+ "#define HUGE_VAL __builtin_huge_val\n"
+ "#undef HUGE_VALF\n"
+ "#define HUGE_VALF __builtin_huge_valf\n"
+ "#undef HUGE_VALL\n"
+ "#define HUGE_VALL __builtin_huge_vall";
+};
+
+fix = {
+ hackname = solaris_math_2;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
+ c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef INFINITY\n"
+ "#define INFINITY __builtin_infinity";
+};
+
+fix = {
+ hackname = solaris_math_3;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
+ c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef NAN\n"
+ "#define NAN __builtin_nan";
+};
+
+fix = {
+ hackname = solaris_math_4;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tfpclassify(x) \\\n"
+ " __extension__ ({ __typeof(x) __x_fp = (x); \\\n"
+ "\t\t isnan(__x_fp) \\\n"
+ "\t\t ? FP_NAN \\\n"
+ "\t\t : isinf(__x_fp) \\\n"
+ "\t\t ? FP_INFINITE \\\n"
+ "\t\t : isnormal(__x_fp) \\\n"
+ "\t\t\t ? FP_NORMAL \\\n"
+ "\t\t\t : __x_fp == 0.0 \\\n"
+ "\t\t\t ? FP_ZERO \\\n"
+ "\t\t\t : FP_SUBNORMAL; })";
+ c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef fpclassify\n"
+ "#define fpclassify(x) __builtin_fpclassify(x)";
+};
+
+fix = {
+ hackname = solaris_math_5;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisfinite(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_f = (x); \\\n"
+ "\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })";
+ c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isfinite\n"
+ "#define isfinite(x) __builtin_isfinite(x)";
+};
+
+fix = {
+ hackname = solaris_math_6;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisinf(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_i = (x); \\\n"
+ "\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })";
+ c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isinf\n"
+ "#define isinf(x) __builtin_isinf(x)";
+};
+
+fix = {
+ hackname = solaris_math_7;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisnormal(x) \\\n"
+ " __extension__ ({ __typeof(x) __x_n = (x); \\\n"
+ "\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n"
+ "\t\t __builtin_expect(isfinite(__x_n) \\\n"
+ "\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n"
+ "\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n"
+ "\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n"
+ "\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n"
+ "\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })";
+ c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isnormal\n"
+ "#define isnormal(x) __builtin_isnormal(x)";
+};
+
+fix = {
+ hackname = solaris_math_8;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n"
+ "\t\t\t ? __builtin_signbitf(x) \\\n"
+ "\t\t\t : sizeof(x) == sizeof(long double) \\\n"
+ "\t\t\t ? __builtin_signbitl(x) \\\n"
+ "\t\t\t : __builtin_signbit(x))";
+ c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef signbit\n"
+ "#define signbit(x) __builtin_signbit(x)";
+};
+
+fix = {
+ hackname = solaris_math_9;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
+ c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isgreater\n"
+ "#define isgreater(x, y) ((x) __builtin_isgreater(y))\n"
+ "#undef isgreaterequal\n"
+ "#define isgreaterequal(x, y) ((x) __builtin_isgreaterequal(y))\n"
+ "#undef isless\n"
+ "#define isless(x, y) ((x) __builtin_isless(y))\n"
+ "#undef islessequal\n"
+ "#define islessequal(x, y) ((x) __builtin_islessequal(y))\n"
+ "#undef islessgreater\n"
+ "#define islessgreater(x, y) ((x) __builtin_islessgreater(y))\n"
+ "#undef isunordered\n"
+ "#define isunordered(x, y) ((x) __builtin_isunordered(y))";
+};
/*
* Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
diff --git a/fixincludes/tests/base/iso/math_c99.h b/fixincludes/tests/base/iso/math_c99.h
new file mode 100644
index 00000000000..86b6c20504f
--- /dev/null
+++ b/fixincludes/tests/base/iso/math_c99.h
@@ -0,0 +1,112 @@
+/* DO NOT EDIT THIS FILE.
+
+ It has been auto-edited by fixincludes from:
+
+ "fixinc/tests/inc/iso/math_c99.h"
+
+ This had to be done to correct non-standard usages in the
+ original, manufacturer supplied header file. */
+
+
+
+#if defined( SOLARIS_MATH_1_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef HUGE_VAL
+#define HUGE_VAL (__builtin_huge_val())
+#undef HUGE_VALF
+#define HUGE_VALF (__builtin_huge_valf())
+#undef HUGE_VALL
+#define HUGE_VALL (__builtin_huge_vall())
+#endif /* SOLARIS_MATH_1_CHECK */
+
+
+#if defined( SOLARIS_MATH_2_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef INFINITY
+#define INFINITY (__builtin_inff())
+#endif /* SOLARIS_MATH_2_CHECK */
+
+
+#if defined( SOLARIS_MATH_3_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef NAN
+#define NAN (__builtin_nanf(""))
+#endif /* SOLARIS_MATH_3_CHECK */
+
+
+#if defined( SOLARIS_MATH_4_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef fpclassify
+#define fpclassify(x) \
+ __extension__ ({ __typeof(x) __x_fp = (x); \
+ isnan(__x_fp) \
+ ? FP_NAN \
+ : isinf(__x_fp) \
+ ? FP_INFINITE \
+ : isnormal(__x_fp) \
+ ? FP_NORMAL \
+ : __x_fp == 0.0 \
+ ? FP_ZERO \
+ : FP_SUBNORMAL; })
+#endif /* SOLARIS_MATH_4_CHECK */
+
+
+#if defined( SOLARIS_MATH_5_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isfinite
+#define isfinite(x) \
+ __extension__ ({ __typeof (x) __x_f = (x); \
+ __builtin_expect(!isnan(__x_f - __x_f), 1); })
+#endif /* SOLARIS_MATH_5_CHECK */
+
+
+#if defined( SOLARIS_MATH_6_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isinf
+#define isinf(x) \
+ __extension__ ({ __typeof (x) __x_i = (x); \
+ __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })
+#endif /* SOLARIS_MATH_6_CHECK */
+
+
+#if defined( SOLARIS_MATH_7_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isnormal
+#define isnormal(x) \
+ __extension__ ({ __typeof(x) __x_n = (x); \
+ if (__x_n < 0.0) __x_n = -__x_n; \
+ __builtin_expect(isfinite(__x_n) \
+ && (sizeof(__x_n) == sizeof(float) \
+ ? __x_n >= __FLT_MIN__ \
+ : sizeof(__x_n) == sizeof(long double) \
+ ? __x_n >= __LDBL_MIN__ \
+ : __x_n >= __DBL_MIN__), 1); })
+#endif /* SOLARIS_MATH_7_CHECK */
+
+
+#if defined( SOLARIS_MATH_8_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef signbit
+#define signbit(x) (sizeof(x) == sizeof(float) \
+ ? __builtin_signbitf(x) \
+ : sizeof(x) == sizeof(long double) \
+ ? __builtin_signbitl(x) \
+ : __builtin_signbit(x))
+#endif /* SOLARIS_MATH_8_CHECK */
+
+
+#if defined( SOLARIS_MATH_9_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isgreater
+#define isgreater(x, y) __builtin_isgreater(x, y)
+#undef isgreaterequal
+#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+#undef isless
+#define isless(x, y) __builtin_isless(x, y)
+#undef islessequal
+#define islessequal(x, y) __builtin_islessequal(x, y)
+#undef islessgreater
+#define islessgreater(x, y) __builtin_islessgreater(x, y)
+#undef isunordered
+#define isunordered(x, y) __builtin_isunordered(x, y)
+#endif /* SOLARIS_MATH_9_CHECK */