xref: /aosp_15_r20/external/clang/test/CodeGen/varargs.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // PR6433 - Don't crash on va_arg(typedef).
4*67e74705SXin Li typedef double gdouble;
focus_changed_cb()5*67e74705SXin Li void focus_changed_cb () {
6*67e74705SXin Li     __builtin_va_list pa;
7*67e74705SXin Li     double mfloat;
8*67e74705SXin Li     mfloat = __builtin_va_arg((pa), gdouble);
9*67e74705SXin Li }
10*67e74705SXin Li 
11*67e74705SXin Li void vararg(int, ...);
function_as_vararg()12*67e74705SXin Li void function_as_vararg() {
13*67e74705SXin Li   // CHECK: define {{.*}}function_as_vararg
14*67e74705SXin Li   // CHECK-NOT: llvm.trap
15*67e74705SXin Li   vararg(0, focus_changed_cb);
16*67e74705SXin Li }
17*67e74705SXin Li 
vla(int n,...)18*67e74705SXin Li void vla(int n, ...)
19*67e74705SXin Li {
20*67e74705SXin Li   __builtin_va_list ap;
21*67e74705SXin Li   void *p;
22*67e74705SXin Li   p = __builtin_va_arg(ap, typeof (int (*)[++n])); // CHECK: add nsw i32 {{.*}}, 1
23*67e74705SXin Li }
24