diff options
author | Xi Ruoyao <xry111@xry111.site> | 2022-07-26 21:46:20 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2022-07-27 10:19:55 +0800 |
commit | 66434729a79dfa2d9790aadeca7082511c387980 (patch) | |
tree | 212f0639bda831a62d4e61c4360b0bd60f6b4173 /gcc/config | |
parent | fd96c4b51a733f72fa567a96c253fb3ddf11bd2a (diff) | |
download | gcc-66434729a79dfa2d9790aadeca7082511c387980.zip gcc-66434729a79dfa2d9790aadeca7082511c387980.tar.gz gcc-66434729a79dfa2d9790aadeca7082511c387980.tar.bz2 |
LoongArch: adjust the default of -mexplicit-relocs by checking gas feature
The assembly produced with -mexplicit-relocs is not supported by gas <=
2.39. Check if the assembler supports explicit relocations and set the
default accordingly.
gcc/ChangeLog:
* configure.ac (HAVE_AS_EXPLICIT_RELOCS): Define to 1 if the
assembler supports explicit relocation for LoongArch.
* configure: Regenerate.
* config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
Define to 0 if not defined.
* config/loongarch/genopts/loongarch.opt.in
(TARGET_EXPLICIT_RELOCS): Default to HAVE_AS_EXPLICIT_RELOCS.
* config/loongarch/loongarch.opt: Regenerate.
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/loongarch/genopts/loongarch.opt.in | 2 | ||||
-rw-r--r-- | gcc/config/loongarch/loongarch-opts.h | 4 | ||||
-rw-r--r-- | gcc/config/loongarch/loongarch.opt | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/loongarch/genopts/loongarch.opt.in b/gcc/config/loongarch/genopts/loongarch.opt.in index 6f39500..a571b6b 100644 --- a/gcc/config/loongarch/genopts/loongarch.opt.in +++ b/gcc/config/loongarch/genopts/loongarch.opt.in @@ -155,7 +155,7 @@ Target Joined RejectNegative UInteger Var(loongarch_max_inline_memcpy_size) Init -mmax-inline-memcpy-size=SIZE Set the max size of memcpy to inline, default is 1024. mexplicit-relocs -Target Var(TARGET_EXPLICIT_RELOCS) Init(1) +Target Var(TARGET_EXPLICIT_RELOCS) Init(HAVE_AS_EXPLICIT_RELOCS) Use %reloc() assembly operators. ; The code model option names for -mcmodel. diff --git a/gcc/config/loongarch/loongarch-opts.h b/gcc/config/loongarch/loongarch-opts.h index eaa6fc0..da24ecd 100644 --- a/gcc/config/loongarch/loongarch-opts.h +++ b/gcc/config/loongarch/loongarch-opts.h @@ -87,4 +87,8 @@ loongarch_config_target (struct loongarch_target *target, while -m[no]-memcpy imposes a global constraint. */ #define TARGET_DO_OPTIMIZE_BLOCK_MOVE_P loongarch_do_optimize_block_move_p() +#ifndef HAVE_AS_EXPLICIT_RELOCS +#define HAVE_AS_EXPLICIT_RELOCS 0 +#endif + #endif /* LOONGARCH_OPTS_H */ diff --git a/gcc/config/loongarch/loongarch.opt b/gcc/config/loongarch/loongarch.opt index 7a8c5b4..9df7e18 100644 --- a/gcc/config/loongarch/loongarch.opt +++ b/gcc/config/loongarch/loongarch.opt @@ -162,7 +162,7 @@ Target Joined RejectNegative UInteger Var(loongarch_max_inline_memcpy_size) Init -mmax-inline-memcpy-size=SIZE Set the max size of memcpy to inline, default is 1024. mexplicit-relocs -Target Var(TARGET_EXPLICIT_RELOCS) Init(1) +Target Var(TARGET_EXPLICIT_RELOCS) Init(HAVE_AS_EXPLICIT_RELOCS) Use %reloc() assembly operators. ; The code model option names for -mcmodel. |