1*67e74705SXin Li // RUN: %clang_cc1 -x c++-header -emit-pch %s -o %t 2*67e74705SXin Li // RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 3*67e74705SXin Li 4*67e74705SXin Li // expected-no-diagnostics 5*67e74705SXin Li 6*67e74705SXin Li #ifndef HEADER_INCLUDED 7*67e74705SXin Li #define HEADER_INCLUDED 8*67e74705SXin Li foo(int & x,int y)9*67e74705SXin Listatic inline void foo(int &x, int y) { 10*67e74705SXin Li // Capturing x and y 11*67e74705SXin Li #pragma clang __debug captured 12*67e74705SXin Li { 13*67e74705SXin Li x += y; 14*67e74705SXin Li } 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li struct C { 18*67e74705SXin Li int val; 19*67e74705SXin Li CC20*67e74705SXin Li explicit C(int v) : val(v) { } 21*67e74705SXin Li barC22*67e74705SXin Li void bar(int &x) { 23*67e74705SXin Li // Capturing x and this 24*67e74705SXin Li #pragma clang __debug captured 25*67e74705SXin Li { 26*67e74705SXin Li x += val; 27*67e74705SXin Li } 28*67e74705SXin Li } 29*67e74705SXin Li }; 30*67e74705SXin Li 31*67e74705SXin Li #else 32*67e74705SXin Li test_foo(int & x)33*67e74705SXin Livoid test_foo(int &x) { 34*67e74705SXin Li foo(x, 10); 35*67e74705SXin Li } 36*67e74705SXin Li test_bar(int & x)37*67e74705SXin Livoid test_bar(int &x) { 38*67e74705SXin Li C Obj(10); 39*67e74705SXin Li Obj.bar(x); 40*67e74705SXin Li } 41*67e74705SXin Li 42*67e74705SXin Li #endif 43