43 lines
595 B
C++
43 lines
595 B
C++
|
// RUN: %clang_cc1 -x c++-header -emit-pch %s -o %t
|
||
|
// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s
|
||
|
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
#ifndef HEADER_INCLUDED
|
||
|
#define HEADER_INCLUDED
|
||
|
|
||
|
static inline void foo(int &x, int y) {
|
||
|
// Capturing x and y
|
||
|
#pragma clang __debug captured
|
||
|
{
|
||
|
x += y;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
struct C {
|
||
|
int val;
|
||
|
|
||
|
explicit C(int v) : val(v) { }
|
||
|
|
||
|
void bar(int &x) {
|
||
|
// Capturing x and this
|
||
|
#pragma clang __debug captured
|
||
|
{
|
||
|
x += val;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#else
|
||
|
|
||
|
void test_foo(int &x) {
|
||
|
foo(x, 10);
|
||
|
}
|
||
|
|
||
|
void test_bar(int &x) {
|
||
|
C Obj(10);
|
||
|
Obj.bar(x);
|
||
|
}
|
||
|
|
||
|
#endif
|