diff options
author | Xi Ruoyao <xry111@xry111.site> | 2022-09-01 18:38:14 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2022-09-05 18:11:13 +0800 |
commit | 7742b797b3fd7acea28a0a0bff9bbb06e7c2d0ea (patch) | |
tree | fe622afbfde464c3de2fc07105e57bb159eb6ae4 /gcc/fortran | |
parent | 9c805ddf66a1cfc93e6cc65f768897da2bc303ed (diff) | |
download | gcc-7742b797b3fd7acea28a0a0bff9bbb06e7c2d0ea.zip gcc-7742b797b3fd7acea28a0a0bff9bbb06e7c2d0ea.tar.gz gcc-7742b797b3fd7acea28a0a0bff9bbb06e7c2d0ea.tar.bz2 |
LoongArch: add -mdirect-extern-access option
As a new target, LoongArch does not use copy relocation as it's
problematic in some circumstances. One bad consequence is we are
emitting GOT for all accesses to all extern objects with default
visibility. The use of GOT is not needed in statically linked
executables, OS kernels etc. The GOT entry just wastes space, and the
GOT access just slow down the execution in those environments.
Before -mexplicit-relocs, we used "-Wa,-mla-global-with-pcrel" to tell
the assembler not to use GOT for extern access. But with
-mexplicit-relocs, we have to opt the logic in GCC.
The name "-mdirect-extern-access" is learnt from x86 port.
gcc/ChangeLog:
* config/loongarch/genopts/loongarch.opt.in: Add
-mdirect-extern-access option.
* config/loongarch/loongarch.opt: Regenerate.
* config/loongarch/loongarch.cc
(loongarch_symbol_binds_local_p): Return true if
TARGET_DIRECT_EXTERN_ACCESS.
(loongarch_option_override_internal): Complain if
-mdirect-extern-access is used with -fPIC or -fpic.
* doc/invoke.texi: Document -mdirect-extern-access for
LoongArch.
gcc/testsuite/ChangeLog:
* gcc.target/loongarch/direct-extern-1.c: New test.
* gcc.target/loongarch/direct-extern-2.c: New test.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions