On 08/10/2023 15:59, Iain Sandoe wrote:
Hi François,

On 23 Sep 2023, at 21:10, François Dumont <frs.dum...@gmail.com> wrote:

I'm eventually fixing those tests the same way we manage this problem in 
libstdc++ testsuite.

    testsuite: Add optional libstdc++ version namespace in expected diagnostic

     When libstdc++ is build with --enable-symvers=gnu-versioned-namespace 
diagnostics are
     showing this namespace, currently __8.

     gcc/testsuite/ChangeLog:

             * testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: Add 
optional
             '__8' version namespace in expected diagnostic.
             * testsuite/g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: 
Likewise.
             * testsuite/g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: 
Likewise.
             * 
testsuite/g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C: Likewise.
             * testsuite/g++.dg/coroutines/pr97438.C: Likewise.
             * testsuite/g++.dg/coroutines/ramp-return-b.C: Likewise.

Tested under Linux x86_64.

I'm contributing to libstdc++ so I already have write access.

Ok to commit ?
As author of the tests, this LGTM as a suitable fix for now (at least, once the 
main
patch to fix versioned namespaces lands).

I just realized it was a "go", no ? Then why after the main patch ?

The "main patch" do not fix the versioned namespace. It just makes it adopt the cxx11 abi.

This patch fixes a problem that is as old as the tests and that is totally unrelated with the main one. I just wanted to improve the situation so that versioned namespace mode do not look more buggy than necessary when someone (like you) run those.


However, IMO, this could become quite painful as more g++ tests make use of std 
headers
(which is not really optional for facilities like this that are tightly-coupled 
between the FE and
the library).

For the future, it does seem that a more complete solution might be to 
introduce a
testsuite-wide definition for the C++ versioned std:: introducer, so that we 
can update it in one
place as the version changes.

So (as a thought experiment):
  - we’d have something of the form “CXX_STD” as a tcl global
  - we’d add the presence/absence of versioning to the relevant site.exp (which
    means recognising the versioning choice also in the GCC configure)
  - we’d migrate tests to using ${CXX_STD} instead of "std::__N”  in matches

… I guess an alternative could be to cook up some alternate warning/error/etc
    match functions that cater for arbitrary inline namespaces but that seems 
like a much
    more tricky and invasive testsuite change.

thoughts?

I considered amending gcc/testsuite/lib/prune.exp to simply remove the version from the diagnostic. But the reply on why it was not working scared me, so this patch.

https://gcc.gnu.org/pipermail/gcc/2023-September/242526.html

Reply via email to