1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: FileCheck %s
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: FileCheck %s
572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianextern "C" int printf(...);
772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianint count;
972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
1072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianstruct S {
1172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  S() : iS (++count) { printf("S::S(%d)\n", iS); }
1272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  ~S() { printf("S::~S(%d)\n", iS); }
1372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  int iS;
1472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian};
1572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
16534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanianstruct V {
17534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  V() : iV (++count) { printf("V::V(%d)\n", iV); }
18534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  virtual ~V() { printf("V::~V(%d)\n", iV); }
19534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  int iV;
20534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian};
21534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian
2272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianstruct COST
2372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
2472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  S *cost;
25534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  V *vcost;
2672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  unsigned *cost_val;
2772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
2872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  ~COST();
2972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  COST();
3072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian};
3172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
3272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
3372c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST::COST()
3472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
3572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  cost = new S[3];
36534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  vcost = new V[4];
3772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  cost_val = new unsigned[10];
3872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian}
3972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
4072c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST::~COST()
4172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
4272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  if (cost) {
4372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian   delete [] cost;
4472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  }
45534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  if (vcost) {
46534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian   delete [] vcost;
47534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  }
4872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  if (cost_val)
4972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian    delete [] cost_val;
5072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian}
5172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
5272c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST c1;
5372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
5472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianint main()
5572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
5672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  COST c3;
5772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian}
5872c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST c2;
5972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: call void @_ZdaPv
6172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
62