Commit fb260504 by Jason Merrill

c++: Add -std=c++20.

It's probably past time for this, but definitely now that we're done with
the final committee meeting of C++20.  This patch only adds the option and
adjusts the testsuite to recognize it; more extensive changes can wait for
the published standard.

gcc/ChangeLog
2020-02-15  Jason Merrill  <jason@redhat.com>

	* doc/invoke.texi (C Dialect Options): Add -std=c++20.

gcc/c-family/ChangeLog
2020-02-15  Jason Merrill  <jason@redhat.com>

	* c.opt: Add -std=c++20.

gcc/testsuite/ChangeLog
2020-02-15  Jason Merrill  <jason@redhat.com>

	* lib/target-supports.exp (check_effective_target_c++2a_only): Also
	look for -std=*++20.
	(check_effective_target_concepts): Use check_effective_target_c++2a.
parent 0b3c2eed
2020-02-15 Jason Merrill <jason@redhat.com>
* doc/invoke.texi (C Dialect Options): Add -std=c++20.
2020-02-15 Jakub Jelinek <jakub@redhat.com> 2020-02-15 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/93744 PR tree-optimization/93744
......
2020-02-15 Jason Merrill <jason@redhat.com>
* c.opt: Add -std=c++20.
2020-02-14 Eric Botcazou <ebotcazou@adacore.com> 2020-02-14 Eric Botcazou <ebotcazou@adacore.com>
* c-ada-spec.c: Include bitmap.h. * c-ada-spec.c: Include bitmap.h.
......
...@@ -2071,7 +2071,11 @@ Conform to the ISO 2017 C++ standard. ...@@ -2071,7 +2071,11 @@ Conform to the ISO 2017 C++ standard.
std=c++2a std=c++2a
C++ ObjC++ C++ ObjC++
Conform to the ISO 2020(?) C++ draft standard (experimental and incomplete support). Conform to the ISO 2020 C++ draft standard (experimental and incomplete support).
std=c++20
C++ ObjC++ Alias(std=c++2a)
Conform to the ISO 2020 C++ draft standard (experimental and incomplete support).
std=c11 std=c11
C ObjC C ObjC
......
...@@ -2078,13 +2078,15 @@ The name @samp{c++1z} is deprecated. ...@@ -2078,13 +2078,15 @@ The name @samp{c++1z} is deprecated.
GNU dialect of @option{-std=c++17}. GNU dialect of @option{-std=c++17}.
The name @samp{gnu++1z} is deprecated. The name @samp{gnu++1z} is deprecated.
@item c++2a @item c++20
The next revision of the ISO C++ standard, tentatively planned for @itemx c++2a
The next revision of the ISO C++ standard, planned for
2020. Support is highly experimental, and will almost certainly 2020. Support is highly experimental, and will almost certainly
change in incompatible ways in future releases. change in incompatible ways in future releases.
@item gnu++2a @item gnu++20
GNU dialect of @option{-std=c++2a}. Support is highly experimental, @itemx gnu++2a
GNU dialect of @option{-std=c++20}. Support is highly experimental,
and will almost certainly change in incompatible ways in future and will almost certainly change in incompatible ways in future
releases. releases.
@end table @end table
2020-02-15 Jason Merrill <jason@redhat.com>
* lib/target-supports.exp (check_effective_target_c++2a_only): Also
look for -std=*++20.
(check_effective_target_concepts): Use check_effective_target_c++2a.
2020-02-15 Jakub Jelinek <jakub@redhat.com> 2020-02-15 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/93744 PR tree-optimization/93744
......
...@@ -8806,7 +8806,7 @@ proc check_effective_target_c++2a_only { } { ...@@ -8806,7 +8806,7 @@ proc check_effective_target_c++2a_only { } {
if ![check_effective_target_c++] { if ![check_effective_target_c++] {
return 0 return 0
} }
if [check-flags { { } { } { -std=c++2a -std=gnu++2a } }] { if [check-flags { { } { } { -std=c++2a -std=gnu++2a -std=c++20 -std=gnu++20 } }] {
return 1 return 1
} }
if { $cxx_default == "c++20" && [check-flags { { } { } { } { -std=* } }] } { if { $cxx_default == "c++20" && [check-flags { { } { } { } { -std=* } }] } {
...@@ -8818,9 +8818,12 @@ proc check_effective_target_c++2a { } { ...@@ -8818,9 +8818,12 @@ proc check_effective_target_c++2a { } {
return [check_effective_target_c++2a_only] return [check_effective_target_c++2a_only]
} }
# Check for C++ Concepts TS support, i.e. -fconcepts flag. # Check for C++ Concepts support, i.e. -fconcepts flag.
proc check_effective_target_concepts { } { proc check_effective_target_concepts { } {
return [check-flags { "" { } { -fconcepts -std=*2a } }] if [check_effective_target_c++2a] {
return 1
}
return [check-flags { "" { } { -fconcepts } }]
} }
# Return 1 if expensive testcases should be run. # Return 1 if expensive testcases should be run.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment