// RUN: %clangxx_asan %min_macos_deployment_target=10.11 -O0 %s %p/Helpers/initialization-bug-extra.cpp -o %t
// RUN: %env_asan_opts=check_initialization_order=true:strict_init_order=true not %run %t 2>&1 | FileCheck %s

// Do not test with optimization -- the error may be optimized away.

// FIXME: https://code.google.com/p/address-sanitizer/issues/detail?id=186
// XFAIL: target={{.*windows-msvc.*}}

// Fails on some Darwin bots, probably iOS.
// XFAIL: ios

// Strict init order checking is not supported on AIX
// UNSUPPORTED: target={{.*aix.*}}

#include <stdio.h>

extern int y;

void __attribute__((constructor)) ctor() {
  printf("%d\n", y);
  // CHECK: AddressSanitizer: initialization-order-fiasco
}

int main() {
  // ASan should have caused an exit before main runs.
  printf("PASS\n");
  // CHECK-NOT: PASS
  return 0;
}
