15955a0f9SEli Friedman // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
25955a0f9SEli Friedman // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm-only -verify -DFAIL1 %s
35955a0f9SEli Friedman // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm-only -verify -DFAIL2 %s
4*4802edd1SEli Friedman // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm-only -verify -DFAIL3 %s
55955a0f9SEli Friedman
65955a0f9SEli Friedman struct A { int x; int y[]; };
75955a0f9SEli Friedman A a = { 1, 7, 11 };
85955a0f9SEli Friedman // CHECK: @a ={{.*}} global { i32, [2 x i32] } { i32 1, [2 x i32] [i32 7, i32 11] }
95955a0f9SEli Friedman
105955a0f9SEli Friedman A b = { 1, { 13, 15 } };
115955a0f9SEli Friedman // CHECK: @b ={{.*}} global { i32, [2 x i32] } { i32 1, [2 x i32] [i32 13, i32 15] }
125955a0f9SEli Friedman
13*4802edd1SEli Friedman char f();
145955a0f9SEli Friedman #ifdef FAIL1
155955a0f9SEli Friedman A c = { f(), { f(), f() } }; // expected-error {{cannot compile this flexible array initializer yet}}
165955a0f9SEli Friedman #endif
175955a0f9SEli Friedman #ifdef FAIL2
g()185955a0f9SEli Friedman void g() {
195955a0f9SEli Friedman static A d = { f(), { f(), f() } }; // expected-error {{cannot compile this flexible array initializer yet}}
205955a0f9SEli Friedman }
215955a0f9SEli Friedman #endif
22*4802edd1SEli Friedman #ifdef FAIL3
23*4802edd1SEli Friedman struct B { int x; char y; char z[]; };
24*4802edd1SEli Friedman B e = {f(), f(), f(), f()}; // expected-error {{cannot compile this flexible array initializer yet}}
25*4802edd1SEli Friedman #endif
26