xref: /aosp_15_r20/external/clang/test/CodeGen/vla-4.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void 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 Li void 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 Li void 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