llvm-project/clang/test/CoverageMapping/macro-stringize-twice.cpp
Reid Kleckner c0e275df3d Remove cache for macro arg stringization
Summary:
The cache recorded the wrong expansion location for all but the first
stringization. It seems uncommon to stringize the same macro argument
multiple times, so this cache doesn't seem that important.

Fixes PR39942

Reviewers: vsk, rsmith

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D65428

llvm-svn: 367337
2019-07-30 17:58:22 +00:00

31 lines
892 B
C++

// 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);
}