blob: 9546ee20fb85ff9df7b28c6067b5817b90668886 [file] [log] [blame]
// This file is distributed under the University of Illinois Open Source License.
// See LICENSE.TXT for details.
// RUN: cxx_compiler -c cxx_rtti cxx_exceptions %s -o %t.o
// RUN: linker %t.o -o %t%exeext
// RUN: runtool %t%exeext | tee %t.out | FileCheck %s
#include <stdio.h>
// 3.3.4.1 - File scope objects in a single object file are constructed in declaration order
struct A { A() { printf("In %s()\n", __FUNCTION__); } };
struct B { B() { printf("In %s()\n", __FUNCTION__); } };
struct C { C() { printf("In %s()\n", __FUNCTION__); } };
struct D { D() { printf("In %s()\n", __FUNCTION__); } };
struct E { E() { printf("In %s()\n", __FUNCTION__); } };
typedef A F;
// CHECK: In A()
// CHECK: In B()
// CHECK: In D()
// CHECK: In C()
// CHECK: In B()
// CHECK: In A()
// CHECK: In E()
// CHECK: In main()
A v01;
B v02;
D v03;
C v04;
static B v05;
F v06;
E v07;
int main(int argc, char *argv[]) {
printf("In %s()\n", __FUNCTION__);
return 0;
}