xref: /llvm-project/clang/test/CoverageMapping/macro-stringize-twice.cpp (revision 9caa3fbe03f43e3eec30262fbba87c1ee15c05a3)
1 // RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -triple %itanium_abi_triple -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s
2 
3 // PR39942
4 
5 class a;
6 template <class b> a &operator<<(b &, const char *);
7 int c;
8 #define d(l) l(__FILE__, __LINE__, c)
9 #define COMPACT_GOOGLE_LOG_ERROR d(e)
10 #define f(g, cond) cond ? (void)0 : h() & g
11 #define i(j) COMPACT_GOOGLE_LOG_##j.g()
12 #define k(j) f(i(j), 0)
13 class e {
14 public:
15   e(const char *, int, int);
16   a &g();
17 };
18 class h {
19 public:
20   void operator&(a &);
21 };
22 void use_str(const char *);
23 
24 #define m(func)                                                                \
25   use_str(#func);                                                              \
26   k(ERROR) << #func;                                                           \
27   return 0; // CHECK: File 1, [[@LINE-1]]:4 -> [[@LINE-1]]:16 = (#0 - #1)
main()28 int main() {
29   m(asdf);
30 }
31