diff options
| -rw-r--r-- | gcc/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/config/mips/t-vr | 35 | ||||
| -rw-r--r-- | gcc/config/mips/vr.h | 7 | 
3 files changed, 18 insertions, 32 deletions
| diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4268d24..c19a7b0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@  2002-10-14  Richard Sandiford  <rsandifo@redhat.com> +	* config/mips/vr.h (DRIVER_SELF_SPECS): Define. +	* config/mips/t-vr (MULTILIB_OPTIONS): Remove mlong32. +	(MULTILIB_DIRNAMES): Remove long32. +	(MULTILIB_EXCEPTIONS): Don't build -mabi=32 -mgp32 multilibs. +	(MULTILIB_REDUNDANT_DIRS): Remove. + +2002-10-14  Richard Sandiford  <rsandifo@redhat.com> +  	* doc/tm.texi (DRIVER_SELF_SPECS): Document.  	* gcc.c (driver_self_specs): New variable.  	(do_self_spec): New function. diff --git a/gcc/config/mips/t-vr b/gcc/config/mips/t-vr index 7af78ab..68daad8 100644 --- a/gcc/config/mips/t-vr +++ b/gcc/config/mips/t-vr @@ -39,7 +39,7 @@ MULTILIB_OPTIONS =			\  	EL/EB				\  	mabi=32/mabi=o64/mabi=eabi	\  	mgp32				\ -	mlong32/mlong64			\ +	mlong64				\  	mips16				\  	march=vr5400/march=vr4100 @@ -47,7 +47,7 @@ MULTILIB_DIRNAMES =	\  	el eb		\  	o32 o64 eabi	\  	gp32		\ -	long32 long64	\ +	long64		\  	mips16		\  	vr5400 vr4100 @@ -59,38 +59,9 @@ MULTILIB_MATCHES = EL=mel EB=meb  # without a -mabi flag.  MULTILIB_EXCEPTIONS =				\  	*mabi=32/mlong64*			\ -	*mabi=32/mgp32/mlong64*			\ +	*mabi=32/mgp32*				\  	*mabi=o64/mgp32*			\  	*mabi=o64/mlong64*			\  	mgp32* E[LB]/mgp32*			\  	mlong64* E[LB]/mlong64*			\  	*mips16/march=vr5* - -# The real value of this macro is very long, so generate it using a -# shell fragment.  The idea is to tell the GCC driver how -mabi, -# -mgp32, -mlong32 and -mlong64 interact, so that it choses the right -# library when some options are specified redundantly (for example, -# -mabi=32 -mgp32). - -# The core equalities are listed after "for changes in ".  The first -# entry assumes o64 is the default ABI. -MULTILIB_REDUNDANT_DIRS=` \ -	for endian in '' 'el' 'eb'; do					\ -	  for arch in '' 'vr5400' 'vr4100'				\ -		      'mips16' 'mips16/vr100'; do			\ -	    for changes in long32=					\ -			   o32/gp32=o32					\ -			   o32/gp32/long32=o32				\ -			   o32/long32=o32				\ -			   o64/long32=o64				\ -			   eabi/gp32/long32=eabi/gp32			\ -			   eabi/long64=eabi; do				\ -	      from=\`echo \$${changes} | sed 's/=.*//'\`;		\ -	      to=\`echo \$${changes} | sed 's/.*=//'\`;			\ -	      echo \$$endian \$$from \$$arch=\$$endian \$$to \$$arch	\ -		| sed -e 's: *= *:=:'					\ -		      -e 's:  *:/:g'					\ -		      -e 's:=$$:=.:';					\ -	    done;							\ -	  done;								\ -	done` diff --git a/gcc/config/mips/vr.h b/gcc/config/mips/vr.h index 4bdc245..1352599 100644 --- a/gcc/config/mips/vr.h +++ b/gcc/config/mips/vr.h @@ -22,3 +22,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */  #define MIPS_CPU_STRING_DEFAULT "vr4100"  #define MULTILIB_DEFAULTS \  	{ MULTILIB_ENDIAN_DEFAULT, MULTILIB_ABI_DEFAULT, "march=vr4100" } + +/* Make sure that -mlong64 always appears on the command line when +   64-bit longs are needed.  Also make sure that -mgp32 doesn't appear +   if it is redundant.  */ +#define DRIVER_SELF_SPECS \ +	"%{mabi=eabi:%{!mlong*:%{!mgp32:-mlong64}}}", \ +	"%{mabi=32:%<mgp32}" | 
