Hi all, Currently, -mprint-tune-info gives an assembly file that cannot be assembled because the branch cost values are not properly commented. For example: @.tune parameters @constant_limit: 1 @max_insns_skipped: 5 @prefetch.num_slots: 0 @prefetch.l1_cache_size: -1 @prefetch.l1_cache_line_size: -1 @prefer_constant_pool: 0 @branch_cost: (s:speed, p:predictable) s&p cost 00 1 01 1 10 4 11 4 @prefer_ldrd_strd: 0 @logical_op_non_short_circuit: [1,1] @prefer_neon_for_64bits: 0 @disparage_flag_setting_t16_encodings: 0 @string_ops_prefer_neon: 1 @max_insns_inline_memset: 8 @fusible_ops: 3 @sched_autopref: 0
This patch fixes it in the obvious way by adding the comment character on the branch costs printout: @.tune parameters @constant_limit: 1 @max_insns_skipped: 5 @prefetch.num_slots: 0 @prefetch.l1_cache_size: -1 @prefetch.l1_cache_line_size: -1 @prefer_constant_pool: 0 @branch_cost: (s:speed, p:predictable) @ s&p cost @ 00 1 @ 01 1 @ 10 4 @ 11 4 @prefer_ldrd_strd: 0 @logical_op_non_short_circuit: [1,1] @prefer_neon_for_64bits: 0 @disparage_flag_setting_t16_encodings: 0 @string_ops_prefer_neon: 1 @max_insns_inline_memset: 8 @fusible_ops: 3 @sched_autopref: 0 This assembles properly. Also, for pedantry's sake I've replaced the explicit '@' comment character with ASM_COMMENT_START, which I believe is the technically right thing to do. From my testing this has been broken since GCC 5 when the option was introduced, so I guess this isn't a regression fix. However, it is of minimal impact and quite obvious. So ok for trunk? Bootstrapped and tested on arm-none-linux-gnueabihf. Thanks, Kyrill 2016-02-07 Kyrylo Tkachov <kyrylo.tkac...@arm.com> * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead of explicit '@'. Add missing assembly comment marker on branch costs printout.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a5ca53d16bc756704c92f9d9de022b4fa6147fed..b7f7179d99ff211e6be518fdbbc4bdff312d6a07 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -25955,46 +25955,55 @@ arm_emit_eabi_attribute (const char *name, int num, int val) void arm_print_tune_info (void) { - asm_fprintf (asm_out_file, "\t@.tune parameters\n"); - asm_fprintf (asm_out_file, "\t\t@constant_limit:\t%d\n", + asm_fprintf (asm_out_file, "\t" ASM_COMMENT_START ".tune parameters\n"); + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "constant_limit:\t%d\n", current_tune->constant_limit); - asm_fprintf (asm_out_file, "\t\t@max_insns_skipped:\t%d\n", - current_tune->max_insns_skipped); - asm_fprintf (asm_out_file, "\t\t@prefetch.num_slots:\t%d\n", - current_tune->prefetch.num_slots); - asm_fprintf (asm_out_file, "\t\t@prefetch.l1_cache_size:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "max_insns_skipped:\t%d\n", current_tune->max_insns_skipped); + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "prefetch.num_slots:\t%d\n", current_tune->prefetch.num_slots); + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "prefetch.l1_cache_size:\t%d\n", current_tune->prefetch.l1_cache_size); - asm_fprintf (asm_out_file, "\t\t@prefetch.l1_cache_line_size:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "prefetch.l1_cache_line_size:\t%d\n", current_tune->prefetch.l1_cache_line_size); - asm_fprintf (asm_out_file, "\t\t@prefer_constant_pool:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "prefer_constant_pool:\t%d\n", (int) current_tune->prefer_constant_pool); - asm_fprintf (asm_out_file, "\t\t@branch_cost:\t(s:speed, p:predictable)\n"); - asm_fprintf (asm_out_file, "\t\t\t\ts&p\tcost\n"); - asm_fprintf (asm_out_file, "\t\t\t\t00\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "branch_cost:\t(s:speed, p:predictable)\n"); + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "\t\ts&p\tcost\n"); + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "\t\t00\t%d\n", current_tune->branch_cost (false, false)); - asm_fprintf (asm_out_file, "\t\t\t\t01\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "\t\t01\t%d\n", current_tune->branch_cost (false, true)); - asm_fprintf (asm_out_file, "\t\t\t\t10\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "\t\t10\t%d\n", current_tune->branch_cost (true, false)); - asm_fprintf (asm_out_file, "\t\t\t\t11\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "\t\t11\t%d\n", current_tune->branch_cost (true, true)); - asm_fprintf (asm_out_file, "\t\t@prefer_ldrd_strd:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "prefer_ldrd_strd:\t%d\n", (int) current_tune->prefer_ldrd_strd); - asm_fprintf (asm_out_file, "\t\t@logical_op_non_short_circuit:\t[%d,%d]\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "logical_op_non_short_circuit:\t[%d,%d]\n", (int) current_tune->logical_op_non_short_circuit_thumb, (int) current_tune->logical_op_non_short_circuit_arm); - asm_fprintf (asm_out_file, "\t\t@prefer_neon_for_64bits:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "prefer_neon_for_64bits:\t%d\n", (int) current_tune->prefer_neon_for_64bits); - asm_fprintf (asm_out_file, - "\t\t@disparage_flag_setting_t16_encodings:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "disparage_flag_setting_t16_encodings:\t%d\n", (int) current_tune->disparage_flag_setting_t16_encodings); - asm_fprintf (asm_out_file, "\t\t@string_ops_prefer_neon:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "string_ops_prefer_neon:\t%d\n", (int) current_tune->string_ops_prefer_neon); - asm_fprintf (asm_out_file, "\t\t@max_insns_inline_memset:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START + "max_insns_inline_memset:\t%d\n", current_tune->max_insns_inline_memset); - asm_fprintf (asm_out_file, "\t\t@fusible_ops:\t%u\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "fusible_ops:\t%u\n", current_tune->fusible_ops); - asm_fprintf (asm_out_file, "\t\t@sched_autopref:\t%d\n", + asm_fprintf (asm_out_file, "\t\t" ASM_COMMENT_START "sched_autopref:\t%d\n", (int) current_tune->sched_autopref); }