X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfig%2Fmips%2Fmips.h;h=644592d55336cba339ef6b23b4da67ddcc5ad521;hb=daef6af65d3b95701f5e677d1451b3fb73f39a8d;hp=7a5482cc927cfe993a4e643b471f668724e9014b;hpb=3b5e81e2f8acf8d99216bffe2dd2a7074e92be81;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 7a5482cc927..644592d5533 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -166,9 +166,7 @@ extern struct rtx_def *mips_load_reg; /* register to check for load delay */ extern struct rtx_def *mips_load_reg2; /* 2nd reg to check for load delay */ extern struct rtx_def *mips_load_reg3; /* 3rd reg to check for load delay */ extern struct rtx_def *mips_load_reg4; /* 4th reg to check for load delay */ -extern struct rtx_def *embedded_pic_fnaddr_rtx; /* function address */ extern int mips_string_length; /* length of strings for mips16 */ -extern struct rtx_def *mips16_gp_pseudo_rtx; /* psuedo reg holding $gp */ /* Functions to change what output section we are using. */ extern void rdata_section PARAMS ((void)); @@ -662,7 +660,7 @@ extern void sbss_section PARAMS ((void)); ) /* ISA has conditional trap instructions. */ -#define ISA_HAS_COND_TRAP (mips_isa >= 2) +#define ISA_HAS_COND_TRAP (mips_isa >= 2 && ! TARGET_MIPS16) /* ISA has multiply-accumulate instructions, madd and msub. */ #define ISA_HAS_MADD_MSUB (mips_isa == 32 \ @@ -1021,6 +1019,26 @@ extern int mips_abi; #ifndef SUBTARGET_CPP_SIZE_SPEC +/* Rules for SIZE_TYPE and PTRDIFF_TYPE are: + + both gp64 and long64 (not the options, but the corresponding flags, + so defaults came into play) are required in order to have `long' in + SIZE_TYPE and PTRDIFF_TYPE. + + on eabi, -mips1, -mips2 and -mips32 disable gp64, whereas mips3, + -mips4, -mips5 and -mips64 enable it. + + on other ABIs, -mips* options do not affect gp32/64, but the + default ISA affects the default gp size. + + -mgp32 disables gp64, whereas -mgp64 enables it. + + on eabi, gp64 implies long64. + + -mlong64, and -mabi=64 are the only other ways to enable long64. + +*/ + #if MIPS_ISA_DEFAULT != 3 && MIPS_ISA_DEFAULT != 4 && MIPS_ISA_DEFAULT != 5 && MIPS_ISA_DEFAULT != 64 /* 32-bit cases first. */ @@ -1028,158 +1046,166 @@ extern int mips_abi; #if MIPS_ABI_DEFAULT == ABI_EABI #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi|!mabi=*:\ - %{mips1|mips2|mips32|mlong32|mgp32:%{!mips3:%{!mips4:%{!mips5:%{!mips64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}} \ - %{mlong64:\ - %{mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}\ - %{mips3|mips4|mips5|mips64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}} \ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + %{mips3|mips4|mips5|mips64|mgp64: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ + %{!mips3:%{!mips4:%{!mips5:%{!mips64:%{!mgp64: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}} \ %{mabi=o64:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ + %{!mgp64|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{mgp64:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ %{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " +#define LONG_MAX_SPEC "\ +%{mlong64:-D__LONG_MAX__=9223372036854775807L}\ +%{!mlong64:\ + %{mabi=eabi|!mabi=*:\ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + %{mips3|mips4|mips5|mips64|mgp64: \ + -D__LONG_MAX__=9223372036854775807L}}}}}}}} \ +" +#else /* ABI_DEFAULT != ABI_EABI */ +#define LONG_MAX_SPEC "\ +%{mlong64:-D__LONG_MAX__=9223372036854775807L}\ +%{!mlong64:\ + %{mabi=eabi:\ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + %{mips3|mips4|mips5|mips64|mgp64: \ + -D__LONG_MAX__=9223372036854775807L}}}}}}}} \ +" #endif #if MIPS_ABI_DEFAULT == ABI_O64 #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi:\ - %{mips1|mips2|mips32|mlong32|mgp32:%{!mips3:%{!mips4:%{!mips5:%{!mips64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}} \ - %{mlong64:\ - %{mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}\ - %{mips3|mips4|mips5|mips64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}} \ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + %{mips3|mips4|mips5|mips64|mgp64: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ + %{!mips3:%{!mips4:%{!mips5:%{!mips64:%{!mgp64: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}} \ %{mabi=o64|!mabi=*:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ -%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}\ + %{!mgp64|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{mgp64:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ +%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " #endif #if MIPS_ABI_DEFAULT == ABI_32 #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi:\ - %{mips1|mips2|mips32|mlong32|mgp32:%{!mips3:%{!mips4:%{!mips5:%{!mips64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}} \ - %{mlong64:\ - %{mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}\ - %{mips3|mips4|mips5|mips64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}} \ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + %{mips3|mips4|mips5|mips64|mgp64: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ + %{!mips3:%{!mips4:%{!mips5:%{!mips64:%{!mgp64: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}} \ %{mabi=o64:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ -%{mabi=32|!mabi=*:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}\ + %{!mgp64|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{mgp64:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ +%{mabi=32|!mabi=*:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " #endif #if MIPS_ABI_DEFAULT == ABI_MEABI #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi:\ - %{mips1|mips2|mips32|mlong32|mgp32:%{!mips3:%{!mips4:%{!mips5:%{!mips64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}} \ - %{mlong64:\ - %{mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}\ - %{mips3|mips4|mips5|mips64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}} \ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + %{mips3|mips4|mips5|mips64|mgp64: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ + %{!mips3:%{!mips4:%{!mips5:%{!mips64:%{!mgp64: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}}}}}}} \ %{mabi=o64:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ -%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}\ -%{mabi=meabi|!mabi=*:\ - %{mips3|mips4|mips5|mips64|mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{!mips3:%{!mips4:%{!mips5:%{!mips64:%{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}}}}} \ + %{!mgp64|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{mgp64:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ +%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi|!mabi=*:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " #endif #else /* 64-bit default ISA. */ - #if MIPS_ABI_DEFAULT == ABI_EABI #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi|!mabi=*: \ - %{mips1|mips2|mips32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mips3|mips4|mips5|mips64:%{!mips1:%{!mips2:%{!mips32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}\ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}}}}}}}\ - %{mgp64:%{!mlong32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}} \ %{mabi=o64:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ + %{mgp32|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mgp32:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ %{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +" +#define LONG_MAX_SPEC "\ +%{mlong64:-D__LONG_MAX__=9223372036854775807L}\ +%{!mlong64:\ + %{mabi=eabi|!mabi=*:\ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + -D__LONG_MAX__=9223372036854775807L}}}}}}}\ +" +#else /* ABI_DEFAULT != ABI_EABI */ +#define LONG_MAX_SPEC "\ +%{mlong64:-D__LONG_MAX__=9223372036854775807L}\ +%{!mlong64:\ + %{mabi=eabi:\ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + -D__LONG_MAX__=9223372036854775807L}}}}}}}\ " #endif #if MIPS_ABI_DEFAULT == ABI_O64 #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi: \ - %{mips1|mips2|mips32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mips3|mips4|mips5|mips64:%{!mips1:%{!mips2:%{!mips32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}\ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}}}}}}}\ - %{mgp64:%{!mlong32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}} \ %{mabi=o64|!mabi=*:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ -%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}\ + %{mgp32|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mgp32:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ +%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " #endif #if MIPS_ABI_DEFAULT == ABI_32 #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi:\ - %{mips1|mips2|mips32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mips3|mips4|mips5|mips64:%{!mips1:%{!mips2:%{!mips32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}\ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}}}}}}}\ - %{mgp64:%{!mlong32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}} \ %{mabi=o64:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ -%{mabi=32|!mabi=*:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}\ + %{mgp32|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mgp32:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ +%{mabi=32|!mabi=*:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " #endif #if MIPS_ABI_DEFAULT == ABI_MEABI #define SUBTARGET_CPP_SIZE_SPEC "\ %{mabi=eabi:\ - %{mips1|mips2|mips32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{mips3|mips4|mips5|mips64:%{!mips1:%{!mips2:%{!mips32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}\ - %{!mips1:%{!mips2:%{!mips3:%{!mips4:%{!mips5:%{!mips32:%{!mips64:%{!mlong32:%{!mlong64:%{!mgp32:%{!mgp64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}}}}}}}\ - %{mgp64:%{!mlong32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}\ + %{mips1|mips2|mips32|mgp32|mlong32: \ + -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mips1:%{!mips2:%{!mips32:%{!mgp32:%{!mlong32: \ + -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}}} \ %{mabi=o64:\ - %{mlong64:\ - %{!mgp32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \ - %{mgp32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ - %{!mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}} \ -%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}\ -%{mabi=meabi|!mabi=*:\ - %{mips1|mips2|mips32|mlong32: -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ - %{!mips1:%{!mips2:%{!mips32:%{!mlong32:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}}}} \ + %{mgp32|!-mlong64:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ + %{!mgp32:%{mlong64:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int}}} \ +%{mabi=32:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ +%{mabi=meabi|!mabi=*:-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int} \ " #endif @@ -1193,16 +1219,6 @@ extern int mips_abi; #define SUBTARGET_CPP_SPEC "" #endif -/* If we're using 64bit longs, then we have to define __LONG_MAX__ - correctly. Similarly for 64bit ints and __INT_MAX__. */ -#ifndef LONG_MAX_SPEC -#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_LONG64) -#define LONG_MAX_SPEC "%{!mlong32:-D__LONG_MAX__=9223372036854775807L}" -#else -#define LONG_MAX_SPEC "%{mlong64:-D__LONG_MAX__=9223372036854775807L}" -#endif -#endif - /* Define appropriate macros for fpr register size. */ #ifndef CPP_FPR_SPEC #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_FLOAT64) @@ -1546,10 +1562,6 @@ do { \ /* Target machine storage layout */ -/* Define in order to support both big and little endian float formats - in the same gcc binary. */ -#define REAL_ARITHMETIC - /* Define this if most significant bit is lowest numbered in instructions that operate on numbered bit-fields. */ @@ -1569,14 +1581,6 @@ do { \ #define LIBGCC2_WORDS_BIG_ENDIAN 0 #endif -/* Number of bits in an addressable storage unit */ -#define BITS_PER_UNIT 8 - -/* Width in bits of a "word", which is the contents of a machine register. - Note that this is not necessarily the width of data type `int'; - if using 16-bit ints on a 68000, this would still be 32. - But on a machine with 16-bit registers, this would be 16. */ -#define BITS_PER_WORD (TARGET_64BIT ? 64 : 32) #define MAX_BITS_PER_WORD 64 /* Width of a word, in units (bytes). */ @@ -1586,6 +1590,13 @@ do { \ /* For MIPS, width of a floating point register. */ #define UNITS_PER_FPREG (TARGET_FLOAT64 ? 8 : 4) +/* If register $f0 holds a floating-point value, $f(0 + FP_INC) is + the next available register. */ +#define FP_INC (TARGET_FLOAT64 || TARGET_SINGLE_FLOAT ? 1 : 2) + +/* The largest size of value that can be held in floating-point registers. */ +#define UNITS_PER_FPVALUE (FP_INC * UNITS_PER_FPREG) + /* A C expression for the size in bits of the type `int' on the target machine. If you don't define this, the default is one word. */ @@ -1615,12 +1626,6 @@ do { \ words. */ #define LONG_LONG_TYPE_SIZE 64 -/* A C expression for the size in bits of the type `char' on the - target machine. If you don't define this, the default is one - quarter of a word. (If this would be less than one storage unit, - it is rounded up to one unit.) */ -#define CHAR_TYPE_SIZE BITS_PER_UNIT - /* A C expression for the size in bits of the type `float' on the target machine. If you don't define this, the default is one word. */ @@ -2010,15 +2015,6 @@ extern char mips_hard_regno_mode_ok[][FIRST_PSEUDO_REGISTER]; #define PIC_OFFSET_TABLE_REGNUM (GP_REG_FIRST + 28) #define PIC_FUNCTION_ADDR_REGNUM (GP_REG_FIRST + 25) - -/* Initialize embedded_pic_fnaddr_rtx before RTL generation for - each function. We used to do this in FINALIZE_PIC, but FINALIZE_PIC - isn't always called for static inline functions. */ -#define INIT_EXPANDERS \ -do { \ - embedded_pic_fnaddr_rtx = NULL; \ - mips16_gp_pseudo_rtx = NULL; \ -} while (0) /* Define the classes of registers for register constraints in the machine description. Also define ranges of constants. @@ -2744,7 +2740,7 @@ extern struct mips_frame_info current_frame_info; to give us MIPS cc compatibility. */ #define RETURN_IN_MEMORY(TYPE) \ - (TYPE_MODE (TYPE) == BLKmode) + mips_return_in_memory (TYPE) #define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT @@ -3346,12 +3342,12 @@ typedef struct mips_args { If you are changing this macro, you should look at mips_select_section and see if it needs a similar change. */ -#define ENCODE_SECTION_INFO(DECL) \ +#define ENCODE_SECTION_INFO(DECL, FIRST) \ do \ { \ if (TARGET_MIPS16) \ { \ - if (TREE_CODE (DECL) == STRING_CST \ + if ((FIRST) && TREE_CODE (DECL) == STRING_CST \ && ! flag_writable_strings \ /* If this string is from a function, and the function will \ go in a gnu linkonce section, then we can't directly \ @@ -3418,7 +3414,8 @@ do \ \ else if (HALF_PIC_P ()) \ { \ - HALF_PIC_ENCODE (DECL); \ + if (FIRST) \ + HALF_PIC_ENCODE (DECL); \ } \ } \ while (0)