16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s 2a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner 3a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner// PR6433 - Don't crash on va_arg(typedef). 4a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattnertypedef double gdouble; 5a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattnervoid focus_changed_cb () { 6a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner __builtin_va_list pa; 7a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner double mfloat; 8a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner mfloat = __builtin_va_arg((pa), gdouble); 9a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner} 10a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner 1183ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smithvoid vararg(int, ...); 1283ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smithvoid function_as_vararg() { 1383ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith // CHECK: define {{.*}}function_as_vararg 1483ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith // CHECK-NOT: llvm.trap 1583ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith vararg(0, focus_changed_cb); 1683ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith} 176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid vla(int n, ...) 196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines{ 206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines __builtin_va_list ap; 216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines void *p; 226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines p = __builtin_va_arg(ap, typeof (int (*)[++n])); // CHECK: add nsw i32 {{.*}}, 1 236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines} 24