]> git.ipfire.org Git - thirdparty/gcc.git/commit
LoongArch: Add the macro implementation of mcmodel=extreme.
authorLulu Cheng <chenglulu@loongson.cn>
Thu, 25 Jan 2024 11:10:46 +0000 (19:10 +0800)
committerLulu Cheng <chenglulu@loongson.cn>
Fri, 2 Feb 2024 01:16:11 +0000 (09:16 +0800)
commitfa972949d0f45696f95fe098232083ef37cccea1
tree2d1f1f2a3a05418a9f195b8b08739af258be20fd
parent252f7705a52240a0a2949842c8e33a0db2ea613b
LoongArch: Add the macro implementation of mcmodel=extreme.

gcc/ChangeLog:

* config/loongarch/loongarch-protos.h (loongarch_symbol_extreme_p):
Add function declaration.
* config/loongarch/loongarch.cc (loongarch_symbolic_constant_p):
For SYMBOL_PCREL64, non-zero addend of "la.local $rd,$rt,sym+addend"
is not allowed
(loongarch_load_tls): Added macro support in extreme mode.
(loongarch_call_tls_get_addr): Likewise.
(loongarch_legitimize_tls_address): Likewise.
(loongarch_force_address): Likewise.
(loongarch_legitimize_move): Likewise.
(loongarch_output_mi_thunk): Likewise.
(loongarch_option_override_internal): Remove the code that detects
explicit relocs status.
(loongarch_handle_model_attribute): Likewise.
* config/loongarch/loongarch.md (movdi_symbolic_off64): New template.
* config/loongarch/predicates.md (symbolic_off64_operand): New predicate.
(symbolic_off64_or_reg_operand): Likewise.

gcc/testsuite/ChangeLog:

* gcc.target/loongarch/attr-model-5.c: New test.
* gcc.target/loongarch/func-call-extreme-5.c: New test.
* gcc.target/loongarch/func-call-extreme-6.c: New test.
* gcc.target/loongarch/tls-extreme-macro.c: New test.
gcc/config/loongarch/loongarch-protos.h
gcc/config/loongarch/loongarch.cc
gcc/config/loongarch/loongarch.md
gcc/config/loongarch/predicates.md
gcc/testsuite/gcc.target/loongarch/attr-model-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c [new file with mode: 0644]