// RUN: clang-cc -triple x86_64-apple-darwin -std=c++0x -S %s -o %t-64.s &&
// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s &&
// RUN: clang-cc -triple i386-apple-darwin -std=c++0x -S %s -o %t-32.s &&
// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s &&
// RUN: true

extern "C" int printf(...);

int i = 1234;
float vf = 1.00;

struct S {
  S() : iS(i++), f1(vf++) {printf("S::S()\n");}
  ~S(){printf("S::~S(iS = %d  f1 = %f)\n", iS, f1); }
  int iS;
  float f1;
};

struct M {
  double dM;
  S ARR_S[3];
  void pr() {
    for (int i = 0; i < 3; i++)
     printf("ARR_S[%d].iS = %d ARR_S[%d].f1 = %f\n", i, ARR_S[i].iS, i, ARR_S[i].f1);

    for (int i = 0; i < 2; i++)
      for (int j = 0; j < 3; j++)
        for (int k = 0; k < 4; k++)
           printf("MULTI_ARR[%d][%d][%d].iS = %d MULTI_ARR[%d][%d][%d].f1 = %f\n", 
                  i,j,k, MULTI_ARR[i][j][k].iS, i,j,k, MULTI_ARR[i][j][k].f1);

  }

 S MULTI_ARR[2][3][4];
};

int main() {
	M m1;
	m1.pr();

}

// CHECK-LP64: call	__ZN1SC1Ev

// CHECK-LP32: call	L__ZN1SC1Ev
