// RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -emit-llvm -o - | FileCheck %s

// PR7097
// RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -mconstructor-aliases -emit-llvm -o - | FileCheck %s

// CHECK:      call void @_ZN1AC1Ev([[A:%.*]]* {{[^,]*}} @a)
// CHECK-NEXT: call i32 @atexit(void ()* @__dtor_a)
// CHECK:      define internal void @__dtor_a() [[NUW:#[0-9]+]]
// CHECK:      call void @_ZN1AD1Ev([[A]]* @a)

// CHECK:      call void @_ZN1AC1Ev([[A]]* {{[^,]*}} @b)
// CHECK-NEXT: call i32 @atexit(void ()* @__dtor_b)
// CHECK:      define internal void @__dtor_b() [[NUW]]
// CHECK:      call void @_ZN1AD1Ev([[A]]* @b)

class A {
public:
  A();
  ~A();
};

A a, b;

// PR9593
// CHECK-LABEL:      define{{.*}} void @_Z4funcv()
// CHECK:      call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a1)
// CHECK:      call void @_ZN1AC1Ev([[A]]* {{[^,]*}} @_ZZ4funcvE2a1)
// CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a1)
// CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a1)

// CHECK:      call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a2)
// CHECK:      call void @_ZN1AC1Ev([[A]]* {{[^,]*}} @_ZZ4funcvE2a2)
// CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a2)
// CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a2)

// CHECK:      define internal void @__dtor__ZZ4funcvE2a1() [[NUW]]
// CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a1)

// CHECK:      define internal void @__dtor__ZZ4funcvE2a2() [[NUW]]
// CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a2)

void func() {
  static A a1, a2;
}

// CHECK: attributes [[NUW]] = { noinline nounwind{{.*}} }
