va_arg_x86_64.c revision a5728872c7702ddd09537c95bc3cbd20e1f2fb09
16cda3e604f2a2fa289cc9145719ba84461315e21Douglas Gregor// RUN: %clang_cc1 -fsyntax-only -verify -triple=x86_64-unknown-freebsd7.0 %s 2b65f2425e9847d30bae499323a2d5cc29808d0b5Douglas Gregor 3b65f2425e9847d30bae499323a2d5cc29808d0b5Douglas Gregor// PR2631 4b65f2425e9847d30bae499323a2d5cc29808d0b5Douglas Gregorchar* foo(char *fmt, __builtin_va_list ap) 5b65f2425e9847d30bae499323a2d5cc29808d0b5Douglas Gregor{ 6b65f2425e9847d30bae499323a2d5cc29808d0b5Douglas Gregor return __builtin_va_arg((ap), char *); 7b65f2425e9847d30bae499323a2d5cc29808d0b5Douglas Gregor} 85e5783180acb42c9d9b1be2838370ea5930a2a8bAnders Carlsson 95e5783180acb42c9d9b1be2838370ea5930a2a8bAnders Carlsson// PR2692 105e5783180acb42c9d9b1be2838370ea5930a2a8bAnders Carlssontypedef __builtin_va_list va_list; 115e5783180acb42c9d9b1be2838370ea5930a2a8bAnders Carlssonstatic void f (char * (*g) (char **, int), char **p, ...) { 12ea1471e0e967548c596a71469702f8846dbaf3c0John McCall char *s; 13ea1471e0e967548c596a71469702f8846dbaf3c0John McCall va_list v; 14ea1471e0e967548c596a71469702f8846dbaf3c0John McCall s = g (p, __builtin_va_arg(v, int)); 15ea1471e0e967548c596a71469702f8846dbaf3c0John McCall} 16ea1471e0e967548c596a71469702f8846dbaf3c0John McCall