// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-passes -o - %s | FileCheck %s

@class MyObject;
struct base {
  ~base() = default;
};
struct derived : public base {
  MyObject *myobject;
};

void test1() {
  derived d1;
}
// CHECK-LABEL: define{{.*}} void @_Z5test1v()
// CHECK: call void @_ZN7derivedC1Ev
// CHECK: call void @_ZN7derivedD1Ev

void test2() {
  derived *d2 = new derived;
  delete d2;
}
// CHECK-LABEL: define{{.*}} void @_Z5test2v()
// CHECK:   call void @_ZN7derivedC1Ev
// CHECK:   call void @_ZN7derivedD1Ev

template <typename T>
struct tderived : public base {
  MyObject *myobject;
};
void test3() {
  tderived<int> d1;
}
// CHECK-LABEL: define{{.*}} void @_Z5test3v()
// CHECK: call void @_ZN8tderivedIiEC1Ev
// CHECK: call void @_ZN8tderivedIiED1Ev

void test4() {
  tderived<int> *d2 = new tderived<int>;
  delete d2;
}
// CHECK-LABEL: define{{.*}} void @_Z5test4v()
// CHECK: call void @_ZN8tderivedIiEC1Ev
// CHECK: call void @_ZN8tderivedIiED1Ev

// CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev
// CHECK: call void @llvm.objc.storeStrong(ptr {{.*}}, ptr null)

// CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev
// CHECK: call void @llvm.objc.storeStrong(ptr {{.*}}, ptr null)
