1*67e74705SXin Li // RUN: %clang_cc1 -triple thumbv7-windows -fms-compatibility -fsyntax-only %s -verify
2*67e74705SXin Li // expected-no-diagnostics
3*67e74705SXin Li
4*67e74705SXin Li extern "C" {
5*67e74705SXin Li typedef char * va_list;
6*67e74705SXin Li void __va_start(va_list *, ...);
7*67e74705SXin Li }
8*67e74705SXin Li
test___va_start(int i,...)9*67e74705SXin Li int test___va_start(int i, ...) {
10*67e74705SXin Li va_list ap;
11*67e74705SXin Li __va_start(&ap, ( &reinterpret_cast<const char &>(i) ),
12*67e74705SXin Li ( (sizeof(i) + 4 - 1) & ~(4 - 1) ),
13*67e74705SXin Li ( &reinterpret_cast<const char &>(i) ));
14*67e74705SXin Li return (*(int *)((ap += ( (sizeof(int) + 4 - 1) & ~(4 - 1) ) + ( ((va_list)0 - (ap)) & (__alignof(int) - 1) )) - ( (sizeof(int) + 4 - 1) & ~(4 - 1) )));
15*67e74705SXin Li }
16*67e74705SXin Li
builtin(int i,...)17*67e74705SXin Li int builtin(int i, ...) {
18*67e74705SXin Li __builtin_va_list ap;
19*67e74705SXin Li __builtin_va_start(ap, i);
20*67e74705SXin Li return __builtin_va_arg(ap, int);
21*67e74705SXin Li }
22*67e74705SXin Li
23