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_opts=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_opts=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_opts=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_opts=check_initialization_order=true %run %t 2>&1 15 16 class Integer { 17 private: 18 int value; 19 20 public: Integer(int x=0)21 constexpr Integer(int x = 0) : value(x) {} getValue()22 int getValue() {return value;} 23 }; 24 Integer coolestInteger(42); getCoolestInteger()25int getCoolestInteger() { return coolestInteger.getValue(); } 26 main()27int main() { return 0; } 28