captured-stmt.cpp
595 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// 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