summaryrefslogtreecommitdiffstats
path: root/clang/test/CoverageMapping/macro-stringize-twice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CoverageMapping/macro-stringize-twice.cpp')
-rw-r--r--clang/test/CoverageMapping/macro-stringize-twice.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/CoverageMapping/macro-stringize-twice.cpp b/clang/test/CoverageMapping/macro-stringize-twice.cpp
new file mode 100644
index 00000000000..7a91d910cfe
--- /dev/null
+++ b/clang/test/CoverageMapping/macro-stringize-twice.cpp
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 -triple %itanium_abi_triple -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s
+
+// PR39942
+
+class a;
+template <class b> a &operator<<(b &, const char *);
+int c;
+#define d(l) l(__FILE__, __LINE__, c)
+#define COMPACT_GOOGLE_LOG_ERROR d(e)
+#define f(g, cond) cond ? (void)0 : h() & g
+#define i(j) COMPACT_GOOGLE_LOG_##j.g()
+#define k(j) f(i(j), 0)
+class e {
+public:
+ e(const char *, int, int);
+ a &g();
+};
+class h {
+public:
+ void operator&(a &);
+};
+void use_str(const char *);
+
+#define m(func) \
+ use_str(#func); \
+ k(ERROR) << #func; \
+ return 0; // CHECK: File 1, [[@LINE-1]]:4 -> [[@LINE-1]]:16 = (#0 - #1)
+int main() {
+ m(asdf);
+}
OpenPOWER on IntegriCloud