1// Constexpr:
2// We need to check that a global variable initialized with a constexpr
3// constructor can be accessed during dynamic initialization (as a constexpr
4// constructor implies that it was initialized during constant initialization,
5// not dynamic initialization).
6
7// RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t
8// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1
9// RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t
10// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1
11// RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t
12// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1
13// RUN: %clangxx_asan -O3 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t
14// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1
15
16class Integer {
17  private:
18  int value;
19
20  public:
21  constexpr Integer(int x = 0) : value(x) {}
22  int getValue() {return value;}
23};
24Integer coolestInteger(42);
25int getCoolestInteger() { return coolestInteger.getValue(); }
26
27int main() { return 0; }
28