From patchwork Tue Feb 4 18:27:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 37680 Received: (qmail 114171 invoked by alias); 4 Feb 2020 18:27:43 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 114100 invoked by uid 89); 4 Feb 2020 18:27:43 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-wr1-f66.google.com Received: from mail-wr1-f66.google.com (HELO mail-wr1-f66.google.com) (209.85.221.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 04 Feb 2020 18:27:41 +0000 Received: by mail-wr1-f66.google.com with SMTP id w12so13447202wrt.2 for ; Tue, 04 Feb 2020 10:27:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=h68kMkCbHCsWULdRSTrWcLX0GSO3Iiwglv3w98L8WEY=; b=g04hv9xz8U7UDwwnBkaw7QCnzlppPOM1n4esMo4kk1IzVGIV8p72604EuqadRis0lR g8kTEez0Q3TenSPmk5hEvJSE0mXCS+rwK87XGfX7Yw3CwtukHZWzUsnXsziO0hSYsCXM Hxoo9d0pPkS7X2w9E9Tnvp7hJzSTukjXotYygjPB9028QqyJKV5Jj0oGm+e32JVHNk8m yJ5CGlYSHmXhhzm6KtZjMKnppyr9bIBZJwHjRSaBhbztG0eNta2vjhmuOXxG+7GQurJ4 7DEoWhvakOQmlwIaiy90x6Av2WDRXO5Q1mj0O9om9ZdsZBSaDJ8w/xCLvu+t+wu3X46L 5+jg== Return-Path: Received: from localhost ([212.69.42.53]) by smtp.gmail.com with ESMTPSA id x7sm31153216wrq.41.2020.02.04.10.27.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 04 Feb 2020 10:27:37 -0800 (PST) Date: Tue, 4 Feb 2020 18:27:37 +0000 From: Andrew Burgess To: "Sharma, Alok Kumar" Cc: "gdb-patches@sourceware.org" , "George, Jini Susan" , "Achra, Nitika" Subject: Re: [PATCH] Adding support to execute gdb.fortran for the flang compiler Message-ID: <20200204182737.GC4020@embecosm.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Fortune: You may get an opportunity for advancement today. Watch it! X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] User-Agent: Mutt/1.9.2 (2017-12-15) X-IsSubscribed: yes * Sharma, Alok Kumar [2020-02-04 16:17:13 +0000]: > Hi All, > > Problem Description: > > When gdb.fortran testsuite is executed with the flang compiler, many > tests fail. For an example below test case > $ make check RUNTESTFLAGS=' CC_FOR_TARGET="flang"' \ > TESTS="gdb.fortran/vla-datatypes.exp" > Test case fails for below testpoint > gdb_test "ptype intvla" "type = $int, allocatable \\\(11,22,33\\\)" > > Root cause: > > Output from gdb.log > ptype intvla^M > type = integer(kind=4), allocatable (11,22,33)^M > (gdb) FAIL: gdb.fortran/vla-datatypes.exp: ptype intvla > Though the actual output is correct, due to the wrong value of $int > the output is identified as FAIL. > Please check the below code form "lib/fortran.exp". > -------------------------------------- > proc fortran_int4 {} { > if {[test_compiler_info {gcc-4-[012]-*}]} { > return "int4" > } elseif {[test_compiler_info {gcc-*}]} { > return "integer\\(kind=4\\)" > } elseif {[test_compiler_info {icc-*}]} { > return "INTEGER\\(4\\)" > } else { > return "unknown" > } > } > -------------------------------------- > As evident from code for the flang compiler $int is derived as "unknown". > > Resolution: > > To fix this, support for the flang is added in file lib/fortran.exp > > Testing: > > - There was no regression seen > > Please let me know your comments. Thank you for this. There is a copyright assignment in place for AMD to GDB, so I went ahead and committed this. The exact patch I pushed is included below. Thanks again, Andrew --- gdb/fortran: Allow for using Flang in Fortran testing In lib/fortran.exp, in the helper function fortran_int4, there is currently no support for the LLVM Fortran compiler, Flang. As a result we return the default pattern 'unknown' to match against all 4-byte integer types, which causes many tests to fail. The same is true for all of the other helper functions related to finding a suitable type pattern. This commit adds support for Flang. There should be no change when testing with gfortran. gdb/testsuite/ChangeLog: * lib/fortran.exp (fortran_int4): Handle clang. (fortran_int8): Likewise. (fortran_real4): Likewise. (fortran_real8): Likewise. (fortran_complex4): Likewise. (fortran_logical4): Likewise. (fortran_character1): Likewise. Change-Id: Ife0d9828f78361fbd992bf21af746042b017dafc --- gdb/testsuite/ChangeLog | 10 ++++++++++ gdb/testsuite/lib/fortran.exp | 21 ++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/gdb/testsuite/lib/fortran.exp b/gdb/testsuite/lib/fortran.exp index 0c2627d82a9..54f32936773 100644 --- a/gdb/testsuite/lib/fortran.exp +++ b/gdb/testsuite/lib/fortran.exp @@ -32,7 +32,8 @@ proc set_lang_fortran {} { proc fortran_int4 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "int4" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "integer\\(kind=4\\)" } elseif {[test_compiler_info {icc-*}]} { return "INTEGER\\(4\\)" @@ -44,7 +45,8 @@ proc fortran_int4 {} { proc fortran_int8 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "int8" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "integer\\(kind=8\\)" } elseif {[test_compiler_info {icc-*}]} { return "INTEGER\\(8\\)" @@ -56,7 +58,8 @@ proc fortran_int8 {} { proc fortran_real4 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "real4" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "real\\(kind=4\\)" } elseif {[test_compiler_info {icc-*}]} { return "REAL\\(4\\)" @@ -68,7 +71,8 @@ proc fortran_real4 {} { proc fortran_real8 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "real8" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "real\\(kind=8\\)" } elseif {[test_compiler_info {icc-*}]} { return "REAL\\(8\\)" @@ -80,7 +84,8 @@ proc fortran_real8 {} { proc fortran_complex4 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "complex4" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "complex\\(kind=4\\)" } elseif {[test_compiler_info {icc-*}]} { return "COMPLEX\\(4\\)" @@ -92,7 +97,8 @@ proc fortran_complex4 {} { proc fortran_logical4 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "logical4" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "logical\\(kind=4\\)" } elseif {[test_compiler_info {icc-*}]} { return "LOGICAL\\(4\\)" @@ -104,7 +110,8 @@ proc fortran_logical4 {} { proc fortran_character1 {} { if {[test_compiler_info {gcc-4-[012]-*}]} { return "character1" - } elseif {[test_compiler_info {gcc-*}]} { + } elseif {[test_compiler_info {gcc-*}] + || [test_compiler_info {clang-*}]} { return "character\\(kind=1\\)" } elseif {[test_compiler_info {icc-*}]} { return "CHARACTER\\(1\\)"