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

@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(i8** {{.*}}, i8* null)

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