// Test for the following situation:
// (1) global A is constructed.
// (2) exit() is called during construction of global B.
// (3) destructor of A reads uninitialized global C from another module.
// We do *not* want to report init-order bug in this case.

// RUN: %clangxx_asan -O0 %s %p/Helpers/init-order-atexit-extra.cc -o %t
// RUN: %env_asan_opts=strict_init_order=true not %run %t 2>&1 | FileCheck %s

#include <stdio.h>
#include <stdlib.h>

void AccessC();

class A {
 public:
  A() { }
  ~A() { AccessC(); printf("PASSED\n"); }
  // CHECK-NOT: AddressSanitizer
  // CHECK: PASSED
};

A a;

class B {
 public:
  B() { exit(1); }
  ~B() { }
};

B b;
