From 5ffd49b80090449894c03b350d2279d97d535de5 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Thu, 14 Jun 2001 03:51:26 +0000 Subject: [PATCH] Blow away a duplicate definition of "pow()" for C++ From-SVN: r43358 --- gcc/ChangeLog | 4 +++ gcc/fixinc/fixincl.x | 54 ++++++++++++++++++++++++++++++++++++++--- gcc/fixinc/inclhack.def | 33 +++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1deae2b9323..cdf54c68a75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-06-13 John David Anglin + + * inclhack.def (hpux10_cpp_pow_inline): New hack. + 2001-06-13 Richard Henderson * ifcvt.c (dead_or_predicable): Fix return value last patch. diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x index da19e6c34e8..2dde85afcbb 100644 --- a/gcc/fixinc/fixincl.x +++ b/gcc/fixinc/fixincl.x @@ -5,7 +5,7 @@ * files which are fixed to work correctly with ANSI C and placed in a * directory that GNU C will search. * - * This file contains 139 fixup descriptions. + * This file contains 140 fixup descriptions. * * See README for more information. * @@ -1943,6 +1943,48 @@ static const char* apzHp_SysfilePatch[] = { "\\(\\.\\.\\.\\)", (char*)NULL }; +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux10_Cpp_Pow_Inline fix + */ +tSCC zHpux10_Cpp_Pow_InlineName[] = + "hpux10_cpp_pow_inline"; + +/* + * File name selection pattern + */ +tSCC zHpux10_Cpp_Pow_InlineList[] = + "|math.h|"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux10_Cpp_Pow_InlineMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux10_Cpp_Pow_InlineSelect0[] = + "^# +ifdef +__cplusplus\n\ + +}\n\ + +inline +double +pow\\(double +__d,int +__expon\\) +{\n\ +[ \t]+return +pow\\(__d,\\(double\\)__expon\\);\n\ + +}\n\ + +extern +\"C\" +{\n\ +#else\n\ +# +endif"; + +#define HPUX10_CPP_POW_INLINE_TEST_CT 1 +static tTestDesc aHpux10_Cpp_Pow_InlineTests[] = { + { TT_EGREP, zHpux10_Cpp_Pow_InlineSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux10_Cpp_Pow_Inline + */ +static const char* apzHpux10_Cpp_Pow_InlinePatch[] = { + "format", + "", + (char*)NULL }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Hpux11_Fabsf fix @@ -5424,9 +5466,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 146 +#define REGEX_COUNT 147 #define MACH_LIST_SIZE_LIMIT 279 -#define FIX_COUNT 139 +#define FIX_COUNT 140 /* * Enumerate the fixes @@ -5480,6 +5522,7 @@ typedef enum { GNU_TYPES_FIXIDX, HP_INLINE_FIXIDX, HP_SYSFILE_FIXIDX, + HPUX10_CPP_POW_INLINE_FIXIDX, HPUX11_FABSF_FIXIDX, HPUX11_UINT32_C_FIXIDX, HPUX8_BOGUS_INLINES_FIXIDX, @@ -5814,6 +5857,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { HP_SYSFILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aHp_SysfileTests, apzHp_SysfilePatch, 0 }, + { zHpux10_Cpp_Pow_InlineName, zHpux10_Cpp_Pow_InlineList, + apzHpux10_Cpp_Pow_InlineMachs, + HPUX10_CPP_POW_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux10_Cpp_Pow_InlineTests, apzHpux10_Cpp_Pow_InlinePatch, 0 }, + { zHpux11_FabsfName, zHpux11_FabsfList, apzHpux11_FabsfMachs, HPUX11_FABSF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def index 88018d9b3bf..7730cd2970f 100644 --- a/gcc/fixinc/inclhack.def +++ b/gcc/fixinc/inclhack.def @@ -1148,6 +1148,39 @@ fix = { }; +/* + * Delete C++ double pow (double, int) inline function from HP-UX 10 + * math.h to prevent clash with define in c_std/bits/std_cmath.h. + */ +fix = { + hackname = hpux10_cpp_pow_inline; + files = math.h; + select = <<- END_POW_INLINE + ^# +ifdef +__cplusplus + +} + +inline +double +pow\(double +__d,int +__expon\) +{ + [ ]+return +pow\(__d,\(double\)__expon\); + +} + +extern +"C" +{ + #else + # +endif + END_POW_INLINE; + + c_fix = format; + c_fix_arg = ""; + + test_text = + "# ifdef __cplusplus\n" + " }\n" + " inline double pow(double __d,int __expon) {\n" + "\t return pow(__d,(double)__expon);\n" + " }\n" + ' extern "C"' " {\n" + "#else\n" + "# endif"; +}; + + /* * Keep HP-UX 11 from stomping on C++ math namespace * with defines for fabsf.