From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by sourceware.org (Postfix) with ESMTPS id 880C9383E83B; Mon, 28 Dec 2020 18:27:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 880C9383E83B Received: by mail-wr1-x42f.google.com with SMTP id y17so12115288wrr.10; Mon, 28 Dec 2020 10:27:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=L1V1GTSlSLjnHqx+xyT4S9sbw0pZgqYBJ4cAowN8eoo=; b=UIA6h72fFgruYCGiLsHNZEMFQ7Ihc42/ALWMSyUyHWu2qKjn03gowwqc8qMG0/9SSn ZeyHU21y7SL2ss4JqLlYCzL/wxMzBOHjq3vkrgrDEeFad4gdcqzieEAxfb3smSXjkrpz GNZo8N3Qxw/psQdWsd8Jbta2cjJmjwtdxNBXTJSF49at4x+2VgOx0MZovgN5npD9LO/B 72c/DqkqkqqPUxOaMXpS07QmdWnTha8FI2qWDly/D+KYtdFBq6u7sjJRSIHN8wILF3dd ppx7BaaPHbTGl3JQdxNKK+h473DXP1l8EeQm0kwCkxhseXLb3CxHFF6TbM1Kk0PbnNqO QNgw== X-Gm-Message-State: AOAM532V9EkOdlssCYAV+dKIle6hE2KaTc30ATj8fPAz69BFbsNMNn3K XwwC+arwhGdJrcg/H0eOnYA= X-Google-Smtp-Source: ABdhPJyuo/Gt2qdRSBEEuTEIzBFYTWZiWACsUOcR0Q+An9M6nX8AiNCvb1d9yZi7Z+WwZK6yf5v5eA== X-Received: by 2002:a5d:6a88:: with SMTP id s8mr52787977wru.118.1609180035657; Mon, 28 Dec 2020 10:27:15 -0800 (PST) Received: from [10.21.4.25] ([109.190.253.11]) by smtp.googlemail.com with ESMTPSA id v1sm53560613wrr.48.2020.12.28.10.27.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 28 Dec 2020 10:27:15 -0800 (PST) Subject: Re: Add dg-require-wchars to libstdc++ testsuite To: Alexandre Oliva , libstdc++@gcc.gnu.org Cc: gcc-patches@gcc.gnu.org, Corentin Gay References: From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= Message-ID: Date: Mon, 28 Dec 2020 19:27:05 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, NICE_REPLY_A, RCVD_IN_ABUSEAT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Dec 2020 18:27:18 -0000 On 22/12/20 10:12 pm, Alexandre Oliva wrote: > Some tests uses structures from the libstdc++ that are present only if > the target has a wchar.h header. However, those tests do not check > that the target supports those constructs before executing the tests. Like you already spotted in another thread those tests should be in some sub-folder containing 'wchar_t' to be considered as UNSUP. Maybe Jonathan will prefer them to be moved even if your approach seems more convenient to me. > > The function dg-require-wchars checks that "_GLIBCXX_USE_WCHAR_T" is > defined by the configure of the libstdc++. If it is not the case, the > test is not executed. > > Regstrapped on x86_64-linux-gnu, and tested with -x-arm-wrs-vxworks7r2. > Ok to install? > > > from Corentin Gay > for libstdc++-v3/ChangeLog > > * testsuite/lib/dg-options.exp: Add dg-require-wchars > function. > * testsuite/lib/libstdc++.exp: Add check_v3_target_wchars > function. > * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: Add > requirement. > * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: > Likewise. > * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Likewise. > * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: > Likewise. > * testsuite/22_locale/conversions/buffer/1.cc: Likewise. > * testsuite/22_locale/conversions/buffer/2.cc: Likewise. > * testsuite/22_locale/conversions/buffer/3.cc: Likewise. > * testsuite/22_locale/conversions/buffer/requirements/typedefs.cc: > Likewise. > * testsuite/22_locale/conversions/string/1.cc: Likewise. > * testsuite/22_locale/conversions/string/2.cc: Likewise. > * testsuite/22_locale/conversions/string/3.cc: Likewise. > * testsuite/22_locale/conversions/string/66441.cc: Likewise. > * testsuite/22_locale/conversions/string/requirements/typedefs.cc: > Likewise. > * testsuite/22_locale/conversions/string/requirements/typedefs-2.cc: > Likewise. > --- > .../22_locale/codecvt/codecvt_utf16/79980.cc | 1 > .../22_locale/codecvt/codecvt_utf16/misaligned.cc | 1 > .../22_locale/codecvt/codecvt_utf8/79980.cc | 1 > .../22_locale/codecvt/codecvt_utf8_utf16/79511.cc | 1 > .../testsuite/22_locale/conversions/buffer/1.cc | 1 > .../testsuite/22_locale/conversions/buffer/2.cc | 1 > .../testsuite/22_locale/conversions/buffer/3.cc | 1 > .../conversions/buffer/requirements/typedefs.cc | 1 > .../testsuite/22_locale/conversions/string/1.cc | 1 > .../testsuite/22_locale/conversions/string/2.cc | 1 > .../testsuite/22_locale/conversions/string/3.cc | 1 > .../22_locale/conversions/string/66441.cc | 1 > .../conversions/string/requirements/typedefs-2.cc | 1 > .../conversions/string/requirements/typedefs.cc | 1 > libstdc++-v3/testsuite/lib/dg-options.exp | 9 ++++ > libstdc++-v3/testsuite/lib/libstdc++.exp | 47 ++++++++++++++++++++ > 16 files changed, 70 insertions(+) > > diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc > index 8a092913a4c92..039bdd0322907 100644 > --- a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc > +++ b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > #include > #include > diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc > index 04cfc8d744bdd..3496e0e819e98 100644 > --- a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc > +++ b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > #include > #include > diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc > index 68ae5af234ae5..fd69dd5c04de0 100644 > --- a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc > +++ b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > #include > #include > diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc > index 1f63e7218e7d2..590a3b73bfc41 100644 > --- a/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc > +++ b/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > #include > #include > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc b/libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc > index 2855f7432d464..91bf2bf22160d 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc > @@ -1,4 +1,5 @@ > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc b/libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc > index 2cf320fc13cca..a03a16a02ed0b 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > #include > #include > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc b/libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc > index de43e0a95b2b7..84d5358f4999c 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > #include > #include > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc b/libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc > index e88799dbec750..8efe203e87398 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc > @@ -1,4 +1,5 @@ > // { dg-do compile { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc > index 41d6594fe1320..d491e6c52709e 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc > @@ -1,4 +1,5 @@ > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/2.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/2.cc > index bc26e328a6039..b4867053f3c85 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/string/2.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/string/2.cc > @@ -1,4 +1,5 @@ > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/3.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/3.cc > index b7793cdca49ea..023897c9307b5 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/string/3.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/string/3.cc > @@ -1,4 +1,5 @@ > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc > index 07136aec1179e..b78c31fbb9b1b 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc > @@ -16,6 +16,7 @@ > // . > > // { dg-do run { target c++11 } } > +// { dg-require-wchars "" } > > // libstdc++/66441 > > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc > index 91b47c449a16a..4cd254a40da57 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc > @@ -1,4 +1,5 @@ > // { dg-do compile { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc > index 023caa69a6e3a..30e49b2ff893b 100644 > --- a/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc > +++ b/libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc > @@ -1,4 +1,5 @@ > // { dg-do compile { target c++11 } } > +// { dg-require-wchars "" } > > // Copyright (C) 2015-2020 Free Software Foundation, Inc. > // > diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp > index 0102acf65a282..17306a0eb0205 100644 > --- a/libstdc++-v3/testsuite/lib/dg-options.exp > +++ b/libstdc++-v3/testsuite/lib/dg-options.exp > @@ -16,6 +16,15 @@ > # along with this program; see the file COPYING3. If not see > # . > > +proc dg-require-wchars { args } { > + if { ![ check_v3_target_wchars ] } { > + upvar dg-do-what dg-do-what > + set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] > + return > + } > + return > +} > + > proc dg-require-c-std { args } { > if { ![ check_v3_target_c_std ] } { > upvar dg-do-what dg-do-what > diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp > index b7d7b906de41c..2c22bcc0f0c94 100644 > --- a/libstdc++-v3/testsuite/lib/libstdc++.exp > +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp > @@ -702,6 +702,53 @@ proc v3-build_support { } { > } > } > > +proc check_v3_target_wchars { } { > + global et_wchars > + global et_wchars_target_name > + global tool > + > + if { ![info exists et_wchars_target_name] } { > + set et_wchars_target_name "" > + } > + > + # If the target has changed since we set the cached value, clear it. > + set current_target [current_target_name] > + if { $current_target != $et_wchars_target_name } { > + verbose "check_v3_target_wchars: `$et_wchars_target_name'" 2 > + set et_wchars_target_name $current_target > + if [info exists et_wchars] { > + verbose "check_v3_target_wchars: removing cached result" 2 > + unset et_wchars > + } > + } > + > + if [info exists et_wchars] { > + verbose "check_v3_target_wchars: using cached result" 2 > + } else { > + set et_wchars 0 > + > + # Set up and preprocess a C++ test program that depends > + # on wchars support being configured in the libstdc++. > + set src wchars[pid].cc > + > + set f [open $src "w"] > + puts $f "#ifndef _GLIBCXX_USE_WCHAR_T" > + puts $f "# error No wchar header." > + puts $f "#endif" > + close $f > + > + set lines [v3_target_compile $src /dev/null preprocess ""] > + file delete $src > + > + if [string match "" $lines] { > + # No error message, preprocessing succeeded. > + set et_wchars 1 > + } > + } > + verbose "check_v3_target_wchars: $et_wchars" 2 > + return $et_wchars > +} > + This check_v3_target_wchars looks like a good candidate to leverage on: v3_check_preprocessor_condition.