// 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; | |
} |