https://gcc.gnu.org/g:d51adfe84ba03e9206479518b03f01246db39505

commit d51adfe84ba03e9206479518b03f01246db39505
Author: Wang Pengcheng <wangpengcheng...@bytedance.com>
Date:   Wed Oct 23 23:11:53 2024 -0600

    [PATCH] RISC-V: override alignment of function/jump/loop
    
    Just like what AArch64 has done.
    
    Signed-off-by: Wang Pengcheng <wangpengcheng...@bytedance.com>
    
    gcc/ChangeLog:
    
            * config/riscv/riscv.cc (struct riscv_tune_param): Add new
            tune options.
            (riscv_override_options_internal): Override the default alignment
            when not optimizing for size.
    
    (cherry picked from commit 078f7c4f1fcf4d7099d855afb02dbaf71bebddbf)

Diff:
---
 gcc/config/riscv/riscv.cc | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 5b9d9b6b64be..56bd03f8ce7d 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -294,6 +294,9 @@ struct riscv_tune_param
   bool overlap_op_by_pieces;
   unsigned int fusible_ops;
   const struct cpu_vector_cost *vec_costs;
+  const char *function_align = nullptr;
+  const char *jump_align = nullptr;
+  const char *loop_align = nullptr;
 };
 
 
@@ -10282,6 +10285,18 @@ riscv_override_options_internal (struct gcc_options 
*opts)
                 ? &optimize_size_tune_info
                 : cpu->tune_param;
 
+  /* If not optimizing for size, set the default
+      alignment to what the target wants.  */
+  if (!opts->x_optimize_size)
+    {
+      if (opts->x_flag_align_loops && !opts->x_str_align_loops)
+       opts->x_str_align_loops = tune_param->loop_align;
+      if (opts->x_flag_align_jumps && !opts->x_str_align_jumps)
+       opts->x_str_align_jumps = tune_param->jump_align;
+      if (opts->x_flag_align_functions && !opts->x_str_align_functions)
+       opts->x_str_align_functions = tune_param->function_align;
+    }
+
   /* Use -mtune's setting for slow_unaligned_access, even when optimizing
      for size.  For architectures that trap and emulate unaligned accesses,
      the performance cost is too great, even for -Os.  Similarly, if

Reply via email to