diff options
author | Mukesh Kapoor <mukesh.kapoor@oracle.com> | 2017-11-06 10:33:41 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2017-11-06 10:33:41 +0000 |
commit | 7d19c460ed95b5e0988f1ba37ce614ddd8d27aa8 (patch) | |
tree | 4ef2defce67d2862f4fcf5611615d618f5d1f6ec /gcc | |
parent | 16f681db1100e78ff9a0cb04fc8fd18719c92839 (diff) | |
download | gcc-7d19c460ed95b5e0988f1ba37ce614ddd8d27aa8.zip gcc-7d19c460ed95b5e0988f1ba37ce614ddd8d27aa8.tar.gz gcc-7d19c460ed95b5e0988f1ba37ce614ddd8d27aa8.tar.bz2 |
re PR c++/80955 (Macros expanded in definition of user-defined literals)
/libcpp
2017-11-06 Mukesh Kapoor <mukesh.kapoor@oracle.com>
PR c++/80955
* lex.c (lex_string): When checking for a valid macro for the
warning related to -Wliteral-suffix (CPP_W_LITERAL_SUFFIX),
check that the macro name does not start with an underscore
before calling is_macro().
/gcc/testsuite
2017-11-06 Mukesh Kapoor <mukesh.kapoor@oracle.com>
PR c++/80955
* g++.dg/cpp0x/udlit-macros.C: New.
From-SVN: r254443
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/udlit-macros.C | 31 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8232b4a..b56ace4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-11-06 Mukesh Kapoor <mukesh.kapoor@oracle.com> + + PR c++/80955 + * g++.dg/cpp0x/udlit-macros.C: New. + 2017-11-06 Paul Thomas <pault@gcc.gnu.org> PR fortran/69739 diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-macros.C b/gcc/testsuite/g++.dg/cpp0x/udlit-macros.C new file mode 100644 index 0000000..fb51828 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/udlit-macros.C @@ -0,0 +1,31 @@ +// PR c++/80955 +// { dg-do run { target c++11 } } + +extern "C" int sprintf (char *s, const char *format, ...); +extern "C" int strcmp (const char *s1, const char *s2); + +#define __PRI64_PREFIX "l" +#define PRId64 __PRI64_PREFIX "d" + +using size_t = decltype(sizeof(0)); +#define _zero +#define _ID _xx +int operator""_zero(const char*, size_t) { return 0; } +int operator""_ID(const char*, size_t) { return 0; } + +int main() +{ + long i64 = 123; + char buf[100]; + sprintf(buf, "%"PRId64"abc", i64); // { dg-warning "invalid suffix on literal" } + return strcmp(buf, "123abc") + + ""_zero + + "bob"_zero + + R"#(raw + string)#"_zero + + "xx"_ID + + ""_ID + + R"AA(another + raw + string)AA"_ID; +} |