2014-04-15 07:47:48 +08:00
|
|
|
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
|
2010-03-12 02:19:55 +08:00
|
|
|
|
|
|
|
// PR6433 - Don't crash on va_arg(typedef).
|
|
|
|
typedef double gdouble;
|
|
|
|
void focus_changed_cb () {
|
|
|
|
__builtin_va_list pa;
|
|
|
|
double mfloat;
|
|
|
|
mfloat = __builtin_va_arg((pa), gdouble);
|
|
|
|
}
|
|
|
|
|
2012-06-28 04:23:58 +08:00
|
|
|
void vararg(int, ...);
|
|
|
|
void function_as_vararg() {
|
|
|
|
// CHECK: define {{.*}}function_as_vararg
|
|
|
|
// CHECK-NOT: llvm.trap
|
|
|
|
vararg(0, focus_changed_cb);
|
|
|
|
}
|
2014-04-15 07:47:48 +08:00
|
|
|
|
|
|
|
void vla(int n, ...)
|
|
|
|
{
|
|
|
|
__builtin_va_list ap;
|
|
|
|
void *p;
|
|
|
|
p = __builtin_va_arg(ap, typeof (int (*)[++n])); // CHECK: add nsw i32 {{.*}}, 1
|
|
|
|
}
|