On Thu, Oct 3, 2024 at 9:42 AM Jason Merrill <ja...@redhat.com> wrote: > > Tested x86_64-pc-linux-gnu, applying to trunk. > > -- 8< -- > > C++23 CWG issue 2521 (https://wg21.link/cwg2521) deprecates user-defined > literal operators declared with the optional space between "" and the > suffix. > > Many testcases used that syntax; I removed the space from most of them, and > added C++23 warning tests to a few.
I noticed that clang turns this warning on for all language levels. Should we follow clang here too? Thanks, Andrew > > CWG 2521 > > gcc/ChangeLog: > > * doc/invoke.texi: Document -Wdeprecated-literal-operator. > > gcc/c-family/ChangeLog: > > * c.opt: Add -Wdeprecated-literal-operator. > * c-opts.cc (c_common_post_options): Default on in C++23. > * c.opt.urls: Regenerate. > > gcc/cp/ChangeLog: > > * parser.cc (location_between): New. > (cp_parser_operator): Handle -Wdeprecated-literal-operator. > > gcc/testsuite/ChangeLog: > > * g++.dg/cpp0x/udlit-string-literal.h > * g++.dg/cpp0x/Wliteral-suffix2.C > * g++.dg/cpp0x/constexpr-55708.C > * g++.dg/cpp0x/gnu_fext-numeric-literals.C > * g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C > * g++.dg/cpp0x/pr51420.C > * g++.dg/cpp0x/pr60209-neg.C > * g++.dg/cpp0x/pr60209.C > * g++.dg/cpp0x/pr61038.C > * g++.dg/cpp0x/std_fext-numeric-literals.C > * g++.dg/cpp0x/std_fno-ext-numeric-literals.C > * g++.dg/cpp0x/udlit-addr.C > * g++.dg/cpp0x/udlit-args-neg.C > * g++.dg/cpp0x/udlit-args.C > * g++.dg/cpp0x/udlit-args2.C > * g++.dg/cpp0x/udlit-clink-neg.C > * g++.dg/cpp0x/udlit-concat-neg.C > * g++.dg/cpp0x/udlit-concat.C > * g++.dg/cpp0x/udlit-constexpr.C > * g++.dg/cpp0x/udlit-cpp98-neg.C > * g++.dg/cpp0x/udlit-declare-neg.C > * g++.dg/cpp0x/udlit-embed-quote.C > * g++.dg/cpp0x/udlit-extended-id-1.C > * g++.dg/cpp0x/udlit-extended-id-3.C > * g++.dg/cpp0x/udlit-extern-c.C > * g++.dg/cpp0x/udlit-friend.C > * g++.dg/cpp0x/udlit-general.C > * g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C > * g++.dg/cpp0x/udlit-implicit-conv-neg.C > * g++.dg/cpp0x/udlit-inline.C > * g++.dg/cpp0x/udlit-mangle.C > * g++.dg/cpp0x/udlit-member-neg.C > * g++.dg/cpp0x/udlit-namespace.C > * g++.dg/cpp0x/udlit-nofunc-neg.C > * g++.dg/cpp0x/udlit-nonempty-str-neg.C > * g++.dg/cpp0x/udlit-nosuffix-neg.C > * g++.dg/cpp0x/udlit-nounder-neg.C > * g++.dg/cpp0x/udlit-operator-neg.C > * g++.dg/cpp0x/udlit-overflow-neg.C > * g++.dg/cpp0x/udlit-overflow.C > * g++.dg/cpp0x/udlit-preproc-neg.C > * g++.dg/cpp0x/udlit-raw-length.C > * g++.dg/cpp0x/udlit-raw-op-string-neg.C > * g++.dg/cpp0x/udlit-raw-op.C > * g++.dg/cpp0x/udlit-raw-str.C > * g++.dg/cpp0x/udlit-resolve-char8_t.C > * g++.dg/cpp0x/udlit-resolve.C > * g++.dg/cpp0x/udlit-shadow-neg.C > * g++.dg/cpp0x/udlit-string-length.C > * g++.dg/cpp0x/udlit-suffix-neg.C > * g++.dg/cpp0x/udlit-template.C > * g++.dg/cpp0x/udlit-tmpl-arg-neg.C > * g++.dg/cpp0x/udlit-tmpl-arg-neg2.C > * g++.dg/cpp0x/udlit-tmpl-arg.C > * g++.dg/cpp0x/udlit-tmpl-parms-neg.C > * g++.dg/cpp0x/udlit-tmpl-parms.C > * g++.dg/cpp1y/pr57640.C > * g++.dg/cpp1y/pr88872.C > * g++.dg/cpp26/unevalstr1.C > * g++.dg/cpp2a/concepts-pr60391.C > * g++.dg/cpp2a/consteval-prop21.C > * g++.dg/cpp2a/nontype-class6.C > * g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C > * g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C > * g++.dg/cpp2a/udlit-class-nttp-ctad.C > * g++.dg/cpp2a/udlit-class-nttp-neg.C > * g++.dg/cpp2a/udlit-class-nttp-neg2.C > * g++.dg/cpp2a/udlit-class-nttp.C > * g++.dg/ext/is_convertible2.C > * g++.dg/lookup/pr87269.C > * g++.dg/cpp0x/udlit_system_header: Adjust for C++23 deprecated > operator "" _suffix. > * g++.dg/DRs/dr2521.C: New test. > --- > gcc/doc/invoke.texi | 12 ++++++ > gcc/c-family/c.opt | 4 ++ > .../g++.dg/cpp0x/udlit-string-literal.h | 10 ++--- > gcc/c-family/c-opts.cc | 5 +++ > gcc/cp/parser.cc | 33 +++++++++++++-- > gcc/testsuite/g++.dg/DRs/dr2521.C | 5 +++ > gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix2.C | 5 ++- > gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C | 2 +- > .../g++.dg/cpp0x/gnu_fext-numeric-literals.C | 32 +++++++-------- > .../cpp0x/gnu_fno-ext-numeric-literals.C | 32 +++++++-------- > gcc/testsuite/g++.dg/cpp0x/pr51420.C | 4 +- > gcc/testsuite/g++.dg/cpp0x/pr60209-neg.C | 16 ++++---- > gcc/testsuite/g++.dg/cpp0x/pr60209.C | 2 + > gcc/testsuite/g++.dg/cpp0x/pr61038.C | 4 +- > .../g++.dg/cpp0x/std_fext-numeric-literals.C | 32 +++++++-------- > .../cpp0x/std_fno-ext-numeric-literals.C | 32 +++++++-------- > gcc/testsuite/g++.dg/cpp0x/udlit-addr.C | 4 +- > gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C | 24 +++++------ > gcc/testsuite/g++.dg/cpp0x/udlit-args.C | 22 +++++----- > gcc/testsuite/g++.dg/cpp0x/udlit-args2.C | 8 ++-- > gcc/testsuite/g++.dg/cpp0x/udlit-clink-neg.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C | 4 +- > gcc/testsuite/g++.dg/cpp0x/udlit-concat.C | 6 +-- > gcc/testsuite/g++.dg/cpp0x/udlit-constexpr.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C | 4 +- > .../g++.dg/cpp0x/udlit-declare-neg.C | 8 ++-- > .../g++.dg/cpp0x/udlit-embed-quote.C | 4 +- > .../g++.dg/cpp0x/udlit-extended-id-1.C | 10 ++--- > .../g++.dg/cpp0x/udlit-extended-id-3.C | 1 + > gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-friend.C | 12 +++--- > gcc/testsuite/g++.dg/cpp0x/udlit-general.C | 22 +++++----- > .../cpp0x/udlit-implicit-conv-neg-char8_t.C | 24 +++++------ > .../g++.dg/cpp0x/udlit-implicit-conv-neg.C | 20 +++++----- > gcc/testsuite/g++.dg/cpp0x/udlit-inline.C | 10 ++--- > gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C | 6 +-- > gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C | 10 ++--- > gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C | 4 +- > .../g++.dg/cpp0x/udlit-nonempty-str-neg.C | 2 +- > .../g++.dg/cpp0x/udlit-nosuffix-neg.C | 2 +- > .../g++.dg/cpp0x/udlit-nounder-neg.C | 4 +- > .../g++.dg/cpp0x/udlit-operator-neg.C | 12 +++--- > .../g++.dg/cpp0x/udlit-overflow-neg.C | 4 +- > gcc/testsuite/g++.dg/cpp0x/udlit-overflow.C | 4 +- > .../g++.dg/cpp0x/udlit-preproc-neg.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-raw-length.C | 2 +- > .../g++.dg/cpp0x/udlit-raw-op-string-neg.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C | 2 +- > .../g++.dg/cpp0x/udlit-resolve-char8_t.C | 30 +++++++------- > gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C | 26 ++++++------ > gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C | 40 +++++++++---------- > .../g++.dg/cpp0x/udlit-string-length.C | 10 ++--- > gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C | 2 +- > gcc/testsuite/g++.dg/cpp0x/udlit-template.C | 18 ++++----- > .../g++.dg/cpp0x/udlit-tmpl-arg-neg.C | 2 +- > .../g++.dg/cpp0x/udlit-tmpl-arg-neg2.C | 4 +- > gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C | 2 +- > .../g++.dg/cpp0x/udlit-tmpl-parms-neg.C | 6 +-- > gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms.C | 2 +- > gcc/testsuite/g++.dg/cpp1y/pr57640.C | 2 +- > gcc/testsuite/g++.dg/cpp1y/pr88872.C | 2 +- > gcc/testsuite/g++.dg/cpp26/unevalstr1.C | 34 ++++++++-------- > gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C | 2 +- > gcc/testsuite/g++.dg/cpp2a/consteval-prop21.C | 2 +- > gcc/testsuite/g++.dg/cpp2a/nontype-class6.C | 2 +- > .../g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C | 2 +- > .../g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C | 2 +- > .../g++.dg/cpp2a/udlit-class-nttp-ctad.C | 2 +- > .../g++.dg/cpp2a/udlit-class-nttp-neg.C | 2 +- > .../g++.dg/cpp2a/udlit-class-nttp-neg2.C | 2 +- > gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C | 2 +- > gcc/testsuite/g++.dg/ext/is_convertible2.C | 2 +- > gcc/testsuite/g++.dg/lookup/pr87269.C | 4 +- > gcc/c-family/c.opt.urls | 3 ++ > .../g++.dg/cpp0x/udlit_system_header | 2 +- > 77 files changed, 373 insertions(+), 315 deletions(-) > create mode 100644 gcc/testsuite/g++.dg/DRs/dr2521.C > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index e199522f62c..c90f5b4d58e 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -4032,6 +4032,18 @@ bool b = e <= 3.7; > @option{-std=c++20}. In pre-C++20 dialects, this warning can be enabled > by @option{-Wenum-conversion}. > > +@opindex Wdeprecated-literal-operator > +@opindex Wno-deprecated-literal-operator > +@item -Wdeprecated-literal-operator @r{(C++ and Objective-C++ only)} > +Warn that the declaration of a user-defined literal operator with a > +space before the suffix is deprecated. This warning is enabled by > +default in C++23. > + > +@smallexample > +string operator "" _i18n(const char*, std::size_t); // deprecated > +string operator ""_i18n(const char*, std::size_t); // preferred > +@end smallexample > + > @opindex Welaborated-enum-base > @opindex Wno-elaborated-enum-base > @item -Wno-elaborated-enum-base > diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt > index 77fe1b02bd2..9d1fccadbf9 100644 > --- a/gcc/c-family/c.opt > +++ b/gcc/c-family/c.opt > @@ -664,6 +664,10 @@ C++ ObjC++ Var(warn_deprecated_enum_float_conv) Warning > Warn about deprecated arithmetic conversions on operands where one is of > enumeration > type and the other is of a floating-point type. > > +Wdeprecated-literal-operator > +C++ ObjC++ Var(warn_deprecated_literal_operator) Warning > +Warn about deprecated space between "" and suffix in a user-defined literal > operator. > + > Wdesignated-init > C ObjC Var(warn_designated_init) Init(1) Warning > Warn about positional initialization of structs requiring designated > initializers. > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h > b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h > index c8725fa9f46..529d5b7e6dc 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h > @@ -5,24 +5,24 @@ > inline namespace my_string_literals > { > std::string > - operator"" s(const char* str, std::size_t len) > + operator ""s(const char* str, std::size_t len) > { return std::string{str, len}; } > > #if __cpp_lib_char8_t > std::u8string > - operator"" s(const char8_t* str, std::size_t len) > + operator ""s(const char8_t* str, std::size_t len) > { return std::u8string{str, len}; } > #endif > > std::wstring > - operator"" s(const wchar_t* str, std::size_t len) > + operator ""s(const wchar_t* str, std::size_t len) > { return std::wstring{str, len}; } > > std::u16string > - operator"" s(const char16_t* str, std::size_t len) > + operator ""s(const char16_t* str, std::size_t len) > { return std::u16string{str, len}; } > > std::u32string > - operator"" s(const char32_t* str, std::size_t len) > + operator ""s(const char32_t* str, std::size_t len) > { return std::u32string{str, len}; } > } > diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc > index 86163ddb4ed..8ff3d966bb6 100644 > --- a/gcc/c-family/c-opts.cc > +++ b/gcc/c-family/c-opts.cc > @@ -1016,6 +1016,11 @@ c_common_post_options (const char **pfilename) > warn_deprecated_enum_float_conv, > cxx_dialect >= cxx20 && warn_deprecated); > > + /* -Wdeprecated-literal-operator is enabled by default in C++23. */ > + SET_OPTION_IF_UNSET (&global_options, &global_options_set, > + warn_deprecated_literal_operator, > + cxx_dialect >= cxx23 && warn_deprecated); > + > /* -Wtemplate-id-cdtor is enabled by default in C++20. */ > SET_OPTION_IF_UNSET (&global_options, &global_options_set, > warn_template_id_cdtor, > diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc > index 0944827d777..08f9c89f1f0 100644 > --- a/gcc/cp/parser.cc > +++ b/gcc/cp/parser.cc > @@ -943,6 +943,18 @@ make_location (cp_token *caret, cp_token *start, > cp_token *end) > return make_location (caret->location, start->location, end->location); > } > > +/* Location for the whitespace between two tokens. */ > + > +static location_t > +location_between (cp_token *stok, cp_token *etok) > +{ > + location_t s = get_finish (stok->location); > + s = linemap_position_for_loc_and_offset (line_table, s, 1); > + location_t e = get_start (etok->location); > + e = linemap_position_for_loc_and_offset (line_table, e, -1); > + return make_location (s, s, e); > +} > + > /* nonzero if we are presently saving tokens. */ > > static inline int > @@ -18325,6 +18337,8 @@ cp_parser_operator (cp_parser* parser, location_t > start_loc) > if (cxx_dialect == cxx98) > maybe_warn_cpp0x (CPP0X_USER_DEFINED_LITERALS); > > + token = cp_lexer_peek_token (parser->lexer); > + > /* Consume the string. */ > cp_expr str = cp_parser_userdef_string_literal (parser, > > /*lookup_udlit=*/false); > @@ -18340,13 +18354,24 @@ cp_parser_operator (cp_parser* parser, location_t > start_loc) > { > string_tree = str; > /* Look for the suffix identifier. */ > - token = cp_lexer_peek_token (parser->lexer); > - if (token->type == CPP_NAME) > + cp_token *id_tok = cp_lexer_peek_token (parser->lexer); > + if (id_tok->type == CPP_NAME) > { > id = cp_parser_identifier (parser); > - end_loc = token->location; > + end_loc = id_tok->location; > + > + /* Deprecated by CWG2521 in C++23. */ > + if (warn_deprecated_literal_operator) > + { > + gcc_rich_location > + space (location_between (token, id_tok)); > + space.add_fixit_remove (); > + warning_at (&space, OPT_Wdeprecated_literal_operator, > + "space between quotes and suffix is " > + "deprecated in C++23"); > + } > } > - else if (token->type == CPP_KEYWORD) > + else if (id_tok->type == CPP_KEYWORD) > { > error ("unexpected keyword;" > " remove space between quotes and suffix identifier"); > diff --git a/gcc/testsuite/g++.dg/DRs/dr2521.C > b/gcc/testsuite/g++.dg/DRs/dr2521.C > new file mode 100644 > index 00000000000..bce70421bd3 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/DRs/dr2521.C > @@ -0,0 +1,5 @@ > +// CWG2521 > +// { dg-do compile { target c++11 } } > + > +void operator "" _foo(const char *); // { dg-warning "deprecated" "" { > target c++23 } } > +void operator ""_bar(const char *); > diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix2.C > b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix2.C > index 129947d86b3..e93e2720662 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix2.C > +++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix2.C > @@ -5,7 +5,8 @@ > // Test "-Wno-literal-suffix" suppresses warnings on declaration without > // leading underscore. > > -long double operator"" nounder(long double); // { dg-bogus "" } > +long double operator"" nounder(long double); // { dg-bogus "reserved" } > +// { dg-warning "space" "" { target c++23 } .-1 } > > template<char...> > - int operator"" nounder(); // { dg-bogus "" } > + int operator ""nounder(); // { dg-bogus "reserved" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C > b/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C > index ffbefbbac46..9d1bd196126 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C > +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C > @@ -11,7 +11,7 @@ constexpr unsigned long long mymax(A && a,const B& b){ > } > > template<char... List> > -constexpr long long operator"" _y() noexcept > +constexpr long long operator ""_y() noexcept > { > return AA<1, mymax(1,2)>::val; // <-- crashes gcc > // return mymax(1,2); // <-- compiles > diff --git a/gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C > b/gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C > index 7a467a154b0..46bf419adb2 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C > +++ b/gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C > @@ -4,73 +4,73 @@ > // Integer imaginary... > > constexpr unsigned long long > -operator"" i(unsigned long long n) // { dg-warning "1:integer suffix .i. > shadowed by implementation" "" { target c++11_only } } > +operator ""i(unsigned long long n) // { dg-warning "1:integer suffix .i. > shadowed by implementation" "" { target c++11_only } } > { return 4 * n + 0; } > > constexpr unsigned long long > -operator"" I(unsigned long long n) // { dg-warning "1:integer suffix .I. > shadowed by implementation" } > +operator ""I(unsigned long long n) // { dg-warning "1:integer suffix .I. > shadowed by implementation" } > { return 4 * n + 1; } > > constexpr unsigned long long > -operator"" j(unsigned long long n) // { dg-warning "1:integer suffix .j. > shadowed by implementation" } > +operator ""j(unsigned long long n) // { dg-warning "1:integer suffix .j. > shadowed by implementation" } > { return 4 * n + 2; } > > constexpr unsigned long long > -operator"" J(unsigned long long n) // { dg-warning "1:integer suffix .J. > shadowed by implementation" } > +operator ""J(unsigned long long n) // { dg-warning "1:integer suffix .J. > shadowed by implementation" } > { return 4 * n + 3; } > > // Floating-point imaginary... > > constexpr long double > -operator"" i(long double n) // { dg-warning "1:floating-point suffix .i. > shadowed by implementation" "" { target c++11_only } } > +operator ""i(long double n) // { dg-warning "1:floating-point suffix .i. > shadowed by implementation" "" { target c++11_only } } > { return 4.0L * n + 0.0L; } > > constexpr long double > -operator"" I(long double n) // { dg-warning "1:floating-point suffix .I. > shadowed by implementation" } > +operator ""I(long double n) // { dg-warning "1:floating-point suffix .I. > shadowed by implementation" } > { return 4.0L * n + 1.0L; } > > constexpr long double > -operator"" j(long double n) // { dg-warning "1:floating-point suffix .j. > shadowed by implementation" } > +operator ""j(long double n) // { dg-warning "1:floating-point suffix .j. > shadowed by implementation" } > { return 4.0L * n + 2.0L; } > > constexpr long double > -operator"" J(long double n) // { dg-warning "1:floating-point suffix .J. > shadowed by implementation" } > +operator ""J(long double n) // { dg-warning "1:floating-point suffix .J. > shadowed by implementation" } > { return 4.0L * n + 3.0L; } > > // Fixed-point... > > constexpr long double > -operator"" k(long double n) // { dg-warning "1:floating-point suffix .k. > shadowed by implementation" } > +operator ""k(long double n) // { dg-warning "1:floating-point suffix .k. > shadowed by implementation" } > { return 4 * (n + 1) + 0; } > > constexpr long double > -operator"" K(long double n) // { dg-warning "1:floating-point suffix .K. > shadowed by implementation" } > +operator ""K(long double n) // { dg-warning "1:floating-point suffix .K. > shadowed by implementation" } > { return 4 * (n + 1) + 1; } > > constexpr long double > -operator"" r(long double n) // { dg-warning "1:floating-point suffix .r. > shadowed by implementation" } > +operator ""r(long double n) // { dg-warning "1:floating-point suffix .r. > shadowed by implementation" } > { return 4 * (n + 1) + 2; } > > constexpr long double > -operator"" R(long double n) // { dg-warning "1:floating-point suffix .R. > shadowed by implementation" } > +operator ""R(long double n) // { dg-warning "1:floating-point suffix .R. > shadowed by implementation" } > { return 4 * (n + 1) + 3; } > > // Machine-defined... > > constexpr long double > -operator"" w(long double n) // { dg-warning "1:floating-point suffix .w. > shadowed by implementation" } > +operator ""w(long double n) // { dg-warning "1:floating-point suffix .w. > shadowed by implementation" } > { return 4 * (n + 2) + 0; } > > constexpr long double > -operator"" W(long double n) // { dg-warning "1:floating-point suffix .W. > shadowed by implementation" } > +operator ""W(long double n) // { dg-warning "1:floating-point suffix .W. > shadowed by implementation" } > { return 4 * (n + 2) + 1; } > > constexpr long double > -operator"" q(long double n) // { dg-warning "1:floating-point suffix .q. > shadowed by implementation" } > +operator ""q(long double n) // { dg-warning "1:floating-point suffix .q. > shadowed by implementation" } > { return 4 * (n + 2) + 2; } > > constexpr long double > -operator"" Q(long double n) // { dg-warning "1:floating-point suffix .Q. > shadowed by implementation" } > +operator ""Q(long double n) // { dg-warning "1:floating-point suffix .Q. > shadowed by implementation" } > { return 4 * (n + 2) + 3; } > > int > diff --git a/gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C > b/gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C > index c738a484da6..7ee35d4c42c 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C > +++ b/gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C > @@ -4,73 +4,73 @@ > // Integer imaginary... > > constexpr unsigned long long > -operator"" i(unsigned long long n) > +operator ""i(unsigned long long n) > { return 4 * n + 0; } > > constexpr unsigned long long > -operator"" I(unsigned long long n) > +operator ""I(unsigned long long n) > { return 4 * n + 1; } > > constexpr unsigned long long > -operator"" j(unsigned long long n) > +operator ""j(unsigned long long n) > { return 4 * n + 2; } > > constexpr unsigned long long > -operator"" J(unsigned long long n) > +operator ""J(unsigned long long n) > { return 4 * n + 3; } > > // Floating-point imaginary... > > constexpr long double > -operator"" i(long double n) > +operator ""i(long double n) > { return 4.0L * n + 0.0L; } > > constexpr long double > -operator"" I(long double n) > +operator ""I(long double n) > { return 4.0L * n + 1.0L; } > > constexpr long double > -operator"" j(long double n) > +operator ""j(long double n) > { return 4.0L * n + 2.0L; } > > constexpr long double > -operator"" J(long double n) > +operator ""J(long double n) > { return 4.0L * n + 3.0L; } > > // Fixed-point... > > constexpr long double > -operator"" k(long double n) > +operator ""k(long double n) > { return 4 * (n + 1) + 0; } > > constexpr long double > -operator"" K(long double n) > +operator ""K(long double n) > { return 4 * (n + 1) + 1; } > > constexpr long double > -operator"" r(long double n) > +operator ""r(long double n) > { return 4 * (n + 1) + 2; } > > constexpr long double > -operator"" R(long double n) > +operator ""R(long double n) > { return 4 * (n + 1) + 3; } > > // Machine-defined... > > constexpr long double > -operator"" w(long double n) > +operator ""w(long double n) > { return 4 * (n + 2) + 0; } > > constexpr long double > -operator"" W(long double n) > +operator ""W(long double n) > { return 4 * (n + 2) + 1; } > > constexpr long double > -operator"" q(long double n) > +operator ""q(long double n) > { return 4 * (n + 2) + 2; } > > constexpr long double > -operator"" Q(long double n) > +operator ""Q(long double n) > { return 4 * (n + 2) + 3; } > > int > diff --git a/gcc/testsuite/g++.dg/cpp0x/pr51420.C > b/gcc/testsuite/g++.dg/cpp0x/pr51420.C > index 1612cef9ee2..a06d62788cd 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/pr51420.C > +++ b/gcc/testsuite/g++.dg/cpp0x/pr51420.C > @@ -4,9 +4,9 @@ > void > foo() > { > - float x = operator"" _F(); // { dg-error "13:'operator\"\"_F' was not > declared in this scope" } > + float x = operator ""_F(); // { dg-error "13:'operator\"\"_F' was not > declared in this scope" } > /* { dg-begin-multiline-output "" } > - float x = operator"" _F(); > + float x = operator ""_F(); > ^~~~~~~~~~~~~ > { dg-end-multiline-output "" } */ > > diff --git a/gcc/testsuite/g++.dg/cpp0x/pr60209-neg.C > b/gcc/testsuite/g++.dg/cpp0x/pr60209-neg.C > index 6c3ad0c9016..1d87207a106 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/pr60209-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/pr60209-neg.C > @@ -4,25 +4,25 @@ > // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1473 > > void operator "" "boo" _ya(unsigned long long); // { dg-error "expected > empty string after" } > +// { dg-warning "space" "" { target c++23 } .-1 } > > void operator "" "boo"_ya(unsigned long long); // { dg-error "expected empty > string after" } > > -void operator "" u"" _u(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > +void operator "" u""_u(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > > -void operator u"" "" _v(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > +void operator u"" ""_v(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > > -void operator U"" "" _w(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > +void operator U"" ""_w(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > > -void operator L"" "" _x(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > +void operator L"" ""_x(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > > -void operator u8"" "" _y(unsigned long long); // { dg-error "invalid > encoding prefix in literal operator" } > +void operator u8"" ""_y(unsigned long long); // { dg-error "invalid encoding > prefix in literal operator" } > > -void operator u"" L"" _z(unsigned long long); // { dg-error "concatenation > of string literals with conflicting encoding prefixes" } > +void operator u"" L""_z(unsigned long long); // { dg-error "concatenation of > string literals with conflicting encoding prefixes" } > +// { dg-error "invalid encoding prefix in literal operator" "invalid" { > target *-*-* } .-1 } > > void operator ""_p ""_q(unsigned long long); // { dg-error "inconsistent > user-defined literal suffixes" } > > void operator "" "" while(unsigned long long); // { dg-error "unexpected > keyword; remove space between quotes and suffix identifier" } > > void operator "" ""(unsigned long long); // { dg-error "expected suffix > identifier" } > - > -// { dg-error "invalid encoding prefix in literal operator" "invalid" { > target *-*-* } 20 } > diff --git a/gcc/testsuite/g++.dg/cpp0x/pr60209.C > b/gcc/testsuite/g++.dg/cpp0x/pr60209.C > index 6ed26e9bcc6..2ecb7ed0c82 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/pr60209.C > +++ b/gcc/testsuite/g++.dg/cpp0x/pr60209.C > @@ -4,8 +4,10 @@ > // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1473 > > void operator "" "" _x(unsigned long long); > +// { dg-warning "space" "" { target c++23 } .-1 } > > void operator "" "" "" _x(unsigned long long); > +// { dg-warning "space" "" { target c++23 } .-1 } > > void operator "" ""_w(unsigned long long); > > diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C > b/gcc/testsuite/g++.dg/cpp0x/pr61038.C > index 96aabe554b8..3030defe94d 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C > +++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C > @@ -6,11 +6,11 @@ > #include <cstdlib> > > void > -operator "" _s(const char *, size_t) > +operator ""_s(const char *, size_t) > { } > > void > -operator "" _t(const char) > +operator ""_t(const char) > { } > > #define QUOTE(s) #s > diff --git a/gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C > b/gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C > index d251c744999..192383d104a 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C > +++ b/gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C > @@ -4,73 +4,73 @@ > // Integer imaginary... > > constexpr unsigned long long > -operator"" i(unsigned long long n) // { dg-warning "1:integer suffix .i. > shadowed by implementation" "" { target c++11_only } } > +operator ""i(unsigned long long n) // { dg-warning "1:integer suffix .i. > shadowed by implementation" "" { target c++11_only } } > { return 4 * n + 0; } > > constexpr unsigned long long > -operator"" I(unsigned long long n) // { dg-warning "1:integer suffix .I. > shadowed by implementation" } > +operator ""I(unsigned long long n) // { dg-warning "1:integer suffix .I. > shadowed by implementation" } > { return 4 * n + 1; } > > constexpr unsigned long long > -operator"" j(unsigned long long n) // { dg-warning "1:integer suffix .j. > shadowed by implementation" } > +operator ""j(unsigned long long n) // { dg-warning "1:integer suffix .j. > shadowed by implementation" } > { return 4 * n + 2; } > > constexpr unsigned long long > -operator"" J(unsigned long long n) // { dg-warning "1:integer suffix .J. > shadowed by implementation" } > +operator ""J(unsigned long long n) // { dg-warning "1:integer suffix .J. > shadowed by implementation" } > { return 4 * n + 3; } > > // Floating-point imaginary... > > constexpr long double > -operator"" i(long double n) // { dg-warning "1:floating-point suffix .i. > shadowed by implementation" "" { target c++11_only } } > +operator ""i(long double n) // { dg-warning "1:floating-point suffix .i. > shadowed by implementation" "" { target c++11_only } } > { return 4.0L * n + 0.0L; } > > constexpr long double > -operator"" I(long double n) // { dg-warning "1:floating-point suffix .I. > shadowed by implementation" } > +operator ""I(long double n) // { dg-warning "1:floating-point suffix .I. > shadowed by implementation" } > { return 4.0L * n + 1.0L; } > > constexpr long double > -operator"" j(long double n) // { dg-warning "1:floating-point suffix .j. > shadowed by implementation" } > +operator ""j(long double n) // { dg-warning "1:floating-point suffix .j. > shadowed by implementation" } > { return 4.0L * n + 2.0L; } > > constexpr long double > -operator"" J(long double n) // { dg-warning "1:floating-point suffix .J. > shadowed by implementation" } > +operator ""J(long double n) // { dg-warning "1:floating-point suffix .J. > shadowed by implementation" } > { return 4.0L * n + 3.0L; } > > // Fixed-point... > > constexpr long double > -operator"" k(long double n) // { dg-warning "1:floating-point suffix .k. > shadowed by implementation" } > +operator ""k(long double n) // { dg-warning "1:floating-point suffix .k. > shadowed by implementation" } > { return 4 * (n + 1) + 0; } > > constexpr long double > -operator"" K(long double n) // { dg-warning "1:floating-point suffix .K. > shadowed by implementation" } > +operator ""K(long double n) // { dg-warning "1:floating-point suffix .K. > shadowed by implementation" } > { return 4 * (n + 1) + 1; } > > constexpr long double > -operator"" r(long double n) // { dg-warning "1:floating-point suffix .r. > shadowed by implementation" } > +operator ""r(long double n) // { dg-warning "1:floating-point suffix .r. > shadowed by implementation" } > { return 4 * (n + 1) + 2; } > > constexpr long double > -operator"" R(long double n) // { dg-warning "1:floating-point suffix .R. > shadowed by implementation" } > +operator ""R(long double n) // { dg-warning "1:floating-point suffix .R. > shadowed by implementation" } > { return 4 * (n + 1) + 3; } > > // Machine-defined... > > constexpr long double > -operator"" w(long double n) // { dg-warning "1:floating-point suffix .w. > shadowed by implementation" } > +operator ""w(long double n) // { dg-warning "1:floating-point suffix .w. > shadowed by implementation" } > { return 4 * (n + 2) + 0; } > > constexpr long double > -operator"" W(long double n) // { dg-warning "1:floating-point suffix .W. > shadowed by implementation" } > +operator ""W(long double n) // { dg-warning "1:floating-point suffix .W. > shadowed by implementation" } > { return 4 * (n + 2) + 1; } > > constexpr long double > -operator"" q(long double n) // { dg-warning "1:floating-point suffix .q. > shadowed by implementation" } > +operator ""q(long double n) // { dg-warning "1:floating-point suffix .q. > shadowed by implementation" } > { return 4 * (n + 2) + 2; } > > constexpr long double > -operator"" Q(long double n) // { dg-warning "1:floating-point suffix .Q. > shadowed by implementation" } > +operator ""Q(long double n) // { dg-warning "1:floating-point suffix .Q. > shadowed by implementation" } > { return 4 * (n + 2) + 3; } > > int > diff --git a/gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C > b/gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C > index b4f9d457d98..23b988ea6b5 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C > +++ b/gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C > @@ -4,73 +4,73 @@ > // Integer imaginary... > > constexpr unsigned long long > -operator"" i(unsigned long long n) > +operator ""i(unsigned long long n) > { return 4 * n + 0; } > > constexpr unsigned long long > -operator"" I(unsigned long long n) > +operator ""I(unsigned long long n) > { return 4 * n + 1; } > > constexpr unsigned long long > -operator"" j(unsigned long long n) > +operator ""j(unsigned long long n) > { return 4 * n + 2; } > > constexpr unsigned long long > -operator"" J(unsigned long long n) > +operator ""J(unsigned long long n) > { return 4 * n + 3; } > > // Floating-point imaginary... > > constexpr long double > -operator"" i(long double n) > +operator ""i(long double n) > { return 4.0L * n + 0.0L; } > > constexpr long double > -operator"" I(long double n) > +operator ""I(long double n) > { return 4.0L * n + 1.0L; } > > constexpr long double > -operator"" j(long double n) > +operator ""j(long double n) > { return 4.0L * n + 2.0L; } > > constexpr long double > -operator"" J(long double n) > +operator ""J(long double n) > { return 4.0L * n + 3.0L; } > > // Fixed-point... > > constexpr long double > -operator"" k(long double n) > +operator ""k(long double n) > { return 4 * (n + 1) + 0; } > > constexpr long double > -operator"" K(long double n) > +operator ""K(long double n) > { return 4 * (n + 1) + 1; } > > constexpr long double > -operator"" r(long double n) > +operator ""r(long double n) > { return 4 * (n + 1) + 2; } > > constexpr long double > -operator"" R(long double n) > +operator ""R(long double n) > { return 4 * (n + 1) + 3; } > > // Machine-defined... > > constexpr long double > -operator"" w(long double n) > +operator ""w(long double n) > { return 4 * (n + 2) + 0; } > > constexpr long double > -operator"" W(long double n) > +operator ""W(long double n) > { return 4 * (n + 2) + 1; } > > constexpr long double > -operator"" q(long double n) > +operator ""q(long double n) > { return 4 * (n + 2) + 2; } > > constexpr long double > -operator"" Q(long double n) > +operator ""Q(long double n) > { return 4 * (n + 2) + 3; } > > int > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-addr.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-addr.C > index 11389bfbc28..3c62524f1d6 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-addr.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-addr.C > @@ -2,9 +2,9 @@ > > #include <cstddef> > > -bool operator"" _yn(const char*, size_t); > +bool operator ""_yn(const char*, size_t); > > typedef bool (*pfunk)(const char*, size_t); > -pfunk p = &operator"" _yn; > +pfunk p = &operator ""_yn; > > bool tf = p("Hello,\0 World!", 14); > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C > index b22fddd0403..72cb4b4c4cb 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C > @@ -5,37 +5,37 @@ > class Foo { }; > > int > -operator"" _Foo(); // { dg-error "1:.int operator\"\"_Foo\\(\\). has > invalid argument list" } > +operator ""_Foo(); // { dg-error "1:.int operator\"\"_Foo\\(\\). has > invalid argument list" } > > Foo > -operator"" _Foo(int *); // { dg-error "1:.Foo > operator\"\"_Foo\\(int\\*\\). has invalid argument list" } > +operator ""_Foo(int *); // { dg-error "1:.Foo > operator\"\"_Foo\\(int\\*\\). has invalid argument list" } > > Foo > -operator"" _Foo(unsigned long int); // { dg-error "1:.Foo > operator\"\"_Foo\\(long unsigned int\\). has invalid argument list" } > +operator ""_Foo(unsigned long int); // { dg-error "1:.Foo > operator\"\"_Foo\\(long unsigned int\\). has invalid argument list" } > > Foo > -operator"" _Foo(double); // { dg-error "1:.Foo > operator\"\"_Foo\\(double\\). has invalid argument list" } > +operator ""_Foo(double); // { dg-error "1:.Foo > operator\"\"_Foo\\(double\\). has invalid argument list" } > > Foo > -operator"" _Foo(const float *, std::size_t); // { dg-error "1:.Foo > operator\"\"_Foo\\(const float\\*, std::size_t\\). has invalid argument list" > } > +operator ""_Foo(const float *, std::size_t); // { dg-error "1:.Foo > operator\"\"_Foo\\(const float\\*, std::size_t\\). has invalid argument list" > } > > Foo > -operator"" _Foo(const wchar_t *, int); // { dg-error "1:.Foo > operator\"\"_Foo\\(const wchar_t\\*, int\\). has invalid argument list" } > +operator ""_Foo(const wchar_t *, int); // { dg-error "1:.Foo > operator\"\"_Foo\\(const wchar_t\\*, int\\). has invalid argument list" } > > Foo > -operator"" _Foo(const char16_t *); // { dg-error "1:.Foo > operator\"\"_Foo\\(const char16_t\\*\\). has invalid argument list" } > +operator ""_Foo(const char16_t *); // { dg-error "1:.Foo > operator\"\"_Foo\\(const char16_t\\*\\). has invalid argument list" } > > Foo > -operator"" _Foo(char...); // { dg-error "1:.Foo > operator\"\"_Foo\\(char, \\.\\.\\.\\). has invalid argument list" } > +operator ""_Foo(char...); // { dg-error "1:.Foo > operator\"\"_Foo\\(char, \\.\\.\\.\\). has invalid argument list" } > > Foo > -operator"" _Foo(unsigned long long int, char); // { dg-error "1:.Foo > operator\"\"_Foo\\(long long unsigned int, char\\). has invalid argument > list" } > +operator ""_Foo(unsigned long long int, char); // { dg-error "1:.Foo > operator\"\"_Foo\\(long long unsigned int, char\\). has invalid argument > list" } > > Foo > -operator"" _Foo(const char *, std::size_t, int); // { dg-error "1:.Foo > operator\"\"_Foo\\(const char\\*, std::size_t, int\\). has invalid argument > list" } > +operator ""_Foo(const char *, std::size_t, int); // { dg-error "1:.Foo > operator\"\"_Foo\\(const char\\*, std::size_t, int\\). has invalid argument > list" } > > Foo > -operator"" _Foo(long double &); // { dg-error "1:.Foo > operator\"\"_Foo\\(long double&\\). has invalid argument list" } > +operator ""_Foo(long double &); // { dg-error "1:.Foo > operator\"\"_Foo\\(long double&\\). has invalid argument list" } > > Foo > -operator"" _Foo(std::size_t, const char16_t *); // { dg-error "1:.Foo > operator\"\"_Foo\\(std::size_t, const char16_t\\*\\). has invalid argument > list" } > +operator ""_Foo(std::size_t, const char16_t *); // { dg-error "1:.Foo > operator\"\"_Foo\\(std::size_t, const char16_t\\*\\). has invalid argument > list" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-args.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-args.C > index 4680288d20c..2c1058ec344 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-args.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-args.C > @@ -5,34 +5,34 @@ > class Foo { }; > > Foo > -operator"" _Foo(const char *); > +operator ""_Foo(const char *); > > Foo > -operator"" _Foo(unsigned long long int); > +operator ""_Foo(unsigned long long int); > > Foo > -operator"" _Foo(long double); > +operator ""_Foo(long double); > > Foo > -operator"" _Foo(char); > +operator ""_Foo(char); > > Foo > -operator"" _Foo(wchar_t); > +operator ""_Foo(wchar_t); > > Foo > -operator"" _Foo(char16_t); > +operator ""_Foo(char16_t); > > Foo > -operator"" _Foo(char32_t); > +operator ""_Foo(char32_t); > > Foo > -operator"" _Foo(const char *, std::size_t); > +operator ""_Foo(const char *, std::size_t); > > Foo > -operator"" _Foo(const wchar_t *, std::size_t); > +operator ""_Foo(const wchar_t *, std::size_t); > > Foo > -operator"" _Foo(const char16_t *, std::size_t); > +operator ""_Foo(const char16_t *, std::size_t); > > Foo > -operator"" _Foo(const char32_t *, std::size_t); > +operator ""_Foo(const char32_t *, std::size_t); > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-args2.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-args2.C > index b9cb8e093a9..faf6ca533ff 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-args2.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-args2.C > @@ -3,12 +3,12 @@ > > #include <cstddef> > > -int operator "" _a (const char *); > -int operator "" _a (const char *, std::size_t); > +int operator ""_a (const char *); > +int operator ""_a (const char *, std::size_t); > int a = 123_a; > int a2 = "abc"_a; > > -int operator "" _b (const char *, std::size_t); > -int operator "" _b (const char *); > +int operator ""_b (const char *, std::size_t); > +int operator ""_b (const char *); > int b = 123_b; > int b2 = "abc"_b; > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-clink-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-clink-neg.C > index eb7ae8c0b17..f20b755b715 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-clink-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-clink-neg.C > @@ -3,6 +3,6 @@ > extern "C" { > > int > -operator"" _badclinkage(unsigned long long); // { dg-error "1:literal > operator with C linkage" } > +operator ""_badclinkage(unsigned long long); // { dg-error "1:literal > operator with C linkage" } > > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C > index 95d49271b81..4b7e33d80fc 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C > @@ -3,8 +3,8 @@ > > #include <string> > > -std::string operator"" _xxx(const char*, size_t); > +std::string operator ""_xxx(const char*, size_t); > > -std::string operator"" _yyy(const char*, size_t); > +std::string operator ""_yyy(const char*, size_t); > > std::string concat = "Hello, "_xxx "World!"_yyy; // { dg-error > "inconsistent user-defined literal suffixes" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C > index 208aaeea55d..b513e738ab9 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C > @@ -3,7 +3,7 @@ > > #include <string> > > -std::string operator"" _www(const char*, size_t); > +std::string operator ""_www(const char*, size_t); > > std::string concat01 = "Hello, " "World!"_www; > > @@ -14,9 +14,9 @@ std::string concat11 = "Hello, "_www "World!"_www; > > class Tachyon { }; > > -Tachyon operator"" _fast(const char*, size_t); > +Tachyon operator ""_fast(const char*, size_t); > > -int operator"" _fast(const char32_t*, size_t); > +int operator ""_fast(const char32_t*, size_t); > > int speedy01 = "Hello, " U"World!"_fast; > > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-constexpr.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-constexpr.C > index 4c2f7eda371..f91bf147eb1 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-constexpr.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-constexpr.C > @@ -1,7 +1,7 @@ > // { dg-do compile { target c++11 } } > > constexpr unsigned long long > -operator"" _grow(unsigned long long n) > +operator ""_grow(unsigned long long n) > { return 2 * n; } > > double buffer[25_grow]; > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C > index cb4c359658c..a68505d62a2 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C > @@ -3,13 +3,13 @@ > #include <cstddef> > > int > -operator"" _mm(long double m) // { dg-warning "user-defined literals only > available with" } > +operator ""_mm(long double m) // { dg-warning "user-defined literals only > available with" } > { return int(1000.0L * m); } > > int in = 0.0254_mm; // { dg-error "invalid suffix" } > > int > -operator"" _Q(const char *, std::size_t) // { dg-warning "user-defined > literals only available with" } > +operator ""_Q(const char *, std::size_t) // { dg-warning "user-defined > literals only available with" } > { return 42; } > > int x = "Hello"_Q; // { dg-error "invalid conversion from" "invalid" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-declare-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-declare-neg.C > index 721f87d4e66..7d06e42c4dc 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-declare-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-declare-neg.C > @@ -2,14 +2,14 @@ > > // Check that undeclared literal operator calls and literals give > appropriate errors. > > -int i = operator"" _Bar('x'); // { dg-error "9:'operator\"\"_Bar' was not > declared in this scope" } > +int i = operator ""_Bar('x'); // { dg-error "9:'operator\"\"_Bar' was not > declared in this scope" } > int j = 'x'_Bar; // { dg-error "unable to find character literal > operator|with|argument" } > > -int ii = operator"" _BarCharStr("Howdy, Pardner!"); // { dg-error > "10:'operator\"\"_BarCharStr' was not declared in this scope" } > +int ii = operator ""_BarCharStr("Howdy, Pardner!"); // { dg-error > "10:'operator\"\"_BarCharStr' was not declared in this scope" } > int jj = "Howdy, Pardner!"_BarCharStr; // { dg-error "unable to find string > literal operator|Possible missing length argument" } > > -unsigned long long iULL = operator"" _BarULL(666ULL); // { dg-error > "27:'operator\"\"_BarULL' was not declared in this scope" } > +unsigned long long iULL = operator ""_BarULL(666ULL); // { dg-error > "27:'operator\"\"_BarULL' was not declared in this scope" } > unsigned long long jULL = 666_BarULL; // { dg-error "unable to find numeric > literal operator" } > > -long double iLD = operator"" _BarLD(666.0L); // { dg-error > "19:'operator\"\"_BarLD' was not declared in this scope" } > +long double iLD = operator ""_BarLD(666.0L); // { dg-error > "19:'operator\"\"_BarLD' was not declared in this scope" } > long double jLD = 666.0_BarLD; // { dg-error "unable to find numeric > literal operator" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C > index 27f7c990a12..ddadef48a92 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C > @@ -6,10 +6,10 @@ > #include <cstdint> > #include <cassert> > > -int operator"" _embedchar(char) > +int operator ""_embedchar(char) > { return 41; } > > -int operator"" _embedstr(const char*, std::size_t len) > +int operator ""_embedstr(const char*, std::size_t len) > { return 42 + len; } > > void > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-1.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-1.C > index e9373e563d9..29a5e92938f 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-1.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-1.C > @@ -1,5 +1,5 @@ > // { dg-do run { target c++11 } } > -// { dg-additional-options "-Wno-error=normalized" } > +// { dg-additional-options "-Wno-error=normalized > -Wno-deprecated-literal-operator" } > // { dg-require-effective-target ucn } > // { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } > > @@ -7,7 +7,7 @@ > #include <cstddef> > using namespace std; > > -constexpr unsigned long long operator "" _π (unsigned long long x) > +constexpr unsigned long long operator ""_π (unsigned long long x) > { > return 3 * x; > } > @@ -25,7 +25,7 @@ char x2[2_Π2]; > static_assert (sizeof x1 == 3, "test1"); > static_assert (sizeof x2 == 8, "test2"); > > -const char * operator "" _1σ (const char *s, size_t) > +const char * operator ""_1σ (const char *s, size_t) > { > return s + 1; > } > @@ -35,7 +35,7 @@ const char * operator ""_Σ2 (const char *s, size_t) > return s + 2; > } > > -const char * operator "" _\U000000e61 (const char *s, size_t) > +const char * operator ""_\U000000e61 (const char *s, size_t) > { > return "ae"; > } > @@ -45,7 +45,7 @@ const char* operator ""_\u01532 (const char *s, size_t) > return "oe"; > } > > -bool operator "" _\u0BC7\u0BBE (unsigned long long); // { dg-warning "not in > NFC" } > +bool operator ""_\u0BC7\u0BBE (unsigned long long); // { dg-warning "not in > NFC" } > bool operator ""_\u0B47\U00000B3E (unsigned long long); // { dg-warning "not > in NFC" } > > #define xτy > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-3.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-3.C > index cb8a957947a..e3d92857b3b 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-3.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-3.C > @@ -14,4 +14,5 @@ const char *x = "hbar"_ħ; // { dg-bogus "poisoned" } > syntax has been deprecated for C++23. */ > #pragma GCC poison _ħ2 > const char * operator "" _ħ2 (const char *, size_t); // { dg-bogus > "poisoned" "" { xfail *-*-*} } > +// { dg-warning "space" "" { target c++23 } .-1 } > const char *x2 = "hbar2"_ħ2; // { dg-bogus "poisoned" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C > index 7a38e12dcd0..a0eed21f24f 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C > @@ -2,6 +2,6 @@ > > extern "C" { // { dg-message "1: 'extern .C.' linkage started here" } > > -constexpr double operator"" _deg ( double degrees ); // { dg-error > "18:literal operator with C linkage" } > +constexpr double operator ""_deg ( double degrees ); // { dg-error > "18:literal operator with C linkage" } > > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-friend.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-friend.C > index 54d7b7a1f11..235dfc9b25d 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-friend.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-friend.C > @@ -1,28 +1,28 @@ > // { dg-do compile { target c++11 } } > > long double > -operator"" _Hertz(long double); > +operator ""_Hertz(long double); > > class Foo > { > public: > Foo() { } > > - friend Foo operator"" _Bar(char); > + friend Foo operator ""_Bar(char); > > friend long double > - operator"" _Hertz(long double omega) > + operator ""_Hertz(long double omega) > { return omega / 6.28318530717958648; } > }; > > Foo > -operator"" _Bar(char) > +operator ""_Bar(char) > { return Foo(); } > > -Foo f1 = operator"" _Bar('x'); > +Foo f1 = operator ""_Bar('x'); > > Foo f2 = 'x'_Bar; > > -long double fm1 = operator"" _Hertz(552.92L); > +long double fm1 = operator ""_Hertz(552.92L); > > long double fm2 = 552.92_Hertz; > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C > index 28732d86212..7e5bfd0a275 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C > @@ -9,27 +9,27 @@ > #include <complex> > #include <cassert> > > -long double operator"" _v(long double); > -std::string operator"" _w(const char16_t*, size_t); > -unsigned operator"" _w(const char*); > +long double operator ""_v(long double); > +std::string operator ""_w(const char16_t*, size_t); > +unsigned operator ""_w(const char*); > > std::complex<double> > -operator"" _i(long double y) > +operator ""_i(long double y) > { return std::complex<double>(0.0L, y); } > > void > test1() > { > - long double x = operator"" _v(1.2L); > + long double x = operator ""_v(1.2L); > assert(x == 2.2L); > > - std::string s = operator"" _w(u"one", 3); > + std::string s = operator ""_w(u"one", 3); > assert(s == "boo"); > > - unsigned u = operator"" _w("Hello, World!"); > + unsigned u = operator ""_w("Hello, World!"); > assert(u == 13U); > > - std::complex<double> i = operator"" _i(2.0); > + std::complex<double> i = operator ""_i(2.0); > assert(i == std::complex<double>(0.0, 2.0)); > } > > @@ -40,13 +40,13 @@ main() > } > > long double > -operator"" _v(long double x) > +operator ""_v(long double x) > { return x + 1.0L; } > > std::string > -operator"" _w(const char16_t*, size_t) > +operator ""_w(const char16_t*, size_t) > { return std::string("boo"); } > > unsigned > -operator"" _w(const char* str) > +operator ""_w(const char* str) > { return strlen(str); } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C > index b917b5f6b90..a224c1094e5 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C > @@ -2,23 +2,23 @@ > > #include <cstdint> > > -int operator"" _bar (long double); > +int operator ""_bar (long double); > > -double operator"" _foo (long long unsigned); > +double operator ""_foo (long long unsigned); > > int i = 12_bar; // { dg-error "unable to find numeric literal > operator|with|argument" } > > double d = 1.2_foo; // { dg-error "unable to find numeric literal > operator|with|argument" } > > -int operator"" _char(char); > +int operator ""_char(char); > > -int operator"" _char8_t(char8_t); > +int operator ""_char8_t(char8_t); > > -int operator"" _wchar_t(wchar_t); > +int operator ""_wchar_t(wchar_t); > > -int operator"" _char16_t(char16_t); > +int operator ""_char16_t(char16_t); > > -int operator"" _char32_t(char32_t); > +int operator ""_char32_t(char32_t); > > int cwcx = 'c'_wchar_t; // { dg-error "unable to find character literal > operator|with|argument" } > int cc8 = 'c'_char8_t; // { dg-error "unable to find character literal > operator|with|argument" } > @@ -45,15 +45,15 @@ int c32c8 = U'c'_char8_t; // { dg-error "unable to find > character literal operat > int c32wc = U'c'_wchar_t; // { dg-error "unable to find character literal > operator|with|argument" } > int c32c16 = U'c'_char16_t; // { dg-error "unable to find character literal > operator|with|argument" } > > -int operator"" _char_str(const char*, std::size_t); > +int operator ""_char_str(const char*, std::size_t); > > -int operator"" _wchar_t_str(const wchar_t*, std::size_t); > +int operator ""_wchar_t_str(const wchar_t*, std::size_t); > > -int operator"" _char8_t_str(const char8_t*, std::size_t); > +int operator ""_char8_t_str(const char8_t*, std::size_t); > > -int operator"" _char16_t_str(const char16_t*, std::size_t); > +int operator ""_char16_t_str(const char16_t*, std::size_t); > > -int operator"" _char32_t_str(const char32_t*, std::size_t); > +int operator ""_char32_t_str(const char32_t*, std::size_t); > > int strwstr = "str"_wchar_t_str; // { dg-error "unable to find string > literal operator|with|arguments" } > int strstr8 = "str"_char8_t_str; // { dg-error "unable to find string > literal operator|with|arguments" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg.C > index ea6095d14e9..92eae54372b 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg.C > @@ -2,21 +2,21 @@ > > #include <cstdint> > > -int operator"" _bar (long double); > +int operator ""_bar (long double); > > -double operator"" _foo (long long unsigned); > +double operator ""_foo (long long unsigned); > > int i = 12_bar; // { dg-error "unable to find numeric literal > operator|with|argument" } > > double d = 1.2_foo; // { dg-error "unable to find numeric literal > operator|with|argument" } > > -int operator"" _char(char); > +int operator ""_char(char); > > -int operator"" _wchar_t(wchar_t); > +int operator ""_wchar_t(wchar_t); > > -int operator"" _char16_t(char16_t); > +int operator ""_char16_t(char16_t); > > -int operator"" _char32_t(char32_t); > +int operator ""_char32_t(char32_t); > > int cwcx = 'c'_wchar_t; // { dg-error "unable to find character literal > operator|with|argument" } > int cc16 = 'c'_char16_t; // { dg-error "unable to find character literal > operator|with|argument" } > @@ -34,13 +34,13 @@ int c32c = U'c'_char; // { dg-error "unable to find > character literal operator|w > int c32wc = U'c'_wchar_t; // { dg-error "unable to find character literal > operator|with|argument" } > int c32c16 = U'c'_char16_t; // { dg-error "unable to find character literal > operator|with|argument" } > > -int operator"" _char_str(const char*, std::size_t); > +int operator ""_char_str(const char*, std::size_t); > > -int operator"" _wchar_t_str(const wchar_t*, std::size_t); > +int operator ""_wchar_t_str(const wchar_t*, std::size_t); > > -int operator"" _char16_t_str(const char16_t*, std::size_t); > +int operator ""_char16_t_str(const char16_t*, std::size_t); > > -int operator"" _char32_t_str(const char32_t*, std::size_t); > +int operator ""_char32_t_str(const char32_t*, std::size_t); > > int strwstr = "str"_wchar_t_str; // { dg-error "unable to find string > literal operator|with|arguments" } > int strstr16 = "str"_char16_t_str; // { dg-error "unable to find string > literal operator|with|arguments" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-inline.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-inline.C > index fd8b9a05b38..4092d071bf2 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-inline.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-inline.C > @@ -3,20 +3,20 @@ > // Literal operators can be inline. > > inline int > -operator"" _thing1(char cc) > +operator ""_thing1(char cc) > { return 42 * cc; } > > -int operator"" _thing2(char cc); > +int operator ""_thing2(char cc); > > class Foo > { > int > - friend operator"" _thing2(char cc) > + friend operator ""_thing2(char cc) > { return 42 * cc; } > }; > > -int i = operator"" _thing1('x'); > +int i = operator ""_thing1('x'); > int j = 'x'_thing1; > > -int iF = operator"" _thing2('x'); > +int iF = operator ""_thing2('x'); > int jF = 'x'_thing2; > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C > index 8840dcdce28..94143a1a0cd 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C > @@ -2,7 +2,7 @@ > // { dg-do compile { target c++11 } } > // { dg-final { scan-assembler "_Zli2_wPKc" } } > > -int operator "" _w(const char*); > +int operator ""_w(const char*); > int main() { > 123_w; > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C > index f2eef0f52a2..4b69a27ff1d 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C > @@ -4,12 +4,12 @@ class Foo > { > public: > Foo() { } > - int operator"" _Bar(char32_t); // { dg-error "7:.int > Foo::operator\"\"_Bar\\(char32_t\\). must be a non-member function" } > + int operator ""_Bar(char32_t); // { dg-error "7:.int > Foo::operator\"\"_Bar\\(char32_t\\). must be a non-member function" } > }; > > -int i = operator"" _Bar(U'x'); // { dg-error "9:'operator\"\"_Bar' was not > declared in this scope" } > +int i = operator ""_Bar(U'x'); // { dg-error "9:'operator\"\"_Bar' was not > declared in this scope" } > int j = U'x'_Bar; // { dg-error "unable to find character literal operator" > } > > int > -Foo::operator"" _Bar(char32_t) // { dg-error "must be a non-member > function" } > +Foo::operator ""_Bar(char32_t) // { dg-error "must be a non-member > function" } > { return 42; } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C > index a2e4e414319..fcaa41a4da8 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C > @@ -9,23 +9,23 @@ > > namespace Long > { > - long double operator"" _LL(long double); > + long double operator ""_LL(long double); > } > > namespace Short > { > short > - operator"" _SS(long double x) > + operator ""_SS(long double x) > { return std::fmod(x, static_cast<long > double>(std::numeric_limits<short>::max())); } > } > > void > test1() > { > - long double x = Long::operator "" _LL(1.2L); > + long double x = Long::operator ""_LL(1.2L); > > using namespace Short; > - short s = operator"" _SS(1.2L); > + short s = operator ""_SS(1.2L); > short s2 = 1.2_SS; > } > > @@ -38,6 +38,6 @@ main() > namespace Long > { > long double > - operator"" _LL(long double x) > + operator ""_LL(long double x) > { return x + 2.0L; } > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C > index 861a77ce7bf..ae32d11dd95 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C > @@ -3,7 +3,7 @@ > // Test user-defined literals. > // Test error on non-function declaration. > > -double operator"" _baddecl; // { dg-error "8:declaration of > .operator\"\"_baddecl. as non-function" } > +double operator ""_baddecl; // { dg-error "8:declaration of > .operator\"\"_baddecl. as non-function" } > > template<char...> > - int operator"" _badtmpldecl; // { dg-error "7:declaration of > .operator\"\"_badtmpldecl. as non-function" } > + int operator ""_badtmpldecl; // { dg-error "7:declaration of > .operator\"\"_badtmpldecl. as non-function" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-nonempty-str-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-nonempty-str-neg.C > index ddaa1aa6c3e..06f5642ceaf 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-nonempty-str-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-nonempty-str-neg.C > @@ -3,4 +3,4 @@ > // Test user-defined literals. > // Test error on non-empty string after 'operator' keyword. > > -double operator"hi" _badword(long double); // { dg-error "expected empty > string after" } > +double operator "hi"_badword(long double); // { dg-error "expected empty > string after" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-nosuffix-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-nosuffix-neg.C > index 790726fb71d..e89b9f5a689 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-nosuffix-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-nosuffix-neg.C > @@ -1,5 +1,5 @@ > // { dg-do compile { target c++11 } } > > char32_t > -operator"" (char32_t C) // { dg-error "expected suffix identifier" } > +operator ""(char32_t C) // { dg-error "expected suffix identifier" } > { return C; } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-nounder-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-nounder-neg.C > index 9120ae45dfa..21d6c475ef8 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-nounder-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-nounder-neg.C > @@ -3,7 +3,7 @@ > // Test user-defined literals. > // Test warning on declaration without leading underscore. > > -long double operator"" nounder(long double); // { dg-warning "literal > operator suffixes not preceded by|are reserved for future standardization" } > +long double operator ""nounder(long double); // { dg-warning "literal > operator suffixes not preceded by|are reserved for future standardization" } > > template<char...> > - int operator"" nounder(); // { dg-warning "literal operator suffixes not > preceded by|are reserved for future standardization" } > + int operator ""nounder(); // { dg-warning "literal operator suffixes not > preceded by|are reserved for future standardization" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-operator-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-operator-neg.C > index d71f4a240e8..49761ca1631 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-operator-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-operator-neg.C > @@ -3,40 +3,40 @@ > // Can't have *both* literal operator template and raw literal operator. > > int > -operator"" _abc(const char*) > +operator ""_abc(const char*) > { > return 42; > } > > template<char...> > int > - operator"" _abc() // { dg-error "literal operator template|conflicts with > raw literal operator" } > + operator ""_abc() // { dg-error "literal operator template|conflicts with > raw literal operator" } > { > return 13; > } > > template<char...> > int > - operator"" _def() > + operator ""_def() > { > return 12; > } > > int > -operator"" _def(const char*) // { dg-error "raw literal operator|conflicts > with literal operator template" } > +operator ""_def(const char*) // { dg-error "raw literal operator|conflicts > with literal operator template" } > { > return 43; > } > > int > -operator"" _ghi(long double) > +operator ""_ghi(long double) > { > return 42; > } > > template<char...> > int > - operator"" _ghi() // OK > + operator ""_ghi() // OK > { > return 13; > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-overflow-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-overflow-neg.C > index d7e5e4b1f99..93ed5379243 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-overflow-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-overflow-neg.C > @@ -2,11 +2,11 @@ > // { dg-options "-Woverflow" } > // PR c++/52654 > int > -operator"" _w(unsigned long long) > +operator ""_w(unsigned long long) > { return 0; } > > int > -operator"" _w(long double) > +operator ""_w(long double) > { return 0.0L; } > > int i = 12345678901234567890123456789012345678901234567890_w; > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-overflow.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-overflow.C > index 1b9888b7159..be4dddbb632 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-overflow.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-overflow.C > @@ -2,12 +2,12 @@ > // PR c++/52654 > > int > -operator"" _w(const char*) > +operator ""_w(const char*) > { return 0; } > > template<char...> > int > - operator"" _tw() > + operator ""_tw() > { return 0; } > > int i = 12345678901234567890123456789012345678901234567890_w; > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-preproc-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-preproc-neg.C > index 64b6f8266bf..0ae90d9aaa1 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-preproc-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-preproc-neg.C > @@ -1,7 +1,7 @@ > // { dg-do compile { target c++11 } } > > int > -operator"" _badpreproc(const char *str) > +operator ""_badpreproc(const char *str) > { return 0; } > > #if 123_badpreproc // { dg-error "user-defined literal in preprocessor > expression" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-length.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-length.C > index 8969c96d8c1..73548409580 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-length.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-length.C > @@ -16,7 +16,7 @@ cstrlen(const char* s) > } > > constexpr size_type > -operator "" _lenraw(const char* digits) > +operator ""_lenraw(const char* digits) > { > return cstrlen(digits); > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op-string-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op-string-neg.C > index be68333f509..76a0e556554 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op-string-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op-string-neg.C > @@ -2,7 +2,7 @@ > > // Make sure handing a string to a raw literal generates a sensible error > message. > > -int operator"" _embedraw(const char*) > +int operator ""_embedraw(const char*) > { return 41; } > > int k = "Boo!"_embedraw; // { dg-error "unable to find string literal > operator" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C > index 9f57ac56596..d49e42642c9 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C > @@ -5,7 +5,7 @@ > #include <cstring> > > int > -operator"" _raw_umber(const char * str) > +operator ""_raw_umber(const char * str) > { > return strlen(str); > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C > index 1991de1150f..7e43a22345f 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C > @@ -3,7 +3,7 @@ > > #include <string> > > -std::string operator"" _i18n(const char*, std::size_t); > +std::string operator ""_i18n(const char*, std::size_t); > > std::string vogon_poem = R"V0G0N( > O freddled gruntbuggly thy micturations are to me > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C > index 5a264c24833..25d94c18845 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C > @@ -4,21 +4,21 @@ > #include <cstdint> > #include <cassert> > > -int operator"" _foo(const char*) { return 0; } > -int operator"" _foo(unsigned long long int) { return 1; } > -int operator"" _foo(long double) { return 2; } > -int operator"" _foo(char) { return 3; } > -int operator"" _foo(wchar_t) { return 4; } > -int operator"" _foo(char8_t) { return 5; } > -int operator"" _foo(char16_t) { return 6; } > -int operator"" _foo(char32_t) { return 7; } > -int operator"" _foo(const char*, std::size_t) { return 8; } > -int operator"" _foo(const wchar_t*, std::size_t) { return 9; } > -int operator"" _foo(const char8_t*, std::size_t) { return 10; } > -int operator"" _foo(const char16_t*, std::size_t) { return 11; } > -int operator"" _foo(const char32_t*, std::size_t) { return 12; } > -template<char...> int operator"" _foo2() { return 20; } > -int operator"" _foo2(unsigned long long int) { return 21; } > +int operator ""_foo(const char*) { return 0; } > +int operator ""_foo(unsigned long long int) { return 1; } > +int operator ""_foo(long double) { return 2; } > +int operator ""_foo(char) { return 3; } > +int operator ""_foo(wchar_t) { return 4; } > +int operator ""_foo(char8_t) { return 5; } > +int operator ""_foo(char16_t) { return 6; } > +int operator ""_foo(char32_t) { return 7; } > +int operator ""_foo(const char*, std::size_t) { return 8; } > +int operator ""_foo(const wchar_t*, std::size_t) { return 9; } > +int operator ""_foo(const char8_t*, std::size_t) { return 10; } > +int operator ""_foo(const char16_t*, std::size_t) { return 11; } > +int operator ""_foo(const char32_t*, std::size_t) { return 12; } > +template<char...> int operator ""_foo2() { return 20; } > +int operator ""_foo2(unsigned long long int) { return 21; } > > int > main() > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C > index c311cfb8db7..5496d5b583c 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C > @@ -4,19 +4,19 @@ > #include <cstdint> > #include <cassert> > > -int operator"" _foo(const char*) { return 0; } > -int operator"" _foo(unsigned long long int) { return 1; } > -int operator"" _foo(long double) { return 2; } > -int operator"" _foo(char) { return 3; } > -int operator"" _foo(wchar_t) { return 4; } > -int operator"" _foo(char16_t) { return 5; } > -int operator"" _foo(char32_t) { return 6; } > -int operator"" _foo(const char*, std::size_t) { return 7; } > -int operator"" _foo(const wchar_t*, std::size_t) { return 8; } > -int operator"" _foo(const char16_t*, std::size_t) { return 9; } > -int operator"" _foo(const char32_t*, std::size_t) { return 10; } > -template<char...> int operator"" _foo2() { return 20; } > -int operator"" _foo2(unsigned long long int) { return 21; } > +int operator ""_foo(const char*) { return 0; } > +int operator ""_foo(unsigned long long int) { return 1; } > +int operator ""_foo(long double) { return 2; } > +int operator ""_foo(char) { return 3; } > +int operator ""_foo(wchar_t) { return 4; } > +int operator ""_foo(char16_t) { return 5; } > +int operator ""_foo(char32_t) { return 6; } > +int operator ""_foo(const char*, std::size_t) { return 7; } > +int operator ""_foo(const wchar_t*, std::size_t) { return 8; } > +int operator ""_foo(const char16_t*, std::size_t) { return 9; } > +int operator ""_foo(const char32_t*, std::size_t) { return 10; } > +template<char...> int operator ""_foo2() { return 20; } > +int operator ""_foo2(unsigned long long int) { return 21; } > > int > main() > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C > index a30ec0f4f7e..802d1224bed 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C > @@ -2,43 +2,43 @@ > > // Test that the standard suffixes shadow any user-defined suffixes of the > same name. > long double > -operator"" L(long double x) // { dg-warning "floating-point suffix|shadowed > by implementation" } > +operator ""L(long double x) // { dg-warning "floating-point suffix|shadowed > by implementation" } > { return x; } > > unsigned long long int > -operator"" ULL(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""ULL(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > long double > -operator"" l(long double x) // { dg-warning "floating-point suffix|shadowed > by implementation" } > +operator ""l(long double x) // { dg-warning "floating-point suffix|shadowed > by implementation" } > { return x; } > > unsigned long long int > -operator"" ull(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""ull(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" uz(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""uz(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" zu(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""zu(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" Z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""Z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" UZ(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""UZ(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" ZU(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""ZU(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > // Namespaces are no hiding place. > @@ -46,43 +46,43 @@ namespace Long > { > > long double > -operator"" L(long double x) // { dg-warning "integer suffix|shadowed by > implementation" } > +operator ""L(long double x) // { dg-warning "integer suffix|shadowed by > implementation" } > { return x; } > > unsigned long long int > -operator"" ULL(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""ULL(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > long double > -operator"" l(long double x) // { dg-warning "integer suffix|shadowed by > implementation" } > +operator ""l(long double x) // { dg-warning "integer suffix|shadowed by > implementation" } > { return x; } > > unsigned long long int > -operator"" ull(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""ull(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" uz(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""uz(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" zu(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""zu(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" Z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""Z(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" UZ(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""UZ(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > unsigned long long int > -operator"" ZU(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > +operator ""ZU(unsigned long long int k) // { dg-warning "integer > suffix|shadowed by implementation" } > { return k; } > > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C > index c76b0af9a28..34e3d3f4021 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C > @@ -4,33 +4,33 @@ > typedef decltype(sizeof(0)) size_type; > > constexpr size_type > -operator"" _len(const char*, size_type len) > +operator ""_len(const char*, size_type len) > { > return len; > } > > #if __cpp_char8_t > constexpr size_type > -operator"" _len(const char8_t*, size_type len) > +operator ""_len(const char8_t*, size_type len) > { > return len; > } > #endif > > constexpr size_type > -operator"" _len(const wchar_t*, size_type len) > +operator ""_len(const wchar_t*, size_type len) > { > return len; > } > > constexpr size_type > -operator"" _len(const char16_t*, size_type len) > +operator ""_len(const char16_t*, size_type len) > { > return len; > } > > constexpr size_type > -operator"" _len(const char32_t*, size_type len) > +operator ""_len(const char32_t*, size_type len) > { > return len; > } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C > index 8f3cc87825a..f6b74fe45ea 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C > @@ -3,4 +3,4 @@ > > #include <string> > > -std::string operator"" 5X(const char*, std::size_t); // { dg-error > "expected suffix identifier" } > +std::string operator ""5X(const char*, std::size_t); // { dg-error > "expected suffix identifier" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C > index b5306b9962f..b740ca7c1e2 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C > @@ -7,32 +7,32 @@ > #include <cassert> > > template<char...> > - int operator"" _abc(); > + int operator ""_abc(); > > template<> > int > - operator"" _abc<>() > + operator ""_abc<>() > { return -1; } > > template<> > int > - operator"" _abc<'L','U','E'>() > + operator ""_abc<'L','U','E'>() > { return 42; } > > template<> > int > - operator"" _abc<'6','6','6'>() > + operator ""_abc<'6','6','6'>() > { return 21; } > > void > test1() > { > - int i = operator"" _abc<'1','2','3'>(); > + int i = operator ""_abc<'1','2','3'>(); > assert(i == 45); > - int universal_meaning = operator"" _abc<'L','U','E'>(); > + int universal_meaning = operator ""_abc<'L','U','E'>(); > assert(universal_meaning == 42); > - int b = operator"" _abc<'6','6','6'>(); > - int z = operator"" _abc<>(); > + int b = operator ""_abc<'6','6','6'>(); > + int z = operator ""_abc<>(); > assert(z == -1); > int j = 123_abc; > assert(j == i); > @@ -47,5 +47,5 @@ main() > } > > template<char... Chars> > - int operator"" _abc() > + int operator ""_abc() > { return 42 + sizeof...(Chars); } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C > index 678a53e3f4f..fa6ec4889ef 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C > @@ -1,4 +1,4 @@ > // { dg-do compile { target c++11 } } > > template<char...> > - int operator"" _xyz(unsigned long long); // { dg-error "has invalid > argument list" } > + int operator ""_xyz(unsigned long long); // { dg-error "has invalid > argument list" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C > index f2db95d3ead..2aae8a1667b 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C > @@ -2,6 +2,6 @@ > // { dg-do compile { target c++11 } } > > template <T, T... U> // { dg-error "'T' has not been declared" } > -int operator"" _foo (); // { dg-error "5:literal operator > template .int operator\"\"_foo\\(\\). has invalid parameter list" } > +int operator ""_foo (); // { dg-error "5:literal operator > template .int operator\"\"_foo\\(\\). has invalid parameter list" } > template <T... U> // { dg-error "'T' has not been declared" } > -int operator"" _bar (); // { dg-error "5:literal operator > template .int operator\"\"_bar\\(\\). has invalid parameter list" } > +int operator ""_bar (); // { dg-error "5:literal operator > template .int operator\"\"_bar\\(\\). has invalid parameter list" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C > index cec79a5ffb4..04752d4a96c 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C > @@ -1,4 +1,4 @@ > // { dg-do compile { target c++11 } } > > template<char...> > - int operator"" _abc(); > + int operator ""_abc(); > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C > index 167d871a005..33486fa7d60 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C > @@ -3,10 +3,10 @@ > class Foo { }; > > template<wchar_t...> > - Foo operator"" _Foo(); // { dg-error "7:literal operator template .Foo > operator\"\"_Foo\\(\\). has invalid parameter list" } > + Foo operator ""_Foo(); // { dg-error "7:literal operator template .Foo > operator\"\"_Foo\\(\\). has invalid parameter list" } > > template<char> > - Foo operator"" _Bar(); // { dg-error "7:literal operator template .Foo > operator\"\"_Bar\\(\\). has invalid parameter list" } > + Foo operator ""_Bar(); // { dg-error "7:literal operator template .Foo > operator\"\"_Bar\\(\\). has invalid parameter list" } > > template<typename... Type> > - Foo operator"" _Bar(); // { dg-error "7:literal operator template .Foo > operator\"\"_Bar\\(\\). has invalid parameter list" } > + Foo operator ""_Bar(); // { dg-error "7:literal operator template .Foo > operator\"\"_Bar\\(\\). has invalid parameter list" } > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms.C > b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms.C > index bc7eaf66fb9..c0b9a23f300 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms.C > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms.C > @@ -3,4 +3,4 @@ > class Foo { }; > > template<char...> > - Foo operator"" _Foo(); > + Foo operator ""_Foo(); > diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C > b/gcc/testsuite/g++.dg/cpp1y/pr57640.C > index 6a79ea239d6..f6400408047 100644 > --- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C > +++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C > @@ -5,4 +5,4 @@ > > using namespace std::literals::chrono_literals; > > -auto blooper = operator"" min(45.0L); > +auto blooper = operator ""min(45.0L); > diff --git a/gcc/testsuite/g++.dg/cpp1y/pr88872.C > b/gcc/testsuite/g++.dg/cpp1y/pr88872.C > index 3719e395c0e..be856098418 100644 > --- a/gcc/testsuite/g++.dg/cpp1y/pr88872.C > +++ b/gcc/testsuite/g++.dg/cpp1y/pr88872.C > @@ -6,7 +6,7 @@ struct a { > int c; > }; > void d(); > -template <char...> constexpr a operator"" _n() { return d; } > +template <char...> constexpr a operator ""_n() { return d; } > struct e; > struct f { > e operator[](int); > diff --git a/gcc/testsuite/g++.dg/cpp26/unevalstr1.C > b/gcc/testsuite/g++.dg/cpp26/unevalstr1.C > index 3220cf04937..5317d696de8 100644 > --- a/gcc/testsuite/g++.dg/cpp26/unevalstr1.C > +++ b/gcc/testsuite/g++.dg/cpp26/unevalstr1.C > @@ -83,21 +83,21 @@ extern "\o{0103}" { int f14 (); } // { dg-error > "numeric escape sequence in unev > [[nodiscard ("\x{20}")]] int h19 (); // { dg-error "numeric escape > sequence in unevaluated string" } > [[nodiscard ("\h")]] int h20 (); // { dg-error "unknown escape > sequence" } > > -float operator "" _my0 (const char *); > -float operator "" "" _my1 (const char *); > -float operator L"" _my2 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator u"" _my3 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator U"" _my4 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator u8"" _my5 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator L"" "" _my6 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator u"" "" _my7 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator U"" "" _my8 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator u8"" "" _my9 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator "" L"" _my10 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator "" u"" _my11 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator "" U"" _my12 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator "" u8"" _my13 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > -float operator "\0" _my14 (const char *); // { dg-error "expected empty > string after 'operator' keyword" } > -float operator "\x00" _my15 (const char *); // { dg-error "expected empty > string after 'operator' keyword" } > -float operator "\h" _my16 (const char *); // { dg-error "expected empty > string after 'operator' keyword" } > +float operator ""_my0 (const char *); > +float operator "" ""_my1 (const char *); > +float operator L""_my2 (const char *); // { dg-error "invalid encoding > prefix in literal operator" } > +float operator u""_my3 (const char *); // { dg-error "invalid encoding > prefix in literal operator" } > +float operator U""_my4 (const char *); // { dg-error "invalid encoding > prefix in literal operator" } > +float operator u8""_my5 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator L"" ""_my6 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator u"" ""_my7 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator U"" ""_my8 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator u8"" ""_my9 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator "" L""_my10 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator "" u""_my11 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator "" U""_my12 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator "" u8""_my13 (const char *); // { dg-error "invalid > encoding prefix in literal operator" } > +float operator "\0"_my14 (const char *); // { dg-error "expected empty > string after 'operator' keyword" } > +float operator "\x00"_my15 (const char *); // { dg-error "expected empty > string after 'operator' keyword" } > +float operator "\h"_my16 (const char *); // { dg-error "expected empty > string after 'operator' keyword" } > // { dg-error "unknown escape > sequence" "" { target *-*-* } .-1 } > diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C > b/gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C > index 5c5ca2c2381..0926d41d12e 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C > +++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C > @@ -3,7 +3,7 @@ > > namespace N > { > - int operator"" _X(auto) {} // { dg-error "auto|invalid" } > + int operator ""_X(auto) {} // { dg-error "auto|invalid" } > } > > namespace N {} > diff --git a/gcc/testsuite/g++.dg/cpp2a/consteval-prop21.C > b/gcc/testsuite/g++.dg/cpp2a/consteval-prop21.C > index 36da1bd91f3..b081e3688a2 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/consteval-prop21.C > +++ b/gcc/testsuite/g++.dg/cpp2a/consteval-prop21.C > @@ -11,7 +11,7 @@ __uint128_t > #else > unsigned long long > #endif > -operator"" _c(const char*) { return 0; } > +operator ""_c(const char*) { return 0; } > constexpr char e() { > long f = true ? 0 : b(long(1)); > return b(f); > diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-class6.C > b/gcc/testsuite/g++.dg/cpp2a/nontype-class6.C > index 377a151d343..af632be0055 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/nontype-class6.C > +++ b/gcc/testsuite/g++.dg/cpp2a/nontype-class6.C > @@ -11,7 +11,7 @@ struct A { > // auto operator<=> (const A&) = default; > }; > > -template <A a> constexpr A operator "" _sh() { return a; } > +template <A a> constexpr A operator ""_sh() { return a; } > > constexpr auto a = "foo"_sh; > static_assert (a.ar[0] == 'f'); > diff --git a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C > b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C > index b91e01ce0b3..6066255aaf8 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C > +++ b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C > @@ -16,7 +16,7 @@ struct fixed_string { > // Missing deduction guide. > > template <fixed_string fs> > -constexpr std::size_t operator"" _udl() { > +constexpr std::size_t operator ""_udl() { > return decltype(fs)::length; > } > > diff --git a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C > b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C > index 067fdbac81e..8c36d700d93 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C > +++ b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C > @@ -17,4 +17,4 @@ template <typename CharT, std::size_t N> > fixed_string(const CharT (&str)[N]) -> fixed_string<CharT, N>; > > template <fixed_string...> > -int operator"" _udl(); // { dg-error "5:literal operator template .int > operator\"\"_udl\\(\\). has invalid parameter list" } > +int operator ""_udl(); // { dg-error "5:literal operator template .int > operator\"\"_udl\\(\\). has invalid parameter list" } > diff --git a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C > b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C > index e9421bc4072..cea52ba7bae 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C > +++ b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C > @@ -17,7 +17,7 @@ template <typename CharT, std::size_t N> > fixed_string(const CharT (&str)[N]) -> fixed_string<CharT, N>; > > template <fixed_string fs> > -constexpr std::size_t operator"" _udl() { > +constexpr std::size_t operator ""_udl() { > return decltype(fs)::length; > } > > diff --git a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C > b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C > index 85b3fe7fc61..d45527a211d 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C > +++ b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C > @@ -9,4 +9,4 @@ struct literal_class { > }; > > template <literal_class...> > -int operator"" _udl(); // { dg-error "5:literal operator template .int > operator\"\"_udl\\(\\). has invalid parameter list" } > +int operator ""_udl(); // { dg-error "5:literal operator template .int > operator\"\"_udl\\(\\). has invalid parameter list" } > diff --git a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C > b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C > index ab7c012f5f4..872829fcbd8 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C > +++ b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C > @@ -10,4 +10,4 @@ struct non_literal_class { > }; > > template <non_literal_class> // { dg-error "11:is not a valid type for a > template non-type parameter because it is not structural" "" { target { ! > implicit_constexpr } } } > -int operator"" _udl(); // { dg-error "5:literal operator template .int > operator\"\"_udl\\(\\). has invalid parameter list" "" { target { ! > implicit_constexpr } } } > +int operator ""_udl(); // { dg-error "5:literal operator template .int > operator\"\"_udl\\(\\). has invalid parameter list" "" { target { ! > implicit_constexpr } } } > diff --git a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C > b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C > index b7ef79d68a0..b753d7dcc09 100644 > --- a/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C > +++ b/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C > @@ -9,7 +9,7 @@ struct literal_class { > }; > > template <literal_class> > -constexpr int operator"" _udl() { > +constexpr int operator ""_udl() { > return 1; > } > > diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C > b/gcc/testsuite/g++.dg/ext/is_convertible2.C > index 3dd90bdafb9..1e8425571f0 100644 > --- a/gcc/testsuite/g++.dg/ext/is_convertible2.C > +++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C > @@ -23,7 +23,7 @@ int main() > SA(!__is_convertible(B*, C*)); > SA(__is_convertible(A, E)); > > - using std::operator "" s, std::operator "" sv; > + using std::operator ""s, std::operator ""sv; > > auto stringify = []<typename T>(T x) { > if constexpr (std::is_convertible_v<T, std::string> or > diff --git a/gcc/testsuite/g++.dg/lookup/pr87269.C > b/gcc/testsuite/g++.dg/lookup/pr87269.C > index 0c87ee5aef5..253bad1a14b 100644 > --- a/gcc/testsuite/g++.dg/lookup/pr87269.C > +++ b/gcc/testsuite/g++.dg/lookup/pr87269.C > @@ -6,10 +6,10 @@ namespace std { > } > > namespace { > - void operator"" _a (const char *, std::size_t) {} > + void operator ""_a (const char *, std::size_t) {} > } > > -void operator"" _a (unsigned long long); > +void operator ""_a (unsigned long long); > > template <typename> void f () { ""_a; } > > diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls > index 4cd9a75b950..b77575bc896 100644 > --- a/gcc/c-family/c.opt.urls > +++ b/gcc/c-family/c.opt.urls > @@ -301,6 +301,9 @@ > UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conve > Wdeprecated-enum-float-conversion > > UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion) > > +Wdeprecated-literal-operator > +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-literal-operator) > + > Wdesignated-init > UrlSuffix(gcc/Warning-Options.html#index-Wdesignated-init) > > diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit_system_header > b/gcc/testsuite/g++.dg/cpp0x/udlit_system_header > index d541f24f62a..7bb54df8f89 100644 > --- a/gcc/testsuite/g++.dg/cpp0x/udlit_system_header > +++ b/gcc/testsuite/g++.dg/cpp0x/udlit_system_header > @@ -2,5 +2,5 @@ > #pragma GCC system_header > > char > -operator"" stdsuffix(char __c) > +operator ""stdsuffix(char __c) > { return __c/2; } > > base-commit: 5b08ae503dd4aef2789a667daaf1984e7cc94aaa > -- > 2.46.2 >