diff options
146 files changed, 199 insertions, 158 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index f285c8b..464297b 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2016-03-08 Jason Merrill <jason@redhat.com> + + * c-opts.c (set_std_cxx1z): Don't enable concepts. + 2016-03-04 David Malcolm <dmalcolm@redhat.com> PR c/68187 diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index c2783f7..fec58bc 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -1566,8 +1566,6 @@ set_std_cxx1z (int iso) /* C++11 includes the C99 standard library. */ flag_isoc94 = 1; flag_isoc99 = 1; - /* Enable concepts by default. */ - flag_concepts = 1; flag_isoc11 = 1; cxx_dialect = cxx1z; lang_hooks.name = "GNU C++14"; /* Pretend C++14 till standarization. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2b95036..4bb43db 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,12 @@ 2016-03-08 Jason Merrill <jason@redhat.com> + * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful + diagnostic for use of "concept". + (cp_parser_requires_clause_opt): And "requires". + (cp_parser_type_parameter, cp_parser_late_return_type_opt) + (cp_parser_explicit_template_declaration): Adjust. + * Make-lang.in (check-c++-all): Add "concepts" to std list. + P0036R0: Unary Folds and Empty Parameter Packs * pt.c (expand_empty_fold): Remove special cases for *,+,&,|. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 2286c64..8770f6f 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -152,7 +152,7 @@ check-c++1z: # Run the testsuite in all standard conformance levels. check-c++-all: - $(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --stds=98,11,14,1z" check-g++ + $(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --stds=98,11,14,1z,concepts" check-g++ # Run the testsuite with garbage collection at every opportunity. check-g++-strict-gc: diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 535052f..726d5fc 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3172,6 +3172,8 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree id, && !strcmp (IDENTIFIER_POINTER (id), "thread_local")) inform (location, "C++11 %<thread_local%> only available with " "-std=c++11 or -std=gnu++11"); + else if (!flag_concepts && id == ridpointers[(int)RID_CONCEPT]) + inform (location, "%<concept%> only available with -fconcepts"); else if (processing_template_decl && current_class_type && TYPE_BINFO (current_class_type)) { @@ -14668,13 +14670,10 @@ cp_parser_type_parameter (cp_parser* parser, bool *is_parameter_pack) cp_parser_require (parser, CPP_GREATER, RT_GREATER); // If template requirements are present, parse them. - if (flag_concepts) - { - tree reqs = get_shorthand_constraints (current_template_parms); - if (tree r = cp_parser_requires_clause_opt (parser)) - reqs = conjoin_constraints (reqs, make_predicate_constraint (r)); - TEMPLATE_PARMS_CONSTRAINTS (current_template_parms) = reqs; - } + tree reqs = get_shorthand_constraints (current_template_parms); + if (tree r = cp_parser_requires_clause_opt (parser)) + reqs = conjoin_constraints (reqs, make_predicate_constraint (r)); + TEMPLATE_PARMS_CONSTRAINTS (current_template_parms) = reqs; /* Look for the `class' or 'typename' keywords. */ cp_parser_type_parameter_key (parser); @@ -19745,6 +19744,8 @@ cp_parser_late_return_type_opt (cp_parser* parser, cp_declarator *declarator, /* A late-specified return type is indicated by an initial '->'. */ if (token->type != CPP_DEREF && token->keyword != RID_REQUIRES + && !(token->type == CPP_NAME + && token->u.value == ridpointers[RID_REQUIRES]) && !(declare_simd_p || cilk_simd_fn_vector_p || oacc_routine_p)) return NULL_TREE; @@ -24216,8 +24217,20 @@ cp_parser_requires_clause (cp_parser *parser) static tree cp_parser_requires_clause_opt (cp_parser *parser) { - if (!cp_lexer_next_token_is_keyword (parser->lexer, RID_REQUIRES)) - return NULL_TREE; + cp_token *tok = cp_lexer_peek_token (parser->lexer); + if (tok->keyword != RID_REQUIRES) + { + if (!flag_concepts && tok->type == CPP_NAME + && tok->u.value == ridpointers[RID_REQUIRES]) + { + error_at (cp_lexer_peek_token (parser->lexer)->location, + "%<requires%> only available with -fconcepts"); + /* Parse and discard the requires-clause. */ + cp_lexer_consume_token (parser->lexer); + cp_parser_requires_clause (parser); + } + return NULL_TREE; + } cp_lexer_consume_token (parser->lexer); return cp_parser_requires_clause (parser); } @@ -25608,13 +25621,10 @@ cp_parser_explicit_template_declaration (cp_parser* parser, bool member_p) cp_parser_skip_to_end_of_template_parameter_list (parser); /* Manage template requirements */ - if (flag_concepts) - { - tree reqs = get_shorthand_constraints (current_template_parms); - if (tree r = cp_parser_requires_clause_opt (parser)) - reqs = conjoin_constraints (reqs, make_predicate_constraint (r)); - TEMPLATE_PARMS_CONSTRAINTS (current_template_parms) = reqs; - } + tree reqs = get_shorthand_constraints (current_template_parms); + if (tree r = cp_parser_requires_clause_opt (parser)) + reqs = conjoin_constraints (reqs, make_predicate_constraint (r)); + TEMPLATE_PARMS_CONSTRAINTS (current_template_parms) = reqs; cp_parser_template_declaration_after_parameters (parser, parameter_list, member_p); diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 62c70d5..9580c10 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -2238,6 +2238,16 @@ return value even without this option. In all other cases, when exhaustion is signalled by throwing @code{std::bad_alloc}. See also @samp{new (nothrow)}. +@item -fconcepts +@opindex fconcepts +Enable support for the C++ Extensions for Concepts Technical +Specification, ISO 19217 (2015), which allows code like + +@smallexample +template <class T> concept bool Addable = requires (T t) @{ t + t; @}; +template <Addable T> T add (T a, T b) @{ return a + b; @} +@end smallexample + @item -fconstexpr-depth=@var{n} @opindex fconstexpr-depth Set the maximum nested evaluation depth for C++11 constexpr functions diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5149414..40e9b52 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-08 Jason Merrill <jason@redhat.com> + + * lib/g++-dg.exp (g++-dg-runtest): Handle "concepts" in std list. + * lib/target-supports.exp (check_effective_target_concepts): New. + 2016-03-08 Jakub Jelinek <jakub@redhat.com> PR c++/70135 diff --git a/gcc/testsuite/g++.dg/concepts/alias1.C b/gcc/testsuite/g++.dg/concepts/alias1.C index 03b3cea..fdd54bd 100644 --- a/gcc/testsuite/g++.dg/concepts/alias1.C +++ b/gcc/testsuite/g++.dg/concepts/alias1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/alias2.C b/gcc/testsuite/g++.dg/concepts/alias2.C index d81188e..7879d44 100644 --- a/gcc/testsuite/g++.dg/concepts/alias2.C +++ b/gcc/testsuite/g++.dg/concepts/alias2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/alias3.C b/gcc/testsuite/g++.dg/concepts/alias3.C index e6ab669..a8f0f67 100644 --- a/gcc/testsuite/g++.dg/concepts/alias3.C +++ b/gcc/testsuite/g++.dg/concepts/alias3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/alias4.C b/gcc/testsuite/g++.dg/concepts/alias4.C index 4227a44..8ffa0a1 100644 --- a/gcc/testsuite/g++.dg/concepts/alias4.C +++ b/gcc/testsuite/g++.dg/concepts/alias4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/auto1.C b/gcc/testsuite/g++.dg/concepts/auto1.C index 6068e4c..be9237d 100644 --- a/gcc/testsuite/g++.dg/concepts/auto1.C +++ b/gcc/testsuite/g++.dg/concepts/auto1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T1, class T2> class A { }; diff --git a/gcc/testsuite/g++.dg/concepts/auto3.C b/gcc/testsuite/g++.dg/concepts/auto3.C index 1cface7..e1a4d73 100644 --- a/gcc/testsuite/g++.dg/concepts/auto3.C +++ b/gcc/testsuite/g++.dg/concepts/auto3.C @@ -1,4 +1,4 @@ -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class...> class tuple {}; diff --git a/gcc/testsuite/g++.dg/concepts/class.C b/gcc/testsuite/g++.dg/concepts/class.C index ea74a54..0611057 100644 --- a/gcc/testsuite/g++.dg/concepts/class.C +++ b/gcc/testsuite/g++.dg/concepts/class.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Class() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/class1.C b/gcc/testsuite/g++.dg/concepts/class1.C index b213cb5..a2c4f5d 100644 --- a/gcc/testsuite/g++.dg/concepts/class1.C +++ b/gcc/testsuite/g++.dg/concepts/class1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/class2.C b/gcc/testsuite/g++.dg/concepts/class2.C index 2c3ea44..4b8706d 100644 --- a/gcc/testsuite/g++.dg/concepts/class2.C +++ b/gcc/testsuite/g++.dg/concepts/class2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/class3.C b/gcc/testsuite/g++.dg/concepts/class3.C index e3a1d2a..c25c801 100644 --- a/gcc/testsuite/g++.dg/concepts/class3.C +++ b/gcc/testsuite/g++.dg/concepts/class3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/class4.C b/gcc/testsuite/g++.dg/concepts/class4.C index 7ba8250..af6db25 100644 --- a/gcc/testsuite/g++.dg/concepts/class4.C +++ b/gcc/testsuite/g++.dg/concepts/class4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Class() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/class5.C b/gcc/testsuite/g++.dg/concepts/class5.C index 903bf24..218ec9f 100644 --- a/gcc/testsuite/g++.dg/concepts/class5.C +++ b/gcc/testsuite/g++.dg/concepts/class5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool One() { return sizeof(T) >= 4; } diff --git a/gcc/testsuite/g++.dg/concepts/class6.C b/gcc/testsuite/g++.dg/concepts/class6.C index fe6b42d..4a3a3d7 100644 --- a/gcc/testsuite/g++.dg/concepts/class6.C +++ b/gcc/testsuite/g++.dg/concepts/class6.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool One() { return sizeof(T) >= 4; } diff --git a/gcc/testsuite/g++.dg/concepts/constrained-parm.C b/gcc/testsuite/g++.dg/concepts/constrained-parm.C index fd21c43..2650cae 100644 --- a/gcc/testsuite/g++.dg/concepts/constrained-parm.C +++ b/gcc/testsuite/g++.dg/concepts/constrained-parm.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/decl-diagnose.C b/gcc/testsuite/g++.dg/concepts/decl-diagnose.C index 67b56f9..9829ba1 100644 --- a/gcc/testsuite/g++.dg/concepts/decl-diagnose.C +++ b/gcc/testsuite/g++.dg/concepts/decl-diagnose.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } typedef concept int CINT; // { dg-error "'concept' cannot appear in a typedef declaration" } diff --git a/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C b/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C index 6ff3be9..dfb0c6e 100644 --- a/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C +++ b/gcc/testsuite/g++.dg/concepts/deduction-constraint1.C @@ -1,5 +1,5 @@ // PR c++/67007 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class U> concept bool A = diff --git a/gcc/testsuite/g++.dg/concepts/diagnostic1.C b/gcc/testsuite/g++.dg/concepts/diagnostic1.C index 7c360cc..aa98ffa 100644 --- a/gcc/testsuite/g++.dg/concepts/diagnostic1.C +++ b/gcc/testsuite/g++.dg/concepts/diagnostic1.C @@ -1,5 +1,5 @@ // PR c++/67159 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept bool R = requires (T& t) { diff --git a/gcc/testsuite/g++.dg/concepts/disjunction1.C b/gcc/testsuite/g++.dg/concepts/disjunction1.C index f67fa0b..24472cc 100644 --- a/gcc/testsuite/g++.dg/concepts/disjunction1.C +++ b/gcc/testsuite/g++.dg/concepts/disjunction1.C @@ -1,5 +1,5 @@ // PR c++/66962 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <typename> struct remove_cv; template <typename> struct is_reference; diff --git a/gcc/testsuite/g++.dg/concepts/dr1430.C b/gcc/testsuite/g++.dg/concepts/dr1430.C index 7f857fe..3a7ba03 100644 --- a/gcc/testsuite/g++.dg/concepts/dr1430.C +++ b/gcc/testsuite/g++.dg/concepts/dr1430.C @@ -1,5 +1,5 @@ // PR c++/66092 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <type_traits> diff --git a/gcc/testsuite/g++.dg/concepts/equiv.C b/gcc/testsuite/g++.dg/concepts/equiv.C index c2ac741..11e232f 100644 --- a/gcc/testsuite/g++.dg/concepts/equiv.C +++ b/gcc/testsuite/g++.dg/concepts/equiv.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Check equivalence of short- and longhand declarations. diff --git a/gcc/testsuite/g++.dg/concepts/equiv2.C b/gcc/testsuite/g++.dg/concepts/equiv2.C index 675fe21..24d419b 100644 --- a/gcc/testsuite/g++.dg/concepts/equiv2.C +++ b/gcc/testsuite/g++.dg/concepts/equiv2.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // template<typename T> diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst1.C b/gcc/testsuite/g++.dg/concepts/explicit-inst1.C index 3079ca5..89eeb15 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-inst1.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-inst1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst2.C b/gcc/testsuite/g++.dg/concepts/explicit-inst2.C index 5e75f4f..0319756 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-inst2.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-inst2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst3.C b/gcc/testsuite/g++.dg/concepts/explicit-inst3.C index a471657..177fc6c 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-inst3.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-inst3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/explicit-inst4.C b/gcc/testsuite/g++.dg/concepts/explicit-inst4.C index b075c100..cf0d898 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-inst4.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-inst4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec1.C b/gcc/testsuite/g++.dg/concepts/explicit-spec1.C index 6316410..c6f559c 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-spec1.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-spec1.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec2.C b/gcc/testsuite/g++.dg/concepts/explicit-spec2.C index 4f19624..8fa7e8a 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-spec2.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-spec2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec3.C b/gcc/testsuite/g++.dg/concepts/explicit-spec3.C index 29546b3..6294cef 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-spec3.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-spec3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec4.C b/gcc/testsuite/g++.dg/concepts/explicit-spec4.C index e9aacd5..16698cb 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-spec4.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-spec4.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec5.C b/gcc/testsuite/g++.dg/concepts/explicit-spec5.C index 8047278..e889c21 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-spec5.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-spec5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/explicit-spec6.C b/gcc/testsuite/g++.dg/concepts/explicit-spec6.C index 3eba9ff..0bf7640 100644 --- a/gcc/testsuite/g++.dg/concepts/explicit-spec6.C +++ b/gcc/testsuite/g++.dg/concepts/explicit-spec6.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> struct A { diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C index 5ae04e4..de68ef8 100644 --- a/gcc/testsuite/g++.dg/concepts/expression.C +++ b/gcc/testsuite/g++.dg/concepts/expression.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> #include <iostream> diff --git a/gcc/testsuite/g++.dg/concepts/expression2.C b/gcc/testsuite/g++.dg/concepts/expression2.C index 40c2034..ebdadc2 100644 --- a/gcc/testsuite/g++.dg/concepts/expression2.C +++ b/gcc/testsuite/g++.dg/concepts/expression2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1() diff --git a/gcc/testsuite/g++.dg/concepts/expression3.C b/gcc/testsuite/g++.dg/concepts/expression3.C index eb8406f..77b414e 100644 --- a/gcc/testsuite/g++.dg/concepts/expression3.C +++ b/gcc/testsuite/g++.dg/concepts/expression3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() diff --git a/gcc/testsuite/g++.dg/concepts/feature-macro.C b/gcc/testsuite/g++.dg/concepts/feature-macro.C index 7bc7875..d8ea369 100644 --- a/gcc/testsuite/g++.dg/concepts/feature-macro.C +++ b/gcc/testsuite/g++.dg/concepts/feature-macro.C @@ -1,4 +1,4 @@ -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } #ifndef __cpp_concepts #error __cpp_concepts not defined diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept1.C b/gcc/testsuite/g++.dg/concepts/fn-concept1.C index 385dcbc..4a8437f 100644 --- a/gcc/testsuite/g++.dg/concepts/fn-concept1.C +++ b/gcc/testsuite/g++.dg/concepts/fn-concept1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Tuple() { // { dg-error "multiple statements" } diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept2.C b/gcc/testsuite/g++.dg/concepts/fn-concept2.C index 092c91c5..86ba936 100644 --- a/gcc/testsuite/g++.dg/concepts/fn-concept2.C +++ b/gcc/testsuite/g++.dg/concepts/fn-concept2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept auto C1() { return 0; } // { dg-error "deduced return type" } diff --git a/gcc/testsuite/g++.dg/concepts/fn1.C b/gcc/testsuite/g++.dg/concepts/fn1.C index b2bdaf9..c4f9f55 100644 --- a/gcc/testsuite/g++.dg/concepts/fn1.C +++ b/gcc/testsuite/g++.dg/concepts/fn1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn10.C b/gcc/testsuite/g++.dg/concepts/fn10.C index f4cd4c5..859c1d5 100644 --- a/gcc/testsuite/g++.dg/concepts/fn10.C +++ b/gcc/testsuite/g++.dg/concepts/fn10.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Test that constraint satisfaction checks work even when // processing template declarations. diff --git a/gcc/testsuite/g++.dg/concepts/fn2.C b/gcc/testsuite/g++.dg/concepts/fn2.C index 0aee852..51a3fb5 100644 --- a/gcc/testsuite/g++.dg/concepts/fn2.C +++ b/gcc/testsuite/g++.dg/concepts/fn2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C index 06402e0..ef704f7 100644 --- a/gcc/testsuite/g++.dg/concepts/fn3.C +++ b/gcc/testsuite/g++.dg/concepts/fn3.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/fn4.C b/gcc/testsuite/g++.dg/concepts/fn4.C index 5ced6a7..9fa5790 100644 --- a/gcc/testsuite/g++.dg/concepts/fn4.C +++ b/gcc/testsuite/g++.dg/concepts/fn4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn5.C b/gcc/testsuite/g++.dg/concepts/fn5.C index b3c3f70..dd9a19e 100644 --- a/gcc/testsuite/g++.dg/concepts/fn5.C +++ b/gcc/testsuite/g++.dg/concepts/fn5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Check shorthand notation. diff --git a/gcc/testsuite/g++.dg/concepts/fn6.C b/gcc/testsuite/g++.dg/concepts/fn6.C index 73ef19a..f6f165e 100644 --- a/gcc/testsuite/g++.dg/concepts/fn6.C +++ b/gcc/testsuite/g++.dg/concepts/fn6.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Redefinition errors. diff --git a/gcc/testsuite/g++.dg/concepts/fn7.C b/gcc/testsuite/g++.dg/concepts/fn7.C index 2abd34a..dd16a9a 100644 --- a/gcc/testsuite/g++.dg/concepts/fn7.C +++ b/gcc/testsuite/g++.dg/concepts/fn7.C @@ -1,5 +1,5 @@ // { dg-do link } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // FIXME: What is this actually testing? diff --git a/gcc/testsuite/g++.dg/concepts/fn8.C b/gcc/testsuite/g++.dg/concepts/fn8.C index 71141f6..e7481be 100644 --- a/gcc/testsuite/g++.dg/concepts/fn8.C +++ b/gcc/testsuite/g++.dg/concepts/fn8.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Class() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C index b7ac4e1..c135bd7 100644 --- a/gcc/testsuite/g++.dg/concepts/fn9.C +++ b/gcc/testsuite/g++.dg/concepts/fn9.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/friend1.C b/gcc/testsuite/g++.dg/concepts/friend1.C index 286e769..5c418cb 100644 --- a/gcc/testsuite/g++.dg/concepts/friend1.C +++ b/gcc/testsuite/g++.dg/concepts/friend1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Eq() { return requires(T t) { t == t; }; } diff --git a/gcc/testsuite/g++.dg/concepts/friend2.C b/gcc/testsuite/g++.dg/concepts/friend2.C index 38b230c..6268801 100644 --- a/gcc/testsuite/g++.dg/concepts/friend2.C +++ b/gcc/testsuite/g++.dg/concepts/friend2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Eq() { return requires(T t) { t == t; }; } diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn-err.C b/gcc/testsuite/g++.dg/concepts/generic-fn-err.C index 1e97510..03a47d5 100644 --- a/gcc/testsuite/g++.dg/concepts/generic-fn-err.C +++ b/gcc/testsuite/g++.dg/concepts/generic-fn-err.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C index 778356d..d74ea21 100644 --- a/gcc/testsuite/g++.dg/concepts/generic-fn.C +++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> #include <type_traits> diff --git a/gcc/testsuite/g++.dg/concepts/iconv1.C b/gcc/testsuite/g++.dg/concepts/iconv1.C index c4dd38f..28f3566 100644 --- a/gcc/testsuite/g++.dg/concepts/iconv1.C +++ b/gcc/testsuite/g++.dg/concepts/iconv1.C @@ -1,5 +1,5 @@ // PR c++/67240 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } int foo(int x) { diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C index 29433ad..6f5115c 100644 --- a/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C +++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C index 4f39203..435745a 100644 --- a/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C +++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C index 3d0ddf2..07499bb 100644 --- a/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C +++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C b/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C index cd9565f..4c53205 100644 --- a/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C +++ b/gcc/testsuite/g++.dg/concepts/inherit-ctor4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/intro1.C b/gcc/testsuite/g++.dg/concepts/intro1.C index 1b5f5d1..5f036c4 100644 --- a/gcc/testsuite/g++.dg/concepts/intro1.C +++ b/gcc/testsuite/g++.dg/concepts/intro1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C = __is_class(T); diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C index 91a1cac..1db1d7a 100644 --- a/gcc/testsuite/g++.dg/concepts/intro2.C +++ b/gcc/testsuite/g++.dg/concepts/intro2.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/intro3.C b/gcc/testsuite/g++.dg/concepts/intro3.C index 5dd95c6..3cb3ecb 100644 --- a/gcc/testsuite/g++.dg/concepts/intro3.C +++ b/gcc/testsuite/g++.dg/concepts/intro3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename ... T> concept bool C1 = true; diff --git a/gcc/testsuite/g++.dg/concepts/intro4.C b/gcc/testsuite/g++.dg/concepts/intro4.C index 6d8aec3..1821291 100644 --- a/gcc/testsuite/g++.dg/concepts/intro4.C +++ b/gcc/testsuite/g++.dg/concepts/intro4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename ... T> concept bool C1 = true; diff --git a/gcc/testsuite/g++.dg/concepts/intro5.C b/gcc/testsuite/g++.dg/concepts/intro5.C index 64771cd..31924f9 100644 --- a/gcc/testsuite/g++.dg/concepts/intro5.C +++ b/gcc/testsuite/g++.dg/concepts/intro5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T, typename U = int> concept bool C() diff --git a/gcc/testsuite/g++.dg/concepts/intro6.C b/gcc/testsuite/g++.dg/concepts/intro6.C index 4e168ef..f8ed666 100644 --- a/gcc/testsuite/g++.dg/concepts/intro6.C +++ b/gcc/testsuite/g++.dg/concepts/intro6.C @@ -1,5 +1,5 @@ // PR c++/67003 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } namespace X { template<class> diff --git a/gcc/testsuite/g++.dg/concepts/intro7.C b/gcc/testsuite/g++.dg/concepts/intro7.C index d92eafc..914c5fd 100644 --- a/gcc/testsuite/g++.dg/concepts/intro7.C +++ b/gcc/testsuite/g++.dg/concepts/intro7.C @@ -1,5 +1,5 @@ // PR c++/66985 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <template <class> class T> concept bool _Valid = requires { typename T<int>; }; diff --git a/gcc/testsuite/g++.dg/concepts/member-concept.C b/gcc/testsuite/g++.dg/concepts/member-concept.C index 46404e3..2b06046 100644 --- a/gcc/testsuite/g++.dg/concepts/member-concept.C +++ b/gcc/testsuite/g++.dg/concepts/member-concept.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } struct Base { template<typename T> diff --git a/gcc/testsuite/g++.dg/concepts/memfun-err.C b/gcc/testsuite/g++.dg/concepts/memfun-err.C index a62fe5e..e44273c 100644 --- a/gcc/testsuite/g++.dg/concepts/memfun-err.C +++ b/gcc/testsuite/g++.dg/concepts/memfun-err.C @@ -1,5 +1,5 @@ // { dg-do run} -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> diff --git a/gcc/testsuite/g++.dg/concepts/memfun.C b/gcc/testsuite/g++.dg/concepts/memfun.C index a96c018..523410c 100644 --- a/gcc/testsuite/g++.dg/concepts/memfun.C +++ b/gcc/testsuite/g++.dg/concepts/memfun.C @@ -1,5 +1,5 @@ // { dg-do run} -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <cassert> diff --git a/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C b/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C index 114c12f..117400c 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C +++ b/gcc/testsuite/g++.dg/concepts/partial-concept-id1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Type() { return true; } diff --git a/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C b/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C index fb75448..2e6866e 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C +++ b/gcc/testsuite/g++.dg/concepts/partial-concept-id2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Make sure that we check partial concept ids // with variable concepts. diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec.C b/gcc/testsuite/g++.dg/concepts/partial-spec.C index fe612d4..5db9a58 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-spec.C +++ b/gcc/testsuite/g++.dg/concepts/partial-spec.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Check that constraints don't break unconstrained partial // specializations. diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec2.C b/gcc/testsuite/g++.dg/concepts/partial-spec2.C index db75455..bc7621b 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-spec2.C +++ b/gcc/testsuite/g++.dg/concepts/partial-spec2.C @@ -1,5 +1,5 @@ // PR c++/67084 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> constexpr bool p = false; diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec3.C b/gcc/testsuite/g++.dg/concepts/partial-spec3.C index d73d787..9387ce00a 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-spec3.C +++ b/gcc/testsuite/g++.dg/concepts/partial-spec3.C @@ -1,4 +1,4 @@ -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> struct A { }; template <class T> requires false struct A<T*> { }; diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec4.C b/gcc/testsuite/g++.dg/concepts/partial-spec4.C index d4b8e9c..80e41ab 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-spec4.C +++ b/gcc/testsuite/g++.dg/concepts/partial-spec4.C @@ -1,4 +1,4 @@ -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept bool is_int = __is_same_as(T,int); diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec5.C b/gcc/testsuite/g++.dg/concepts/partial-spec5.C index dcf167b..32a5eae 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-spec5.C +++ b/gcc/testsuite/g++.dg/concepts/partial-spec5.C @@ -1,5 +1,5 @@ // PR c++/67138 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept bool _Auto = true; diff --git a/gcc/testsuite/g++.dg/concepts/partial-spec6.C b/gcc/testsuite/g++.dg/concepts/partial-spec6.C index 2196fcd..50ef289 100644 --- a/gcc/testsuite/g++.dg/concepts/partial-spec6.C +++ b/gcc/testsuite/g++.dg/concepts/partial-spec6.C @@ -1,5 +1,5 @@ // PR c++/67152 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept bool HasType = requires { typename T::type; }; diff --git a/gcc/testsuite/g++.dg/concepts/placeholder1.C b/gcc/testsuite/g++.dg/concepts/placeholder1.C index 0b5a7cf..757bcef9b 100644 --- a/gcc/testsuite/g++.dg/concepts/placeholder1.C +++ b/gcc/testsuite/g++.dg/concepts/placeholder1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T, typename U> struct is_same diff --git a/gcc/testsuite/g++.dg/concepts/placeholder2.C b/gcc/testsuite/g++.dg/concepts/placeholder2.C index 8165c81..cf2013e 100644 --- a/gcc/testsuite/g++.dg/concepts/placeholder2.C +++ b/gcc/testsuite/g++.dg/concepts/placeholder2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Check argument deduction constraints. // TODO: We shoul have more of these... diff --git a/gcc/testsuite/g++.dg/concepts/placeholder3.C b/gcc/testsuite/g++.dg/concepts/placeholder3.C index bd89551..208fc29 100644 --- a/gcc/testsuite/g++.dg/concepts/placeholder3.C +++ b/gcc/testsuite/g++.dg/concepts/placeholder3.C @@ -1,5 +1,5 @@ // PR c++/66218 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class U> concept bool Same = __is_same_as(T, U); diff --git a/gcc/testsuite/g++.dg/concepts/placeholder4.C b/gcc/testsuite/g++.dg/concepts/placeholder4.C index e34fc94..2fb4758 100644 --- a/gcc/testsuite/g++.dg/concepts/placeholder4.C +++ b/gcc/testsuite/g++.dg/concepts/placeholder4.C @@ -1,5 +1,5 @@ // PR c++/66218 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class U> concept bool Same = __is_same_as(T, U); diff --git a/gcc/testsuite/g++.dg/concepts/placeholder5.C b/gcc/testsuite/g++.dg/concepts/placeholder5.C index 6aaf57b..e1d3092 100644 --- a/gcc/testsuite/g++.dg/concepts/placeholder5.C +++ b/gcc/testsuite/g++.dg/concepts/placeholder5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class U> concept bool Same = __is_same_as(T, U); diff --git a/gcc/testsuite/g++.dg/concepts/placeholder6.C b/gcc/testsuite/g++.dg/concepts/placeholder6.C index 7f2e67a..ee218fd 100644 --- a/gcc/testsuite/g++.dg/concepts/placeholder6.C +++ b/gcc/testsuite/g++.dg/concepts/placeholder6.C @@ -1,4 +1,4 @@ -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <int I> struct B { static const int i = I; }; template <int I> concept bool Few = I < 10; diff --git a/gcc/testsuite/g++.dg/concepts/pr65552.C b/gcc/testsuite/g++.dg/concepts/pr65552.C index c72e6c6..c1cc0b1 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65552.C +++ b/gcc/testsuite/g++.dg/concepts/pr65552.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Concept() { diff --git a/gcc/testsuite/g++.dg/concepts/pr65575.C b/gcc/testsuite/g++.dg/concepts/pr65575.C index fa24b7b..18e8059 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65575.C +++ b/gcc/testsuite/g++.dg/concepts/pr65575.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C = false; diff --git a/gcc/testsuite/g++.dg/concepts/pr65634.C b/gcc/testsuite/g++.dg/concepts/pr65634.C index 31dc87a..df64a3f 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65634.C +++ b/gcc/testsuite/g++.dg/concepts/pr65634.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1() { diff --git a/gcc/testsuite/g++.dg/concepts/pr65636.C b/gcc/testsuite/g++.dg/concepts/pr65636.C index 8b6f2a1..ddeef82 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65636.C +++ b/gcc/testsuite/g++.dg/concepts/pr65636.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } using TD = int; diff --git a/gcc/testsuite/g++.dg/concepts/pr65681.C b/gcc/testsuite/g++.dg/concepts/pr65681.C index bdbbd66..fcbbab3 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65681.C +++ b/gcc/testsuite/g++.dg/concepts/pr65681.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() diff --git a/gcc/testsuite/g++.dg/concepts/pr65848.C b/gcc/testsuite/g++.dg/concepts/pr65848.C index d0bb6a2..4affa23 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65848.C +++ b/gcc/testsuite/g++.dg/concepts/pr65848.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Performance test... This should be fast. diff --git a/gcc/testsuite/g++.dg/concepts/pr65854.C b/gcc/testsuite/g++.dg/concepts/pr65854.C index 4b0befa..c615ed7 100644 --- a/gcc/testsuite/g++.dg/concepts/pr65854.C +++ b/gcc/testsuite/g++.dg/concepts/pr65854.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Handle alias templates in type requirements. diff --git a/gcc/testsuite/g++.dg/concepts/pr66091.C b/gcc/testsuite/g++.dg/concepts/pr66091.C index ee9d115..b53f64c 100644 --- a/gcc/testsuite/g++.dg/concepts/pr66091.C +++ b/gcc/testsuite/g++.dg/concepts/pr66091.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1() diff --git a/gcc/testsuite/g++.dg/concepts/pr67249.C b/gcc/testsuite/g++.dg/concepts/pr67249.C index cb0445d..9cfada5 100644 --- a/gcc/testsuite/g++.dg/concepts/pr67249.C +++ b/gcc/testsuite/g++.dg/concepts/pr67249.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<class T> concept bool C1 = true; template<class A, class B> struct Pair {}; diff --git a/gcc/testsuite/g++.dg/concepts/pr68434.C b/gcc/testsuite/g++.dg/concepts/pr68434.C index d5f901a..ece5bb7 100644 --- a/gcc/testsuite/g++.dg/concepts/pr68434.C +++ b/gcc/testsuite/g++.dg/concepts/pr68434.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class> concept bool C1 () { diff --git a/gcc/testsuite/g++.dg/concepts/pr68683.C b/gcc/testsuite/g++.dg/concepts/pr68683.C index a0d8fcf..eef1b33 100644 --- a/gcc/testsuite/g++.dg/concepts/pr68683.C +++ b/gcc/testsuite/g++.dg/concepts/pr68683.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <typename, typename> struct is_same { diff --git a/gcc/testsuite/g++.dg/concepts/req-neg1.C b/gcc/testsuite/g++.dg/concepts/req-neg1.C index 0b7520e..6c80d81 100644 --- a/gcc/testsuite/g++.dg/concepts/req-neg1.C +++ b/gcc/testsuite/g++.dg/concepts/req-neg1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } void f1(int a) requires true; // OK auto f2(int a) -> bool requires true; // OK diff --git a/gcc/testsuite/g++.dg/concepts/req1.C b/gcc/testsuite/g++.dg/concepts/req1.C index 02d5de0..0636f1d 100644 --- a/gcc/testsuite/g++.dg/concepts/req1.C +++ b/gcc/testsuite/g++.dg/concepts/req1.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Class () { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/req10.C b/gcc/testsuite/g++.dg/concepts/req10.C index bd3b4e3..0352a08 100644 --- a/gcc/testsuite/g++.dg/concepts/req10.C +++ b/gcc/testsuite/g++.dg/concepts/req10.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Test that standard conversions are checked with // implicit conversion constraints. diff --git a/gcc/testsuite/g++.dg/concepts/req11.C b/gcc/testsuite/g++.dg/concepts/req11.C index 3e21c11..1a259e8 100644 --- a/gcc/testsuite/g++.dg/concepts/req11.C +++ b/gcc/testsuite/g++.dg/concepts/req11.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Check that we can evaluate constant requires-expressions // as constant expressions, for the curious case when they diff --git a/gcc/testsuite/g++.dg/concepts/req12.C b/gcc/testsuite/g++.dg/concepts/req12.C index 7b23d11..f285514 100644 --- a/gcc/testsuite/g++.dg/concepts/req12.C +++ b/gcc/testsuite/g++.dg/concepts/req12.C @@ -1,5 +1,5 @@ // PR c++/66218 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <type_traits> diff --git a/gcc/testsuite/g++.dg/concepts/req13.C b/gcc/testsuite/g++.dg/concepts/req13.C index 54fcd8b..559c128 100644 --- a/gcc/testsuite/g++.dg/concepts/req13.C +++ b/gcc/testsuite/g++.dg/concepts/req13.C @@ -1,5 +1,5 @@ // PR c++/66758 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class...Args> concept bool Constructible = diff --git a/gcc/testsuite/g++.dg/concepts/req14.C b/gcc/testsuite/g++.dg/concepts/req14.C index e86281a..de7efcd 100644 --- a/gcc/testsuite/g++.dg/concepts/req14.C +++ b/gcc/testsuite/g++.dg/concepts/req14.C @@ -1,5 +1,5 @@ // PR c++/66758 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class U> concept bool C = requires (T t, U u) { t + u; }; diff --git a/gcc/testsuite/g++.dg/concepts/req15.C b/gcc/testsuite/g++.dg/concepts/req15.C index 09ebf89..537669b 100644 --- a/gcc/testsuite/g++.dg/concepts/req15.C +++ b/gcc/testsuite/g++.dg/concepts/req15.C @@ -1,5 +1,5 @@ // PR c++/66832 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class U, unsigned N> requires requires (T& t, U &u) { t.foo(); u.foo(); } diff --git a/gcc/testsuite/g++.dg/concepts/req16.C b/gcc/testsuite/g++.dg/concepts/req16.C index 67ae5b5..2704c38 100644 --- a/gcc/testsuite/g++.dg/concepts/req16.C +++ b/gcc/testsuite/g++.dg/concepts/req16.C @@ -1,5 +1,5 @@ // PR c++/66988 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <type_traits> diff --git a/gcc/testsuite/g++.dg/concepts/req17.C b/gcc/testsuite/g++.dg/concepts/req17.C index 48bd0a8..af622e2 100644 --- a/gcc/testsuite/g++.dg/concepts/req17.C +++ b/gcc/testsuite/g++.dg/concepts/req17.C @@ -1,5 +1,5 @@ // PR c++/67018 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <typename T> constexpr bool Val = true; diff --git a/gcc/testsuite/g++.dg/concepts/req18.C b/gcc/testsuite/g++.dg/concepts/req18.C index 9a47437..0b6848b 100644 --- a/gcc/testsuite/g++.dg/concepts/req18.C +++ b/gcc/testsuite/g++.dg/concepts/req18.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class> struct all_same { static constexpr bool value = 1; diff --git a/gcc/testsuite/g++.dg/concepts/req2.C b/gcc/testsuite/g++.dg/concepts/req2.C index a28f30b..b1258c4 100644 --- a/gcc/testsuite/g++.dg/concepts/req2.C +++ b/gcc/testsuite/g++.dg/concepts/req2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Class () { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/req3.C b/gcc/testsuite/g++.dg/concepts/req3.C index 69581ee..5bc7ac7 100644 --- a/gcc/testsuite/g++.dg/concepts/req3.C +++ b/gcc/testsuite/g++.dg/concepts/req3.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Class () { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/req4.C b/gcc/testsuite/g++.dg/concepts/req4.C index 2077834..e7e71a4 100644 --- a/gcc/testsuite/g++.dg/concepts/req4.C +++ b/gcc/testsuite/g++.dg/concepts/req4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } struct fool { constexpr fool operator&&(fool) const { return {}; } diff --git a/gcc/testsuite/g++.dg/concepts/req5.C b/gcc/testsuite/g++.dg/concepts/req5.C index c0af1f8..17db0dd 100644 --- a/gcc/testsuite/g++.dg/concepts/req5.C +++ b/gcc/testsuite/g++.dg/concepts/req5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } struct fool { }; diff --git a/gcc/testsuite/g++.dg/concepts/req6.C b/gcc/testsuite/g++.dg/concepts/req6.C index e4f20ec..e8e94c0 100644 --- a/gcc/testsuite/g++.dg/concepts/req6.C +++ b/gcc/testsuite/g++.dg/concepts/req6.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } struct X { }; int operator==(X, X) { return 0; } diff --git a/gcc/testsuite/g++.dg/concepts/req7.C b/gcc/testsuite/g++.dg/concepts/req7.C index 51aba7b..ef25987 100644 --- a/gcc/testsuite/g++.dg/concepts/req7.C +++ b/gcc/testsuite/g++.dg/concepts/req7.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } #include <vector> diff --git a/gcc/testsuite/g++.dg/concepts/req8.C b/gcc/testsuite/g++.dg/concepts/req8.C index 35c0854..4adbc78 100644 --- a/gcc/testsuite/g++.dg/concepts/req8.C +++ b/gcc/testsuite/g++.dg/concepts/req8.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } // Check that type requirements are normalized correctly. diff --git a/gcc/testsuite/g++.dg/concepts/req9.C b/gcc/testsuite/g++.dg/concepts/req9.C index 5654be0..5f66376f 100644 --- a/gcc/testsuite/g++.dg/concepts/req9.C +++ b/gcc/testsuite/g++.dg/concepts/req9.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> struct S1 {}; diff --git a/gcc/testsuite/g++.dg/concepts/template-parm1.C b/gcc/testsuite/g++.dg/concepts/template-parm1.C index 20a7fb6..101432f 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm1.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_same_as(T, int); diff --git a/gcc/testsuite/g++.dg/concepts/template-parm10.C b/gcc/testsuite/g++.dg/concepts/template-parm10.C index b803289..b61912c 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm10.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm10.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<int N, class T> concept bool P() { return true; } diff --git a/gcc/testsuite/g++.dg/concepts/template-parm11.C b/gcc/testsuite/g++.dg/concepts/template-parm11.C index 95ce784..1f0d91a 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm11.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm11.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool NameProvider() diff --git a/gcc/testsuite/g++.dg/concepts/template-parm12.C b/gcc/testsuite/g++.dg/concepts/template-parm12.C index 1639f26..edeeb90 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm12.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm12.C @@ -1,5 +1,5 @@ // Conceptized version of template/ttp23.C -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept bool Foo = true; diff --git a/gcc/testsuite/g++.dg/concepts/template-parm2.C b/gcc/testsuite/g++.dg/concepts/template-parm2.C index ad715e1..146d1c6 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm2.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_same_as(T, int); diff --git a/gcc/testsuite/g++.dg/concepts/template-parm3.C b/gcc/testsuite/g++.dg/concepts/template-parm3.C index e412fb4..5fcd5a2 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm3.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_same_as(T, int); diff --git a/gcc/testsuite/g++.dg/concepts/template-parm4.C b/gcc/testsuite/g++.dg/concepts/template-parm4.C index a29bb11..ac9d2af 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm4.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_same_as(T, int); diff --git a/gcc/testsuite/g++.dg/concepts/template-parm5.C b/gcc/testsuite/g++.dg/concepts/template-parm5.C index f33742b..25bd916 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm5.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_same_as(T, int); diff --git a/gcc/testsuite/g++.dg/concepts/template-parm6.C b/gcc/testsuite/g++.dg/concepts/template-parm6.C index d23f259..e70cdc0 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm6.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm6.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename... Ts> struct are_same; diff --git a/gcc/testsuite/g++.dg/concepts/template-parm7.C b/gcc/testsuite/g++.dg/concepts/template-parm7.C index 1086984..3e2a2f2 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm7.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm7.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename... Ts> struct are_same; diff --git a/gcc/testsuite/g++.dg/concepts/template-parm8.C b/gcc/testsuite/g++.dg/concepts/template-parm8.C index f604d5a..69a31bc 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm8.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm8.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/template-parm9.C b/gcc/testsuite/g++.dg/concepts/template-parm9.C index 7e68984..06b0f96 100644 --- a/gcc/testsuite/g++.dg/concepts/template-parm9.C +++ b/gcc/testsuite/g++.dg/concepts/template-parm9.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C() { return __is_class(T); } diff --git a/gcc/testsuite/g++.dg/concepts/template-template-parm1.C b/gcc/testsuite/g++.dg/concepts/template-template-parm1.C index 4091284..c2dcc3a 100644 --- a/gcc/testsuite/g++.dg/concepts/template-template-parm1.C +++ b/gcc/testsuite/g++.dg/concepts/template-template-parm1.C @@ -1,5 +1,5 @@ // PR c++/66937 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } #include <tuple> diff --git a/gcc/testsuite/g++.dg/concepts/traits1.C b/gcc/testsuite/g++.dg/concepts/traits1.C index f07c878..7ccf087 100644 --- a/gcc/testsuite/g++.dg/concepts/traits1.C +++ b/gcc/testsuite/g++.dg/concepts/traits1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Nothrow_assignable() { return __has_nothrow_assign(T); } diff --git a/gcc/testsuite/g++.dg/concepts/traits2.C b/gcc/testsuite/g++.dg/concepts/traits2.C index 28ced34..971a67b 100644 --- a/gcc/testsuite/g++.dg/concepts/traits2.C +++ b/gcc/testsuite/g++.dg/concepts/traits2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool Nothrow_assignable() { return __has_nothrow_assign(T); } diff --git a/gcc/testsuite/g++.dg/concepts/var-concept1.C b/gcc/testsuite/g++.dg/concepts/var-concept1.C index eb8a2b7..b99016f 100644 --- a/gcc/testsuite/g++.dg/concepts/var-concept1.C +++ b/gcc/testsuite/g++.dg/concepts/var-concept1.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_class(T); diff --git a/gcc/testsuite/g++.dg/concepts/var-concept2.C b/gcc/testsuite/g++.dg/concepts/var-concept2.C index 71663bd..21c69dd 100644 --- a/gcc/testsuite/g++.dg/concepts/var-concept2.C +++ b/gcc/testsuite/g++.dg/concepts/var-concept2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_class(T); diff --git a/gcc/testsuite/g++.dg/concepts/var-concept3.C b/gcc/testsuite/g++.dg/concepts/var-concept3.C index c901028..d27e4fa 100644 --- a/gcc/testsuite/g++.dg/concepts/var-concept3.C +++ b/gcc/testsuite/g++.dg/concepts/var-concept3.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T> concept bool C1 = __is_class(T); diff --git a/gcc/testsuite/g++.dg/concepts/var-concept4.C b/gcc/testsuite/g++.dg/concepts/var-concept4.C index b398353..1870a42 100644 --- a/gcc/testsuite/g++.dg/concepts/var-concept4.C +++ b/gcc/testsuite/g++.dg/concepts/var-concept4.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T, typename U> concept bool Same = __is_same_as(T, U); diff --git a/gcc/testsuite/g++.dg/concepts/var-concept5.C b/gcc/testsuite/g++.dg/concepts/var-concept5.C index 13f86dd..ca16332 100644 --- a/gcc/testsuite/g++.dg/concepts/var-concept5.C +++ b/gcc/testsuite/g++.dg/concepts/var-concept5.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template<typename T1, typename T2> concept bool C1 = true; diff --git a/gcc/testsuite/g++.dg/concepts/var-concept6.C b/gcc/testsuite/g++.dg/concepts/var-concept6.C index 2f775fd..40be4f9 100644 --- a/gcc/testsuite/g++.dg/concepts/var-concept6.C +++ b/gcc/testsuite/g++.dg/concepts/var-concept6.C @@ -1,4 +1,4 @@ -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept int C = true; // { dg-error "bool" } diff --git a/gcc/testsuite/g++.dg/concepts/var-templ1.C b/gcc/testsuite/g++.dg/concepts/var-templ1.C index 79476c3..7dfa240 100644 --- a/gcc/testsuite/g++.dg/concepts/var-templ1.C +++ b/gcc/testsuite/g++.dg/concepts/var-templ1.C @@ -1,5 +1,5 @@ // PR c++/67117 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> requires false diff --git a/gcc/testsuite/g++.dg/concepts/var-templ2.C b/gcc/testsuite/g++.dg/concepts/var-templ2.C index e615f21..dc0be75 100644 --- a/gcc/testsuite/g++.dg/concepts/var-templ2.C +++ b/gcc/testsuite/g++.dg/concepts/var-templ2.C @@ -1,5 +1,5 @@ // PR c++/67139 -// { dg-options -std=c++1z } +// { dg-options "-std=c++1z -fconcepts" } template <class T> constexpr typename T::type::value_type _v = T::type::value; diff --git a/gcc/testsuite/g++.dg/concepts/variadic1.C b/gcc/testsuite/g++.dg/concepts/variadic1.C index ed3d4f1..8129463 100644 --- a/gcc/testsuite/g++.dg/concepts/variadic1.C +++ b/gcc/testsuite/g++.dg/concepts/variadic1.C @@ -1,5 +1,5 @@ // PR c++/66712 -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T, class...Args> concept bool _Constructible_ = diff --git a/gcc/testsuite/g++.dg/concepts/variadic2.C b/gcc/testsuite/g++.dg/concepts/variadic2.C index 6c55277..f7aa710 100644 --- a/gcc/testsuite/g++.dg/concepts/variadic2.C +++ b/gcc/testsuite/g++.dg/concepts/variadic2.C @@ -1,4 +1,4 @@ -// { dg-options "-std=c++1z" } +// { dg-options "-std=c++1z -fconcepts" } template <class T> concept bool Copyable = requires (T t) { T(t); }; template <class T> concept bool Constructable = requires { T(); }; diff --git a/gcc/testsuite/g++.dg/cpp0x/auto3.C b/gcc/testsuite/g++.dg/cpp0x/auto3.C index 27aab57..ed7084b 100644 --- a/gcc/testsuite/g++.dg/cpp0x/auto3.C +++ b/gcc/testsuite/g++.dg/cpp0x/auto3.C @@ -17,11 +17,11 @@ struct A { }; A<int> A1; // CWG issue 625 -A<auto> A2 = A1; // { dg-error "" "" { target { ! c++1z } } } +A<auto> A2 = A1; // { dg-error "" "" { target { ! concepts } } } auto foo() { } // { dg-error "auto" "" { target { ! c++14 } } } -void bar(auto i) // { dg-error "incomplete|auto" "" { target { ! c++1z } } } +void bar(auto i) // { dg-error "incomplete|auto" "" { target { ! concepts } } } { (void)i; } diff --git a/gcc/testsuite/g++.dg/cpp0x/auto9.C b/gcc/testsuite/g++.dg/cpp0x/auto9.C index ee20441..9001f78 100644 --- a/gcc/testsuite/g++.dg/cpp0x/auto9.C +++ b/gcc/testsuite/g++.dg/cpp0x/auto9.C @@ -116,8 +116,8 @@ template <auto V = 4> struct G {}; // { dg-error "auto" } template <typename T> struct H { H (); ~H (); }; H<auto> h; // { dg-error "invalid|initializer" } -void qq (auto); // { dg-error "auto" "" { target { ! c++1z } } } -void qr (auto*); // { dg-error "auto" "" { target { ! c++1z } } } +void qq (auto); // { dg-error "auto" "" { target { ! concepts } } } +void qr (auto*); // { dg-error "auto" "" { target { ! concepts } } } // PR c++/46145 typedef auto autot; // { dg-error "auto" } diff --git a/gcc/testsuite/lib/g++-dg.exp b/gcc/testsuite/lib/g++-dg.exp index 1343533..4f7d18a 100644 --- a/gcc/testsuite/lib/g++-dg.exp +++ b/gcc/testsuite/lib/g++-dg.exp @@ -56,6 +56,8 @@ proc g++-dg-runtest { testcases flags default-extra-flags } { } set option_list { } foreach x $std_list { + # Handle "concepts" as C++1z plus Concepts TS. + if { $x eq "concepts" } then { set x "1z -fconcepts" } lappend option_list "${std_prefix}$x" } } else { diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 16d3588..5af139b 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -6557,6 +6557,11 @@ proc check_effective_target_c++1z { } { return [check_effective_target_c++1z_only] } +# Check for C++ Concepts TS support, i.e. -fconcepts flag. +proc check_effective_target_concepts { } { + return [check-flags { "" { } { -fconcepts } }] +} + # Return 1 if expensive testcases should be run. proc check_effective_target_run_expensive_tests { } { |