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