• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()25 int getCoolestInteger() { return coolestInteger.getValue(); }
26 
main()27 int main() { return 0; }
28