aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/constexpr.cc
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2023-04-23 20:52:22 +0800
committerXi Ruoyao <xry111@xry111.site>2023-05-07 00:58:15 +0800
commitd90eed13ae655fbb4adb173fdae392b082e82a56 (patch)
tree1ea625dfe895395e229422f2834b538b372f65b7 /gcc/cp/constexpr.cc
parentbe6c13d5cef6fd9ca97dea7a6f5fbf93c51235b5 (diff)
downloadgcc-d90eed13ae655fbb4adb173fdae392b082e82a56.zip
gcc-d90eed13ae655fbb4adb173fdae392b082e82a56.tar.gz
gcc-d90eed13ae655fbb4adb173fdae392b082e82a56.tar.bz2
LoongArch: Enable shrink wrapping
This commit implements the target macros for shrink wrapping of function prologues/epilogues shrink wrapping on LoongArch. Bootstrapped and regtested on loongarch64-linux-gnu. I don't have an access to SPEC CPU so I hope the reviewer can perform a benchmark to see if there is real benefit. gcc/ChangeLog: * config/loongarch/loongarch.h (struct machine_function): Add reg_is_wrapped_separately array for register wrapping information. * config/loongarch/loongarch.cc (loongarch_get_separate_components): New function. (loongarch_components_for_bb): Likewise. (loongarch_disqualify_components): Likewise. (loongarch_process_components): Likewise. (loongarch_emit_prologue_components): Likewise. (loongarch_emit_epilogue_components): Likewise. (loongarch_set_handled_components): Likewise. (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define. (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise. (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise. (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise. (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise. (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise. (loongarch_for_each_saved_reg): Skip registers that are wrapped separately. gcc/testsuite/ChangeLog: * gcc.target/loongarch/shrink-wrap.c: New test.
Diffstat (limited to 'gcc/cp/constexpr.cc')
0 files changed, 0 insertions, 0 deletions