From 04bd620d207354e517075a6abc32db18986180a7 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Wed, 24 Dec 1997 22:10:46 +0000 Subject: [PATCH] abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT, and define __LONG_MAX__ appropriately. * abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT, and define __LONG_MAX__ appropriately. Add support for -mabi=X, -mlong64, and -mgp{32,64} options. * mips.c (mips_abi): Change type to int. * mips.h (enum mips_abi_type): Delete. (ABI_32, ABI_N32, ABI_64, ABI_EABI): Define as constants. (mips_abi): Change type to int. From-SVN: r17229 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/mips/abi64.h | 18 +++++++++++++++++- gcc/config/mips/mips.c | 4 ++-- gcc/config/mips/mips.h | 15 +++++++-------- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be8f5ff..fd3149d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +Wed Dec 24 23:12:14 1997 Jim Wilson + + * abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT, + and define __LONG_MAX__ appropriately. Add support for -mabi=X, + -mlong64, and -mgp{32,64} options. + * mips.c (mips_abi): Change type to int. + * mips.h (enum mips_abi_type): Delete. + (ABI_32, ABI_N32, ABI_64, ABI_EABI): Define as constants. + (mips_abi): Change type to int. + Wed Dec 24 22:38:34 1997 John Carr * flags.h, toplev.c, calls.c, alias.c: Remove flag_alias_check; diff --git a/gcc/config/mips/abi64.h b/gcc/config/mips/abi64.h index a3e768c..4f6fccf 100644 --- a/gcc/config/mips/abi64.h +++ b/gcc/config/mips/abi64.h @@ -213,8 +213,24 @@ extern struct rtx_def *mips_function_value (); (mips_abi == ABI_EABI && (NAMED) \ && FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)) +/* Define LONG_MAX correctly for all users. We need to handle 32 bit EABI, + 64 bit EABI, N32, and N64 as possible defaults. The checks performed here + are the same as the checks in override_options in mips.c that determines + whether MASK_LONG64 will be set. + + This does not handle inappropriate options or ununusal option + combinations. */ + #undef LONG_MAX_SPEC -#define LONG_MAX_SPEC "%{!mno-long64:-D__LONG_MAX__=9223372036854775807LL}" +#if ((MIPS_ABI_DEFAULT == ABI_64) || ((MIPS_ABI_DEFAULT == ABI_EABI) && ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_64BIT))) +#define LONG_MAX_SPEC \ + "%{!mabi=n32:%{!mno-long64:%{!mgp32:-D__LONG_MAX__=9223372036854775807L}}}" +#else +#define LONG_MAX_SPEC \ + "%{mabi=64:-D__LONG_MAX__=9223372036854775807L} \ + %{mlong64:-D__LONG_MAX__=9223372036854775807L} \ + %{mgp64:-D__LONG_MAX__=9223372036854775807L}" +#endif /* ??? Unimplemented stuff follows. */ diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 6e01a92..88569ab 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -194,9 +194,9 @@ enum processor_type mips_cpu; int mips_isa; #ifdef MIPS_ABI_DEFAULT -/* which ABI to use. This is defined to a constant in mips.h if the target +/* Which ABI to use. This is defined to a constant in mips.h if the target doesn't support multiple ABIs. */ -enum mips_abi_type mips_abi; +int mips_abi; #endif /* Strings to hold which cpu and instruction set architecture to use. */ diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 5ce0c17..919092d 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -75,21 +75,20 @@ enum processor_type { /* Recast the cpu class to be the cpu attribute. */ #define mips_cpu_attr ((enum attr_cpu)mips_cpu) -/* Which ABI to use. This is only used by the Irix 6 port currently. */ +/* Which ABI to use. These are constants because abi64.h must check their + value at preprocessing time. */ -enum mips_abi_type { - ABI_32, - ABI_N32, - ABI_64, - ABI_EABI -}; +#define ABI_32 0 +#define ABI_N32 1 +#define ABI_64 2 +#define ABI_EABI 3 #ifndef MIPS_ABI_DEFAULT /* We define this away so that there is no extra runtime cost if the target doesn't support multiple ABIs. */ #define mips_abi ABI_32 #else -extern enum mips_abi_type mips_abi; +extern int mips_abi; #endif /* Whether to emit abicalls code sequences or not. */ -- 2.7.4