From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id sBWpBOArD2O8WDAAWB0awg (envelope-from ) for ; Wed, 31 Aug 2022 05:37:36 -0400 Received: by simark.ca (Postfix, from userid 112) id 1105E1E4A7; Wed, 31 Aug 2022 05:37:36 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=of07YYy8; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 9F92E1E222 for ; Wed, 31 Aug 2022 05:37:35 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2FF81383815E for ; Wed, 31 Aug 2022 09:37:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2FF81383815E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1661938655; bh=bG+hfRYizx94545DkIw+Cb83ketd7N85xJbLsemH2IY=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=of07YYy8yNMyuYZyW+X+8EOf6Z8pPJvRzaLZ7CeUZ+DtZmb5gQCJErctsYu5lB0GD GZi5eCLRfRyOuI1ZuRAJA9ozDbbVjSh+KM9Sl/ILCUrTca4zPTwRLl76RIf410RQax hZFuFE169+N8Ms+z8S2X7KgyrbyPCt71vOLPYxUI= Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by sourceware.org (Postfix) with ESMTPS id 7F1BB38582A7 for ; Wed, 31 Aug 2022 09:37:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7F1BB38582A7 X-IronPort-AV: E=McAfee;i="6500,9779,10455"; a="296196695" X-IronPort-AV: E=Sophos;i="5.93,277,1654585200"; d="scan'208";a="296196695" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2022 02:37:13 -0700 X-IronPort-AV: E=Sophos;i="5.93,277,1654585200"; d="scan'208";a="562981304" Received: from labpcdell3650-003.iul.intel.com (HELO localhost) ([172.28.49.87]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2022 02:37:12 -0700 To: gdb-patches@sourceware.org Subject: [PATCH v2 2/4] testsuite, fortran: Remove self assignment non-statements Date: Wed, 31 Aug 2022 11:36:48 +0200 Message-Id: <20220831093650.674582-3-nils-christian.kempke@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220831093650.674582-1-nils-christian.kempke@intel.com> References: <20220831093650.674582-1-nils-christian.kempke@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Nils-Christian Kempke via Gdb-patches Reply-To: Nils-Christian Kempke Cc: tom@tromey.com Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" There were a couple of places in the testsuite where instructions like var = var were written in the source code of tests. These were usually dummy statements meant to generate a line table entry at that line on which to break later on. This worked fine for gfortran and ifx, but it seems that, when compiled with ifort (2021.6.0) these statements do not actually create any assmbler instructions and especially no line table entries. Consider the program program test Integer var :: var = 1 var = var end program compiled with gfortran (13.0.0, -O0 -g). The linetable as emitted by 'objdump --dwarf=decodedline ./a.out' looks like test.f90: File name Line number Starting address View Stmt test.f90 1 0x401172 x test.f90 3 0x401176 x test.f90 4 0x401182 x test.f90 4 0x401185 x test.f90 4 0x401194 x test.f90 - 0x4011c0 actually containing line table info for line 3. Running gdb, breaking at 3 and checking the assembly we see 0x0000000000401172 <+0>: push %rbp 0x0000000000401173 <+1>: mov %rsp,%rbp => 0x0000000000401176 <+4>: mov 0x2ebc(%rip),%eax # 0x404038 0x000000000040117c <+10>: mov %eax,0x2eb6(%rip) # 0x404038 0x0000000000401182 <+16>: nop 0x0000000000401183 <+17>: pop %rbp 0x0000000000401184 <+18>: ret so two mov instructions are being issued for this assignment one copying the value into a register and one writing it back to the same memory. Ifort (2021.6.0, -O0 -g) on the other hand does not emit anything here and also has no line table entry: test.f90: File name Line number Starting address View Stmt test.f90 1 0x4040f8 x test.f90 4 0x404109 x test.f90 4 0x40410e x test.f90 - 0x404110 As I do not think that this is really a bug (on either side, gfortran/ifx or ifort), and as I don't think this behavior is covered in the Fortran standard, I changed these lines to become actual value assignments. This removes a few FAILs in the testsuite when ran with ifort. --- gdb/testsuite/gdb.fortran/library-module-lib.f90 | 2 +- gdb/testsuite/gdb.fortran/library-module-main.f90 | 2 +- gdb/testsuite/gdb.fortran/module.f90 | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gdb/testsuite/gdb.fortran/library-module-lib.f90 b/gdb/testsuite/gdb.fortran/library-module-lib.f90 index 1705afe9df8..a5b535a98c3 100644 --- a/gdb/testsuite/gdb.fortran/library-module-lib.f90 +++ b/gdb/testsuite/gdb.fortran/library-module-lib.f90 @@ -19,7 +19,7 @@ contains subroutine lib_func if (var_i .ne. 1) call abort var_i = 2 - var_i = var_i ! i-is-2-in-lib + var_i = 2 ! i-is-2-in-lib end subroutine lib_func end module lib diff --git a/gdb/testsuite/gdb.fortran/library-module-main.f90 b/gdb/testsuite/gdb.fortran/library-module-main.f90 index e55a3e92c54..dcd29f20a05 100644 --- a/gdb/testsuite/gdb.fortran/library-module-main.f90 +++ b/gdb/testsuite/gdb.fortran/library-module-main.f90 @@ -19,5 +19,5 @@ call lib_func if (var_i .ne. 2) call abort if (var_j .ne. 3) call abort - var_i = var_i ! i-is-2-in-main + var_i = 7 ! i-is-2-in-main end diff --git a/gdb/testsuite/gdb.fortran/module.f90 b/gdb/testsuite/gdb.fortran/module.f90 index f3ad70a3f89..f450373fdc1 100644 --- a/gdb/testsuite/gdb.fortran/module.f90 +++ b/gdb/testsuite/gdb.fortran/module.f90 @@ -40,18 +40,19 @@ end module moduse subroutine sub1 use mod1 if (var_i .ne. 1) call abort - var_i = var_i ! i-is-1 + var_i = 1 ! i-is-1 end subroutine sub2 use mod2 if (var_i .ne. 2) call abort - var_i = var_i ! i-is-2 + var_i = 2 ! i-is-2 end subroutine sub3 - USE mod3 - var_i = var_i ! i-is-3 + use mod3 + if (var_i .ne. 3) call abort + var_i = 3 ! i-is-3 END program module @@ -68,5 +69,5 @@ end module moduse if (var_i .ne. 14) call abort if (var_x .ne. 30) call abort if (var_z .ne. 31) call abort - var_b = var_b ! a-b-c-d + var_b = 11 ! a-b-c-d end -- 2.25.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928