diff options
Diffstat (limited to 'test/asan/TestCases/initialization-constexpr.cc')
-rw-r--r-- | test/asan/TestCases/initialization-constexpr.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/asan/TestCases/initialization-constexpr.cc b/test/asan/TestCases/initialization-constexpr.cc new file mode 100644 index 000000000000..644246186e02 --- /dev/null +++ b/test/asan/TestCases/initialization-constexpr.cc @@ -0,0 +1,27 @@ +// Constexpr: +// We need to check that a global variable initialized with a constexpr +// constructor can be accessed during dynamic initialization (as a constexpr +// constructor implies that it was initialized during constant initialization, +// not dynamic initialization). + +// RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t +// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1 +// RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t +// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1 +// RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t +// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1 +// RUN: %clangxx_asan -O3 %s %p/Helpers/initialization-constexpr-extra.cc --std=c++11 -o %t +// RUN: env ASAN_OPTIONS=check_initialization_order=true %run %t 2>&1 + +class Integer { + private: + int value; + + public: + constexpr Integer(int x = 0) : value(x) {} + int getValue() {return value;} +}; +Integer coolestInteger(42); +int getCoolestInteger() { return coolestInteger.getValue(); } + +int main() { return 0; } |