summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
diff options
context:
space:
mode:
authorZhaoxin Yang <yangzhaoxin@loongson.cn>2025-08-01 14:45:46 +0800
committerGitHub <noreply@github.com>2025-08-01 14:45:46 +0800
commit283c47b4c5231a1baf528355f7119a73ac168968 (patch)
tree55e421dd3c9090a55cf84eb5d37ee8c558bd024f /lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
parent86916ff0f06b87e98523e05ddb455ecfac210f84 (diff)
[lld][LoongArch] GOT indirection to PC relative optimization (#123743)
In LoongArch, we try GOT indirection to PC relative optimization in normal or medium code model, whether or not with R_LARCH_RELAX relocation. From: * pcalau12i $a0, %got_pc_hi20(sym_got) * ld.w/d $a0, $a0, %got_pc_lo12(sym_got) To: * pcalau12i $a0, %pc_hi20(sym) * addi.w/d $a0, $a0, %pc_lo12(sym) If the original code sequence can be relaxed into a single instruction `pcaddi`, this patch will not be taken (see https://github.com/llvm/llvm-project/pull/123566). The optimization related to GOT is split into two locations because the `relax()` function is part of an iteration fixed-point algorithm. We should minimize it to achieve better linker performance. Note: Althouth the optimization has been performed, the GOT entries still exists, similarly to AArch64. Eliminating the entries will increase code complexity.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp')
0 files changed, 0 insertions, 0 deletions