1*67e74705SXin Li // RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li int f(); 4*67e74705SXin Li int h(); 5*67e74705SXin Li t1()6*67e74705SXin Livoid t1() { 7*67e74705SXin Li _Atomic(typeof((int (*)[f()]) h())) v; 8*67e74705SXin Li // CHECK: [[N:%.*]] = alloca i32*, align 4 9*67e74705SXin Li // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @f to i32 ()*)() 10*67e74705SXin Li // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @h to i32 ()*)() 11*67e74705SXin Li } 12*67e74705SXin Li t2()13*67e74705SXin Livoid t2() { 14*67e74705SXin Li typeof(typeof((int (*)[f()]) h())) v; 15*67e74705SXin Li // CHECK: [[N:%.*]] = alloca i32*, align 4 16*67e74705SXin Li // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @f to i32 ()*)() 17*67e74705SXin Li // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @h to i32 ()*)() 18*67e74705SXin Li } 19*67e74705SXin Li h()20*67e74705SXin Livoid t3(typeof((int (*)[f()]) h()) v) { 21*67e74705SXin Li // CHECK: store i32* %v, i32** %{{[.0-9A-Za-z]+}}, align 4 22*67e74705SXin Li // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @f to i32 ()*)() 23*67e74705SXin Li // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @h to i32 ()*)() 24*67e74705SXin Li } 25