1 // A collection of various initializers which shouldn't trip up initialization
2 // order checking. If successful, this will just return 0.
4 // RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-nobug-extra.cpp -o %t
5 // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
6 // RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-nobug-extra.cpp -o %t
7 // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
8 // RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-nobug-extra.cpp -o %t
9 // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
10 // RUN: %clangxx_asan -O3 %s %p/Helpers/initialization-nobug-extra.cpp -o %t
11 // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
14 // Make sure that accessing a global in the same TU is safe
16 bool condition
= true;
17 int initializeSameTU() {
18 return condition
? 0x2a : 052;
20 int sameTU
= initializeSameTU();
22 // Linker initialized:
23 // Check that access to linker initialized globals originating from a different
24 // TU's initializer is safe.
26 int A
= (1 << 1) + (1 << 3) + (1 << 5), B
;
31 // Function local statics:
32 // Check that access to function local statics originating from a different
33 // TU's initializer is safe.
40 // Trivial constructor, non-trivial destructor.
41 struct StructWithDtor
{
45 StructWithDtor struct_with_dtor
;
46 int getStructWithDtorValue() { return struct_with_dtor
.value
; }
48 int main() { return 0; }