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:
parent
3a5d8ed231
commit
a5ad5d5c47
3 changed files with 12 additions and 88 deletions
|
@ -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
|
||||
;;
|
||||
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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
|
Loading…
Add table
Reference in a new issue