RISC-V: Always define MULTILIB_DEFAULTS

- Define MULTILIB_DEFAULTS can reduce the total number of multilib if
   the default arch and ABI are listed in the multilib config.

 - This also simplify the implementation of --with-multilib-list.

gcc/ChangeLog:

	* config.gcc (riscv*-*-*): Add TARGET_RISCV_DEFAULT_ABI and
	TARGET_RISCV_DEFAULT_ARCH to tm_defines.
	Remove including riscv/withmultilib.h for --with-multilib-list.
	* config/riscv/riscv.h (STRINGIZING): New.
	(__STRINGIZING): Ditto.
	(MULTILIB_DEFAULTS): Ditto.
	* config/riscv/withmultilib.h: Remove.
This commit is contained in:
Kito Cheng 2020-11-20 14:14:18 +08:00
parent 3a5d8ed231
commit a5ad5d5c47
3 changed files with 12 additions and 88 deletions

View file

@ -4612,6 +4612,8 @@ case "${target}" in
exit 1
;;
esac
with_arch=`${srcdir}/config/riscv/arch-canonicalize ${with_arch}`
tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
# Make sure --with-abi is valid. If it was not specified,
# pick a default based on the ISA, preferring soft-float
@ -4633,6 +4635,7 @@ case "${target}" in
exit 1
;;
esac
tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
# Make sure ABI and ISA are compatible.
case "${with_abi},${with_arch}" in
@ -4675,7 +4678,6 @@ case "${target}" in
# Handle --with-multilib-list.
if test "x${with_multilib_list}" != xdefault; then
tm_file="${tm_file} riscv/withmultilib.h"
tmake_file="${tmake_file} riscv/t-withmultilib"
case ${with_multilib_list} in
@ -4687,42 +4689,6 @@ case "${target}" in
echo "--with-multilib-list=${with_multilib_list} not supported."
exit 1
esac
# Define macros to select the default multilib.
case ${with_arch} in
rv32gc)
tm_defines="${tm_defines} TARGET_MLIB_ARCH=1"
;;
rv64gc)
tm_defines="${tm_defines} TARGET_MLIB_ARCH=2"
;;
*)
echo "unsupported --with-arch for --with-multilib-list"
exit 1
esac
case ${with_abi} in
ilp32)
tm_defines="${tm_defines} TARGET_MLIB_ABI=1"
;;
ilp32f)
tm_defines="${tm_defines} TARGET_MLIB_ABI=2"
;;
ilp32d)
tm_defines="${tm_defines} TARGET_MLIB_ABI=3"
;;
lp64)
tm_defines="${tm_defines} TARGET_MLIB_ABI=4"
;;
lp64f)
tm_defines="${tm_defines} TARGET_MLIB_ABI=5"
;;
lp64d)
tm_defines="${tm_defines} TARGET_MLIB_ABI=6"
;;
*)
echo "unsupported --with-abi for --with-multilib"
exit 1
esac
fi
;;

View file

@ -76,6 +76,15 @@ extern const char *riscv_default_mtune (int argc, const char **argv);
#define ASM_MISA_SPEC ""
#endif
/* Reference:
https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html#Stringizing */
#define STRINGIZING(s) __STRINGIZING(s)
#define __STRINGIZING(s) #s
#define MULTILIB_DEFAULTS \
{"march=" STRINGIZING (TARGET_RISCV_DEFAULT_ARCH), \
"mabi=" STRINGIZING (TARGET_RISCV_DEFAULT_ABI) }
#undef ASM_SPEC
#define ASM_SPEC "\
%(subtarget_asm_debugging_spec) \

View file

@ -1,51 +0,0 @@
/* MULTILIB_DEFAULTS definitions for --with-multilib-list.
Copyright (C) 2018-2020 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3, or (at your
option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
#if TARGET_MLIB_ARCH == 1
# if TARGET_MLIB_ABI == 1
# define MULTILIB_DEFAULTS {"march=rv32gc", "mabi=ilp32" }
# elif TARGET_MLIB_ABI == 2
# define MULTILIB_DEFAULTS {"march=rv32gc", "mabi=ilp32f" }
# elif TARGET_MLIB_ABI == 3
# define MULTILIB_DEFAULTS {"march=rv32gc", "mabi=ilp32d" }
# else
# error "unsupported TARGET_MLIB_ABI value for rv32gc"
# endif
#elif TARGET_MLIB_ARCH == 2
# if TARGET_MLIB_ABI == 4
# define MULTILIB_DEFAULTS {"march=rv64gc", "mabi=lp64" }
# elif TARGET_MLIB_ABI == 5
# define MULTILIB_DEFAULTS {"march=rv64gc", "mabi=lp64f" }
# elif TARGET_MLIB_ABI == 6
# define MULTILIB_DEFAULTS {"march=rv64gc", "mabi=lp64d" }
# else
# error "unsupported TARGET_MLIB_ABI value for rv64gc"
# endif
#else
# error "unsupported TARGET_MLIB_ARCH value"
#endif