Hi, For the nvptx port, with -mptx-comment we have in pr53465.s: ... // #APP // 9 "gcc/testsuite/gcc.c-torture/execute/pr53465.c" 1 // Start: Added by -minit-regs=3: // #NO_APP mov.u32 %r26, 0; // #APP // 9 "gcc/testsuite/gcc.c-torture/execute/pr53465.c" 1 // End: Added by -minit-regs=3: // #NO_APP ...
The comments where generated using the compiler-generated equivalent of: ... asm ("// Comment"); ... but both the printed location and the NO_APP/APP are unnecessary for a compiler-generated asm insn. Fix this by handling ASM_INPUT_SOURCE_LOCATION == UNKNOWN_LOCATION in final_scan_insn_1, such what we simply get: ... // Start: Added by -minit-regs=3: mov.u32 %r26, 0; // End: Added by -minit-regs=3: ... Tested on nvptx. OK for trunk? Thanks, - Tom [final] Handle compiler-generated asm insn gcc/ChangeLog: 2022-02-21 Tom de Vries <tdevr...@suse.de> PR rtl-optimization/104596 * config/nvptx/nvptx.cc (gen_comment): Use gen_rtx_ASM_INPUT instead of gen_rtx_ASM_INPUT_loc. * final.cc (final_scan_insn_1): Handle ASM_INPUT_SOURCE_LOCATION == UNKNOWN_LOCATION. --- gcc/config/nvptx/nvptx.cc | 3 +-- gcc/final.cc | 17 +++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc index 858789e6df7..4124c597f24 100644 --- a/gcc/config/nvptx/nvptx.cc +++ b/gcc/config/nvptx/nvptx.cc @@ -5381,8 +5381,7 @@ gen_comment (const char *s) size_t len = strlen (ASM_COMMENT_START) + strlen (sep) + strlen (s) + 1; char *comment = (char *) alloca (len); snprintf (comment, len, "%s%s%s", ASM_COMMENT_START, sep, s); - return gen_rtx_ASM_INPUT_loc (VOIDmode, ggc_strdup (comment), - cfun->function_start_locus); + return gen_rtx_ASM_INPUT (VOIDmode, ggc_strdup (comment)); } /* Initialize all declared regs at function entry. diff --git a/gcc/final.cc b/gcc/final.cc index a9868861bd2..e6443ef7a4f 100644 --- a/gcc/final.cc +++ b/gcc/final.cc @@ -2642,15 +2642,20 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, if (string[0]) { expanded_location loc; + bool unknown_loc_p + = ASM_INPUT_SOURCE_LOCATION (body) == UNKNOWN_LOCATION; - app_enable (); - loc = expand_location (ASM_INPUT_SOURCE_LOCATION (body)); - if (*loc.file && loc.line) - fprintf (asm_out_file, "%s %i \"%s\" 1\n", - ASM_COMMENT_START, loc.line, loc.file); + if (!unknown_loc_p) + { + app_enable (); + loc = expand_location (ASM_INPUT_SOURCE_LOCATION (body)); + if (*loc.file && loc.line) + fprintf (asm_out_file, "%s %i \"%s\" 1\n", + ASM_COMMENT_START, loc.line, loc.file); + } fprintf (asm_out_file, "\t%s\n", string); #if HAVE_AS_LINE_ZERO - if (*loc.file && loc.line) + if (!unknown_loc_p && loc.file && *loc.file && loc.line) fprintf (asm_out_file, "%s 0 \"\" 2\n", ASM_COMMENT_START); #endif }