xref: /aosp_15_r20/external/clang/test/CodeGenCXX/constructor-for-array-members.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
2*67e74705SXin Li // RUN: FileCheck %s
3*67e74705SXin Li // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
4*67e74705SXin Li // RUN: FileCheck %s
5*67e74705SXin Li 
6*67e74705SXin Li extern "C" int printf(...);
7*67e74705SXin Li 
8*67e74705SXin Li int i = 1234;
9*67e74705SXin Li float vf = 1.00;
10*67e74705SXin Li 
11*67e74705SXin Li struct S {
SS12*67e74705SXin Li   S() : iS(i++), f1(vf++) {printf("S::S()\n");}
~SS13*67e74705SXin Li   ~S(){printf("S::~S(iS = %d  f1 = %f)\n", iS, f1); }
14*67e74705SXin Li   int iS;
15*67e74705SXin Li   float f1;
16*67e74705SXin Li };
17*67e74705SXin Li 
18*67e74705SXin Li struct M {
19*67e74705SXin Li   double dM;
20*67e74705SXin Li   S ARR_S[3];
prM21*67e74705SXin Li   void pr() {
22*67e74705SXin Li     for (int i = 0; i < 3; i++)
23*67e74705SXin Li      printf("ARR_S[%d].iS = %d ARR_S[%d].f1 = %f\n", i, ARR_S[i].iS, i, ARR_S[i].f1);
24*67e74705SXin Li 
25*67e74705SXin Li     for (int i = 0; i < 2; i++)
26*67e74705SXin Li       for (int j = 0; j < 3; j++)
27*67e74705SXin Li         for (int k = 0; k < 4; k++)
28*67e74705SXin Li            printf("MULTI_ARR[%d][%d][%d].iS = %d MULTI_ARR[%d][%d][%d].f1 = %f\n",
29*67e74705SXin Li                   i,j,k, MULTI_ARR[i][j][k].iS, i,j,k, MULTI_ARR[i][j][k].f1);
30*67e74705SXin Li 
31*67e74705SXin Li   }
32*67e74705SXin Li 
33*67e74705SXin Li  S MULTI_ARR[2][3][4];
34*67e74705SXin Li };
35*67e74705SXin Li 
main()36*67e74705SXin Li int main() {
37*67e74705SXin Li   M m1;
38*67e74705SXin Li   m1.pr();
39*67e74705SXin Li }
40*67e74705SXin Li 
41*67e74705SXin Li // CHECK: call void @_ZN1SC1Ev
42