@@ -4723,7 +4723,7 @@ case "${target}" in
;;
riscv*-*-*)
- supported_defaults="abi arch tune riscv_attribute isa_spec tls"
+ supported_defaults="abi arch tune riscv_attribute isa_spec tls cmodel"
case "${target}" in
riscv-* | riscv32*) xlen=32 ;;
@@ -4879,6 +4879,21 @@ case "${target}" in
exit 1
esac
fi
+
+ # Handle --with-cmodel.
+ if test "x${with_cmodel}" != xdefault; then
+ # Make sure --with-cmodel is valid. If it was not specified,
+ # use medlow as the default value.
+ case "${with_cmodel}" in
+ medlow | medany | large)
+ ;;
+ *)
+ echo "invalid option for --with-cmodel: '${with_cmodel}', available values are 'medlow' 'medany' 'large'" 1>&2
+ exit 1
+ ;;
+ esac
+ tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_CMODEL=${with_cmodel}"
+ fi
;;
mips*-*-*)
@@ -6071,7 +6086,7 @@ case ${target} in
esac
t=
-all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu nan fp_32 odd_spreg_32 divide llsc mips-plt synci tls lxc1-sxc1 madd4 isa_spec compact-branches msa"
+all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu nan fp_32 odd_spreg_32 divide llsc mips-plt synci tls lxc1-sxc1 madd4 isa_spec compact-branches msa cmodel"
for option in $all_defaults
do
eval "val=\$with_"`echo $option | sed s/-/_/g`
@@ -65,6 +65,7 @@ extern const char *riscv_arch_help (int argc, const char **argv);
--with-tune is ignored if -mtune or -mcpu is specified.
--with-isa-spec is ignored if -misa-spec is specified.
--with-tls is ignored if -mtls-dialect is specified.
+ --with-cmodel is ignored if -mcmodel is specified.
But using default -march/-mtune value if -mcpu don't have valid option. */
#define OPTION_DEFAULT_SPECS \
@@ -77,6 +78,7 @@ extern const char *riscv_arch_help (int argc, const char **argv);
{"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \
{"isa_spec", "%{!misa-spec=*:-misa-spec=%(VALUE)}" }, \
{"tls", "%{!mtls-dialect=*:-mtls-dialect=%(VALUE)}"}, \
+ {"cmodel", "%{!mcmodel=*:-mcmodel=%(VALUE)}" }, \
#ifdef IN_LIBGCC2
#undef TARGET_64BIT
@@ -1000,6 +1000,7 @@ with_changes_root_url
enable_languages
with_multilib_list
with_multilib_generator
+with_cmodel
with_zstd
with_zstd_include
with_zstd_lib
@@ -1880,6 +1881,7 @@ Optional Packages:
SH and x86-64 only)
--with-multilib-generator
Multi-libs configuration string (RISC-V only)
+ --with-cmodel Code model configuration string (RISC-V only)
--with-zstd=PATH specify prefix directory for installed zstd library.
Equivalent to --with-zstd-include=PATH/include plus
--with-zstd-lib=PATH/lib
@@ -8381,6 +8383,15 @@ else
fi
+
+# Check whether --with-cmodel was given.
+if test "${with_cmodel+set}" = set; then :
+ withval=$with_cmodel; :
+else
+ with_cmodel=medlow
+fi
+
+
# -------------------------
# Checks for other programs
# -------------------------
@@ -21406,7 +21417,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21409 "configure"
+#line 21420 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -21512,7 +21523,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21515 "configure"
+#line 21526 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -1212,6 +1212,11 @@ AC_ARG_WITH(multilib-generator,
:,
with_multilib_generator=default)
+AC_ARG_WITH(cmodel,
+[AS_HELP_STRING([--with-cmodel], [Code model configuration string (RISC-V only)])],
+:,
+with_cmodel=medlow)
+
# -------------------------
# Checks for other programs
# -------------------------
@@ -1519,6 +1519,10 @@ Use big endian by default. Provide a multilib for little endian.
Use little endian by default. Provide a multilib for big endian.
@end table
+@item --with-cmodel=@var{cmodel}
+Specify what code model to use by default.
+Currently only implemented for riscv*-*-*.
+
@item --enable-threads
Specify that the target
supports threads. This affects the Objective-C compiler and runtime
@@ -31285,8 +31285,10 @@ element-misaligned vector memory access.
@item -mcmodel=medlow
Generate code for the medium-low code model. The program and its statically
defined symbols must lie within a single 2 GiB address range and must lie
-between absolute addresses @minus{}2 GiB and +2 GiB. Programs can be
-statically or dynamically linked. This is the default code model.
+between absolute addresses @minus{}2 GiB and +2 GiB. Programs can be statically
+or dynamically linked. This is the default code model unless GCC has been
+configured with @option{--with-cmodel=} specifying a different default code
+model.
@opindex mcmodel=medany
@item -mcmodel=medany