From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id DC64E385840F for ; Thu, 17 Mar 2022 15:09:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DC64E385840F Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id BBFB01F37F for ; Thu, 17 Mar 2022 15:09:19 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id A565C13B72 for ; Thu, 17 Mar 2022 15:09:19 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id sqSwJh9PM2JoQwAAMHmgww (envelope-from ) for ; Thu, 17 Mar 2022 15:09:19 +0000 Message-ID: <2efa0fec-aea3-3b9e-61f2-7f0f332668e7@suse.de> Date: Thu, 17 Mar 2022 16:09:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: [PING^2][PATCH][final] Handle compiler-generated asm insn Content-Language: en-US From: Tom de Vries To: gcc-patches@gcc.gnu.org References: <20220222135513.GA1591@delia.home> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Mar 2022 15:09:22 -0000 On 3/9/22 13:50, Tom de Vries wrote: > On 2/22/22 14:55, Tom de Vries wrote: >> 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? >> > Ping^2. Tobias just reported an ICE in PR104968, and this patch fixes it. I'd like to known whether this patch is acceptable for stage 4 or not. If not, I need to fix PR104968 in a different way. Say, disable -mcomment by default, or trying harder to propagate source info on outlined functions. Thanks, - Tom >> [final] Handle compiler-generated asm insn >> >> gcc/ChangeLog: >> >> 2022-02-21  Tom de Vries  >> >>     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 >>             }