diff options
author | ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-02 14:58:50 +0000 |
---|---|---|
committer | ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-02 14:58:50 +0000 |
commit | aee500d50cead7414e1e44b867a473988e5b524d (patch) | |
tree | 758176b80c80b9947972eac0d941bbeaac2cf8e4 /fixincludes | |
parent | cdae544836af089faa66d1af5987149c3693b920 (diff) | |
download | gcc-aee500d50cead7414e1e44b867a473988e5b524d.tar.gz |
PR libfortran/41169
* inclhack.def (irix_complex): New fix.
(solaris_complex): Likewise.
* fixincl.x: Regenerate.
* tests/base/complex.h [IRIX_COMPLEX_CHECK, SOLARIS_COMPLEX_CHECK]:
New tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151331 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'fixincludes')
-rw-r--r-- | fixincludes/ChangeLog | 9 | ||||
-rw-r--r-- | fixincludes/fixincl.x | 100 | ||||
-rw-r--r-- | fixincludes/inclhack.def | 47 | ||||
-rw-r--r-- | fixincludes/tests/base/complex.h | 14 |
4 files changed, 165 insertions, 5 deletions
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index c274bead675..2bf7bf90555 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,12 @@ +2009-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR libfortran/41169 + * inclhack.def (irix_complex): New fix. + (solaris_complex): Likewise. + * fixincl.x: Regenerate. + * tests/base/complex.h [IRIX_COMPLEX_CHECK, SOLARIS_COMPLEX_CHECK]: + New tests. + 2009-08-28 Bruce Korb <bkorb@gnu.org> Steve Ellcey <sje@cup.hp.com> diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 8b3422ad286..d9c194f217b 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 Friday August 28, 2009 at 10:55:38 AM PDT + * It has been AutoGen-ed Wednesday September 2, 2009 at 04:57:56 PM MEST * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Fri Aug 28 10:55:38 PDT 2009 +/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Sep 2 16:57:56 MEST 2009 * * 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 204 fixup descriptions. + * This file contains 206 fixup descriptions. * * See README for more information. * @@ -4571,6 +4571,45 @@ static const char* apzIrix_Asm_ApostrophePatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Irix_Complex fix + */ +tSCC zIrix_ComplexName[] = + "irix_complex"; + +/* + * File name selection pattern + */ +tSCC zIrix_ComplexList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_ComplexMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_ComplexSelect0[] = + "#define[ \t]_Complex_I[ \t]\\(\\(float[ \t]_Complex\\)[ \t]\\(__I__\\)\\)"; + +#define IRIX_COMPLEX_TEST_CT 1 +static tTestDesc aIrix_ComplexTests[] = { + { TT_EGREP, zIrix_ComplexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Complex + */ +static const char* apzIrix_ComplexPatch[] = { sed_cmd_z, + "-e", "s/#define[ \t]_Complex_I[ \t]((float[ \t]_Complex)[ \t](__I__))/#define _Complex_I (__extension__ 1.0iF)/", + "-e", "/#define[ \t]imaginary[ \t]_Imaginary/d", + "-e", "/#define[ \t]_Imaginary_I/d", + "-e", "s/#define[ \t]I[ \t]_Imaginary_I/#define I _Complex_I/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Irix_Limits_Const fix */ tSCC zIrix_Limits_ConstName[] = @@ -6139,6 +6178,45 @@ static const char* apzSco_MathPatch[] = { sed_cmd_z, /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Solaris_Complex fix + */ +tSCC zSolaris_ComplexName[] = + "solaris_complex"; + +/* + * File name selection pattern + */ +tSCC zSolaris_ComplexList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_ComplexMachs[] = { + "*-*-solaris2.*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_ComplexSelect0[] = + "#define[ \t]_Complex_I[ \t]_Complex_I"; + +#define SOLARIS_COMPLEX_TEST_CT 1 +static tTestDesc aSolaris_ComplexTests[] = { + { TT_EGREP, zSolaris_ComplexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Complex + */ +static const char* apzSolaris_ComplexPatch[] = { sed_cmd_z, + "-e", "s/#define[ \t]_Complex_I[ \t]_Complex_I/#define\t_Complex_I\t\\(__extension__ 1.0iF\\)/", + "-e", "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d", + "-e", "/#define[ \t]imaginary[ \t]_Imaginary/d", + "-e", "s/#define[ \t]I[ \t]\\+_Imaginary_I/#define\tI\t\t_Complex_I/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Solaris_Math_1 fix */ tSCC zSolaris_Math_1Name[] = @@ -8302,9 +8380,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 247 +#define REGEX_COUNT 249 #define MACH_LIST_SIZE_LIMIT 181 -#define FIX_COUNT 204 +#define FIX_COUNT 206 /* * Enumerate the fixes @@ -8421,6 +8499,7 @@ typedef enum { IRIX___GENERIC1_FIXIDX, IRIX___GENERIC2_FIXIDX, IRIX_ASM_APOSTROPHE_FIXIDX, + IRIX_COMPLEX_FIXIDX, IRIX_LIMITS_CONST_FIXIDX, IRIX_SOCKLEN_T_FIXIDX, IRIX_STDINT_C99_FIXIDX, @@ -8461,6 +8540,7 @@ typedef enum { RS6000_FCHMOD_FIXIDX, RS6000_PARAM_FIXIDX, SCO_MATH_FIXIDX, + SOLARIS_COMPLEX_FIXIDX, SOLARIS_MATH_1_FIXIDX, SOLARIS_MATH_2_FIXIDX, SOLARIS_MATH_3_FIXIDX, @@ -9072,6 +9152,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { IRIX_ASM_APOSTROPHE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aIrix_Asm_ApostropheTests, apzIrix_Asm_ApostrophePatch, 0 }, + { zIrix_ComplexName, zIrix_ComplexList, + apzIrix_ComplexMachs, + IRIX_COMPLEX_TEST_CT, FD_MACH_ONLY, + aIrix_ComplexTests, apzIrix_ComplexPatch, 0 }, + { zIrix_Limits_ConstName, zIrix_Limits_ConstList, apzIrix_Limits_ConstMachs, IRIX_LIMITS_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, @@ -9272,6 +9357,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { SCO_MATH_TEST_CT, FD_MACH_ONLY, aSco_MathTests, apzSco_MathPatch, 0 }, + { zSolaris_ComplexName, zSolaris_ComplexList, + apzSolaris_ComplexMachs, + SOLARIS_COMPLEX_TEST_CT, FD_MACH_ONLY, + aSolaris_ComplexTests, apzSolaris_ComplexPatch, 0 }, + { zSolaris_Math_1Name, zSolaris_Math_1List, apzSolaris_Math_1Machs, SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index f118260f2ca..f7ad8773e2a 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -2437,6 +2437,29 @@ fix = { /* + * IRIX 6.5 complex.h defines _Complex_I and _Imaginary_I in terms of __I__, + * which is a MIPSpro compiler builtin. Remove _Imaginary_I and imaginary + * definitions which are not supported by GCC. + */ +fix = { + hackname = irix_complex; + mach = "mips-sgi-irix6.5"; + files = complex.h; + select = "#define[ \t]_Complex_I[ \t]\\(\\(float[ \t]_Complex\\)[ \t]\\(__I__\\)\\)"; + sed = "s/#define[ \t]_Complex_I[ \t]((float[ \t]_Complex)[ \t](__I__))/" + "#define _Complex_I (__extension__ 1.0iF)/"; + sed = "/#define[ \t]imaginary[ \t]_Imaginary/d"; + sed = "/#define[ \t]_Imaginary_I/d"; + sed = "s/#define[ \t]I[ \t]_Imaginary_I/#define I _Complex_I/"; + test_text = "#define _Complex_I ((float _Complex) (__I__))\n" + "#define imaginary _Imaginary\n" + "// #define _Imaginary_I ((float _Imaginary) 1)\n" + "#define _Imaginary_I __I__\n" + "#define I _Imaginary_I"; +}; + + +/* * Non-traditional "const" declaration in Irix's limits.h. */ fix = { @@ -3220,6 +3243,30 @@ fix = { /* + * Solaris 10+ complex.h defines _Complex_I and _Imaginary_I in terms of + * themselves, which are Sun Studio compiler intrinsics. Remove _Imaginary_I + * and imaginary definitions which are not supported by GCC. + */ +fix = { + hackname = solaris_complex; + mach = "*-*-solaris2.*"; + files = complex.h; + select = "#define[ \t]_Complex_I[ \t]_Complex_I"; + sed = "s/#define[ \t]_Complex_I[ \t]_Complex_I/" + "#define\t_Complex_I\t\\(__extension__ 1.0iF\\)/"; + sed = "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d"; + sed = "/#define[ \t]imaginary[ \t]_Imaginary/d"; + sed = "s/#define[ \t]I[ \t]\\+_Imaginary_I/#define\tI\t\t_Complex_I/"; + test_text = "#define _Complex_I _Complex_I\n" + "#define complex _Complex\n" + "#define _Imaginary_I _Imaginary_I\n" + "#define imaginary _Imaginary\n" + "#undef I\n" + "#define I _Imaginary_I"; +}; + + +/* * 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. diff --git a/fixincludes/tests/base/complex.h b/fixincludes/tests/base/complex.h index d20310d346d..9a54e8c0bda 100644 --- a/fixincludes/tests/base/complex.h +++ b/fixincludes/tests/base/complex.h @@ -19,3 +19,17 @@ #define _Complex_I (__extension__ 1.0iF) #endif /* HPUX_IMAGINARY_I_CHECK */ + + +#if defined( IRIX_COMPLEX_CHECK ) +#define _Complex_I (__extension__ 1.0iF) +#define I _Complex_I +#endif /* IRIX_COMPLEX_CHECK */ + + +#if defined( SOLARIS_COMPLEX_CHECK ) +#define _Complex_I (__extension__ 1.0iF) +#define complex _Complex +#undef I +#define I _Complex_I +#endif /* SOLARIS_COMPLEX_CHECK */ |