1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-error=non-pod-varargs 2*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-error=non-pod-varargs -std=c++98 3*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-error=non-pod-varargs -std=c++11 4*67e74705SXin Li 5*67e74705SXin Liextern char version[]; 6*67e74705SXin Li 7*67e74705SXin Li@protocol P; 8*67e74705SXin Li 9*67e74705SXin Liclass C { 10*67e74705SXin Lipublic: 11*67e74705SXin Li C(int); 12*67e74705SXin Li}; 13*67e74705SXin Li 14*67e74705SXin Li@interface D 15*67e74705SXin Li- (void)g:(int)a, ...; 16*67e74705SXin Li@end 17*67e74705SXin Li 18*67e74705SXin Livoid t1(D *d) 19*67e74705SXin Li{ 20*67e74705SXin Li C c(10); 21*67e74705SXin Li 22*67e74705SXin Li [d g:10, c]; 23*67e74705SXin Li#if __cplusplus <= 199711L // C++03 or earlier modes 24*67e74705SXin Li // expected-warning@-2{{cannot pass object of non-POD type 'C' through variadic method; call will abort at runtime}} 25*67e74705SXin Li#else 26*67e74705SXin Li // expected-no-diagnostics@-4 27*67e74705SXin Li#endif 28*67e74705SXin Li [d g:10, version]; 29*67e74705SXin Li} 30*67e74705SXin Li 31*67e74705SXin Livoid t2(D *d, id p) 32*67e74705SXin Li{ 33*67e74705SXin Li [d g:10, p]; 34*67e74705SXin Li} 35*67e74705SXin Li 36*67e74705SXin Livoid t3(D *d, id<P> p) 37*67e74705SXin Li{ 38*67e74705SXin Li [d g:10, p]; 39*67e74705SXin Li} 40