brintos

brintos / llvm-project-archived public Read only

0
0
Text · 947 B · 71ca88c Raw
35 lines · c
1// RUN: %clang_cc1 -triple i386-unknown-unknown -std=c2y -emit-llvm -o - %s | FileCheck %s2 3// PR6433 - Don't crash on va_arg(typedef).4typedef double gdouble;5void focus_changed_cb (void) {6    __builtin_va_list pa;7    double mfloat;8    mfloat = __builtin_va_arg((pa), gdouble);9}10 11void vararg(int, ...);12void function_as_vararg(void) {13  // CHECK: define {{.*}}function_as_vararg14  // CHECK-NOT: llvm.trap15  vararg(0, focus_changed_cb);16}17 18void vla(int n, ...)19{20  __builtin_va_list ap;21  void *p;22  p = __builtin_va_arg(ap, typeof (int (*)[++n])); // CHECK: add nsw i32 {{.*}}, 123}24 25// Ensure that __builtin_va_start(list, 0) and __builtin_c23_va_start(list)26// have the same codegen.27void noargs(...) {28  __builtin_va_list list;29  // CHECK:   %list = alloca ptr30  __builtin_va_start(list, 0);31  // CHECK-NEXT: call void @llvm.va_start.p0(ptr %list)  32  __builtin_c23_va_start(list);33  // CHECK-NEXT: call void @llvm.va_start.p0(ptr %list)34}35