
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
31 lines
892 B
C++
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);
|
|
}
|