diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 827b8df..49016c1 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -7080,12 +7080,30 @@ aarch64_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem, } static void +aarch64_print_extension (void) +{ + const struct aarch64_option_extension *opt = NULL; + + for (opt = all_extensions; opt->name != NULL; opt++) + if ((aarch64_isa_flags & opt->flags_on) == opt->flags_on) + asm_fprintf (asm_out_file, "+%s", opt->name); + + asm_fprintf (asm_out_file, "\n"); +} + +static void aarch64_start_file (void) { if (selected_arch) - asm_fprintf (asm_out_file, "\t.arch %s\n", selected_arch->name); + { + asm_fprintf (asm_out_file, "\t.arch %s", selected_arch->name); + aarch64_print_extension (); + } else if (selected_cpu) - asm_fprintf (asm_out_file, "\t.cpu %s\n", selected_cpu->name); + { + asm_fprintf (asm_out_file, "\t.cpu %s", selected_cpu->name); + aarch64_print_extension (); + } default_file_start(); }