According to Xuerui's LLVM changeset [1], doing so can make a significant performace gain.
Bootstrapped and regtested on loongarch64-linux-gnu. Ok for GCC 14? [1]:https://reviews.llvm.org/D148622 gcc/ChangeLog: * config/loongarch/loongarch.cc (loongarch_option_override_internal): If -falign-functions is used but the alignment is not explicitly specified, set it to 4 * loongarch_issue_rate (). Likewise for -falign-loops. --- gcc/config/loongarch/loongarch.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index 06fc1cd0604..6552484de7c 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -6236,6 +6236,17 @@ loongarch_option_override_internal (struct gcc_options *opts) && !opts->x_optimize_size) opts->x_flag_prefetch_loop_arrays = 1; + /* Align functions and loops to (issue rate) * (insn size) to improve + the throughput of the fetching units. */ + char *align = XNEWVEC (char, 16); + sprintf (align, "%d", loongarch_issue_rate () * 4); + + if (opts->x_flag_align_functions && !opts->x_str_align_functions) + opts->x_str_align_functions = align; + + if (opts->x_flag_align_loops && !opts->x_str_align_loops) + opts->x_str_align_loops = align; + if (TARGET_DIRECT_EXTERN_ACCESS && flag_shlib) error ("%qs cannot be used for compiling a shared library", "-mdirect-extern-access"); -- 2.40.0