diff options
author | Jim Wilson <wilson@cygnus.com> | 1997-12-24 22:10:46 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-12-24 15:10:46 -0700 |
commit | 04bd620d207354e517075a6abc32db18986180a7 (patch) | |
tree | ae30bb63d5386952a7440ae2c9a0425fd5b09667 | |
parent | 439d5a35d8e60afa53dd6a7ca541c480b9b38239 (diff) | |
download | gcc-04bd620d207354e517075a6abc32db18986180a7.zip gcc-04bd620d207354e517075a6abc32db18986180a7.tar.gz gcc-04bd620d207354e517075a6abc32db18986180a7.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/mips/abi64.h | 18 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 4 | ||||
-rw-r--r-- | 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 <wilson@cygnus.com> + + * 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 <jfc@mit.edu> * 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. */ |