From patchwork Thu Aug 9 11:05:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 28813 Received: (qmail 18621 invoked by alias); 9 Aug 2018 11:05:38 -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 18605 invoked by uid 89); 9 Aug 2018 11:05:37 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=flatten X-HELO: mail-wm0-f50.google.com Received: from mail-wm0-f50.google.com (HELO mail-wm0-f50.google.com) (74.125.82.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 09 Aug 2018 11:05:35 +0000 Received: by mail-wm0-f50.google.com with SMTP id y2-v6so5954989wma.1 for ; Thu, 09 Aug 2018 04:05:33 -0700 (PDT) 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=NAulBNJ3CsrnqfHea//Pc9vJRhYTDxRVotdcewRkRTw=; b=GDTK05Im8S87uLLb/6XGkk6jG2SCZD+SZw+grWccblUpExAX+tAZB/as8j5qoCbdzC nLJpkkHtkoR47IvE/RdprpN9KQzA8o4Z8VmH91EMvzKhwTwx58rCZ99RgrBaviRziHfq +kkHl0pfOG5pUcMp/gjP9Aikay8OnU0fIOSs4/Sl16na8xnDyCfsOOmKcSTqSRu5Kn3Y hYYJ4QIjaIiYds8L8oqUnElwXH8g8aOYo3obxzZ7CsT2gyE8BfEfNPppIlLNPDeJ0Uhd QwyaI2aGIASt6vwR19LVIvahndQPF1e5g0sRvCTNSYd/G0q36zXHt+g65jdcZA2dXjYI 1noQ== Return-Path: Received: from localhost (host81-140-215-41.range81-140.btcentralplus.com. [81.140.215.41]) by smtp.gmail.com with ESMTPSA id t69-v6sm9788019wmt.40.2018.08.09.04.05.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 09 Aug 2018 04:05:31 -0700 (PDT) Date: Thu, 9 Aug 2018 12:05:30 +0100 From: Andrew Burgess To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 1/2] gdb: Merge similar tests into a single test script Message-ID: <20180809110530.GT3155@embecosm.com> References: <87muu438nz.fsf@tromey.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <87muu438nz.fsf@tromey.com> X-Fortune: Linux: Where Don't We Want To Go Today? X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] User-Agent: Mutt/1.9.2 (2017-12-15) X-IsSubscribed: yes * Tom Tromey [2018-08-02 12:50:08 -0600]: > >>>>> "Andrew" == Andrew Burgess writes: > > Andrew> +foreach test_settings [list \ > Andrew> + [list "o1" \ > Andrew> + {debug optimize=-O1 \ > Andrew> + additional_flags=-DNOCLONE} \ > Andrew> + "6"] \ > Andrew> + [list "o3" \ > Andrew> + {debug optimize=-O3} \ > Andrew> + ""]\ > Andrew> + [list "o3_strict" \ > Andrew> + {debug optimize=-O3 \ > Andrew> + additional_flags=-gstrict-dwarf} \ > Andrew> + ""]] { > Andrew> + set test_prefix [lindex $test_settings 0] > Andrew> + set compile_flags [lindex $test_settings 1] > Andrew> + set sizeof_result [lindex $test_settings 2] > > For constant lists you can just use {} rather than [list], like > > {{o1 {debug optimize=-O1...} 6} > {o3 ... }} > > Also, if you flatten the list, you can use a destructuring foreach here, > like: > > foreach {test_prefix compile_flags sizeof_result} {o1 {debug optimize=-O1 ...} ...} > > Or, alternatively, use lassign to set the values. Thanks for the review. Updated version, the changes are: * Use {} to create a flattened list, * compile_flags and sizeof_result are extracted with lassign inside proc, and * Comment on vla_optimized_out explaining parameters. Thanks, Andrew --- gdb: Merge similar tests into a single test script The three test scripts: gdb/testsuite/gdb.base/vla-optimized-out.exp gdb/testsuite/gdb.base/vla-optimized-out-o3.exp gdb/testsuite/gdb.base/vla-optimized-out-o3-strict.exp are all pretty similar, with differences in the compile flags used, and some of the expected results. Instead of maintaining 3 files, merge them into a single test script, and use parameters to control the test behaviour. gdb/testsuite/ChangeLog: * gdb.base/vla-optimized-out-o3.exp: Delete. * gdb.base/vla-optimized-out-o3-strict.exp: Delete. * gdb.base/vla-optimized-out.exp: Extend to cover all of the deleted tests. --- gdb/testsuite/ChangeLog | 7 ++++ .../gdb.base/vla-optimized-out-o3-strict.exp | 40 ---------------------- gdb/testsuite/gdb.base/vla-optimized-out-o3.exp | 36 ------------------- gdb/testsuite/gdb.base/vla-optimized-out.exp | 35 ++++++++++++++----- 4 files changed, 34 insertions(+), 84 deletions(-) delete mode 100644 gdb/testsuite/gdb.base/vla-optimized-out-o3-strict.exp delete mode 100644 gdb/testsuite/gdb.base/vla-optimized-out-o3.exp diff --git a/gdb/testsuite/gdb.base/vla-optimized-out-o3-strict.exp b/gdb/testsuite/gdb.base/vla-optimized-out-o3-strict.exp deleted file mode 100644 index 81ada875b37..00000000000 --- a/gdb/testsuite/gdb.base/vla-optimized-out-o3-strict.exp +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2018 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Check whether we can determine the size of an optimized-out vla. - -standard_testfile - -if { [prepare_for_testing "failed to prepare" $testfile vla-optimized-out.c \ - {debug optimize=-O3 additional_flags=-gstrict-dwarf}] } { - return -1 -} - -proc vla_optimized_out { } { - if ![runto f1] { - fail "can't run to f1" - return - } - - gdb_test "p a" \ - { = } \ - "printed optimized out vla" - - gdb_test "p sizeof (a)" \ - { = } \ - "printed optimized out size of optimized out vla" -} - -vla_optimized_out diff --git a/gdb/testsuite/gdb.base/vla-optimized-out-o3.exp b/gdb/testsuite/gdb.base/vla-optimized-out-o3.exp deleted file mode 100644 index 60707e7aff8..00000000000 --- a/gdb/testsuite/gdb.base/vla-optimized-out-o3.exp +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2018 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Check whether we can print an optimized-out vla. - -standard_testfile - -if { [prepare_for_testing "failed to prepare" $testfile "vla-optimized-out.c" \ - {debug optimize=-O3}] } { - return -1 -} - -proc vla_optimized_out { } { - if ![runto f1] { - fail "can't run to f1" - return - } - - gdb_test "p a" \ - { = } \ - "printed optimized out vla" -} - -vla_optimized_out diff --git a/gdb/testsuite/gdb.base/vla-optimized-out.exp b/gdb/testsuite/gdb.base/vla-optimized-out.exp index b27569ed1e1..298b689bfbf 100644 --- a/gdb/testsuite/gdb.base/vla-optimized-out.exp +++ b/gdb/testsuite/gdb.base/vla-optimized-out.exp @@ -17,24 +17,43 @@ standard_testfile -if { [prepare_for_testing "failed to prepare" $testfile $srcfile \ - {debug optimize=-O1 additional_flags=-DNOCLONE}] } { - return -1 -} +# The EXE_SUFFIX is a string appended to the name of the test binary +# to make it unique per variation. +# The OPTIONS is a two item list, the first item is a list of compiler +# flags used for building the test binary, and the second item is a +# pattern which matches some expected output within this proc. +proc vla_optimized_out {exe_suffix options} { + global testfile srcfile + + lassign $options compile_flags sizeof_result + + if { [prepare_for_testing "failed to prepare" "$testfile-$exe_suffix" $srcfile \ + $compile_flags] } { + return -1 + } -proc vla_optimized_out { } { if ![runto f1] { fail "can't run to f1" return } gdb_test "p a" \ - { = } \ + " = " \ "printed optimized out vla" gdb_test "p sizeof (a)" \ - { = 6} \ + " = $sizeof_result" \ "printed size of optimized out vla" } -vla_optimized_out +foreach {test_prefix options} \ + { "o1" {{debug optimize=-O1 additional_flags=-DNOCLONE} "6"} \ + "o3" {{debug optimize=-O3} ""} \ + "o3_strict" {{debug optimize=-O3 \ + additional_flags=-gstrict-dwarf} \ + ""}} { + with_test_prefix $test_prefix { + vla_optimized_out $test_prefix $options + } +} +