1 // PR c++/80955
2 // { dg-do run { target c++11 } }
3 
4 extern "C" int sprintf (char *s, const char *format, ...);
5 extern "C" int strcmp (const char *s1, const char *s2);
6 
7 #define __PRI64_PREFIX        "l"
8 #define PRId64         __PRI64_PREFIX "d"
9 
10 using size_t = decltype(sizeof(0));
11 #define _zero
12 #define _ID _xx
13 int operator""_zero(const char*, size_t) { return 0; }
14 int operator""_ID(const char*, size_t) { return 0; }
15 
main()16 int main()
17 {
18   long i64 = 123;
19   char buf[] = "xxxxxx"__FILE__;      // { dg-warning "invalid suffix on literal" }
20   sprintf(buf, "%"PRId64"abc", i64);  // { dg-warning "invalid suffix on literal" }
21   return strcmp(buf, "123abc")
22 	 + ""_zero
23 	 + "bob"_zero
24 	 + R"#(raw
25 	       string)#"_zero
26 	 + "xx"_ID
27 	 + ""_ID
28 	 + R"AA(another
29 		raw
30 		string)AA"_ID;
31 }
32