Patchwork C++ PATCHes to run testsuite in C++14 mode

login
register
mail settings
Submitter Jason Merrill
Date March 7, 2014, 9:43 p.m.
Message ID <531A3D9B.1030203@redhat.com>
Download mbox | patch
Permalink /patch/328089/
State New
Headers show

Comments

Jason Merrill - March 7, 2014, 9:43 p.m.
The first patch changes the C++ testsuite to run in C++14 mode as well 
as C++98 and C++11.  It also adjusts tests that were specifying a 
standard with -std= in dg-options so that they use target-supports 
functions instead.  As a result, a number of tests are now being 
compiled with -pedantic-errors that previously were not, so I've fixed 
several extra semicolons.

The second patch splits up the running of dg.exp to avoid it running 
longer than libstdc++ in parallel testing.

Doing this revealed several regressions in C++14 mode, which are fixed 
by the patches in my other recent mail.

Tested x86_64-pc-linux-gnu, applying to trunk.
Fabien ChĂȘne - March 24, 2014, 9:06 p.m.
2014-03-07 22:43 GMT+01:00 Jason Merrill <jason@redhat.com>:
> The first patch changes the C++ testsuite to run in C++14 mode as well as
> C++98 and C++11.

As a result, specifying { target c++11 } matches c++11 and c++1y mode.
{ target c++1y } matches c++1y only, and { target c++98 } matches c++98 only.
Is that correct ?

I have noticed that a lot of testcases have been changed so that {
target c++98 } is now written as { target { ! c++11 } }.
Why was it needed ?

> The second patch splits up the running of dg.exp to avoid it running longer
> than libstdc++ in parallel testing.

Incidentally, how does it affect testing time ?
Jason Merrill - March 25, 2014, 3:44 a.m.
On 03/24/2014 05:06 PM, Fabien ChĂȘne wrote:
> 2014-03-07 22:43 GMT+01:00 Jason Merrill <jason@redhat.com>:
>> The first patch changes the C++ testsuite to run in C++14 mode as well as
>> C++98 and C++11.
>
> As a result, specifying { target c++11 } matches c++11 and c++1y mode.
> { target c++1y } matches c++1y only, and { target c++98 } matches c++98 only.
> Is that correct ?

Everything is intended to mean "C++XX and up" now.  But c++98 isn't 
defined, since it would be meaningless.  And so it isn't used in tests 
either.  So for c++98 only you can use c++98_only or { ! c++11 }.

>> The second patch splits up the running of dg.exp to avoid it running longer
>> than libstdc++ in parallel testing.
>
> Incidentally, how does it affect testing time ?

On a highly parallel system, it doesn't affect testing time because one 
of the chunks of libstdc++ tests still takes longer than any of the 
chunks of g++ tests.

Jason

Patch

commit 11b6f45254ce1394f0a9bdb173f807b0c381720e
Author: Jason Merrill <jason@redhat.com>
Date:   Fri Mar 7 13:40:13 2014 -0500

    	* Make-lang.in (check_g++_parallelize): Split dg.exp.

diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index 438148c..5480c4e 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -156,7 +156,10 @@  check-c++-subtargets : check-g++-subtargets
 lang_checks += check-g++
 lang_checks_parallelized += check-g++
 # For description see comment above check_gcc_parallelize in gcc/Makefile.in.
-check_g++_parallelize = old-deja.exp dg.exp dg-torture.exp
+check_g++_parallelize = old-deja.exp \
+	dg.exp=g++.dg/[0-9A-Za-bd-su-z]* \
+	dg.exp=g++.dg/[ct]* \
+	dg.exp=c-c++-common/*,dg-torture.exp
 
 #
 # Install hooks: