10ccb31c389a09216a5b60cf05bd01516ddbe8d4fGalina Kistanova// REQUIRES: x86-registered-target,x86-64-registered-target
2762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
4762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianextern "C" int printf(...);
872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianint count;
1072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
1172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianstruct S {
1272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  S() : iS (++count) { printf("S::S(%d)\n", iS); }
1372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  ~S() { printf("S::~S(%d)\n", iS); }
1472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  int iS;
1572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian};
1672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
17534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanianstruct V {
18534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  V() : iV (++count) { printf("V::V(%d)\n", iV); }
19534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  virtual ~V() { printf("V::~V(%d)\n", iV); }
20534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  int iV;
21534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian};
22534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian
2372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianstruct COST
2472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
2572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  S *cost;
26534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  V *vcost;
2772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  unsigned *cost_val;
2872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
2972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  ~COST();
3072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  COST();
3172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian};
3272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
3372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
3472c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST::COST()
3572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
3672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  cost = new S[3];
37534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  vcost = new V[4];
3872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  cost_val = new unsigned[10];
3972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian}
4072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
4172c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST::~COST()
4272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
4372c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  if (cost) {
4472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian   delete [] cost;
4572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  }
46534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  if (vcost) {
47534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian   delete [] vcost;
48534ba90a1b865f3731aa56423e8f02d49ff62ec7Fariborz Jahanian  }
4972c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  if (cost_val)
5072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian    delete [] cost_val;
5172c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian}
5272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
5372c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST c1;
5472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
5572c2153b466263a21870b2b1c817900d4981493eFariborz Jahanianint main()
5672c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian{
5772c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian  COST c3;
5872c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian}
5972c2153b466263a21870b2b1c817900d4981493eFariborz JahanianCOST c2;
6072c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
613b29901b1d106789e04ce8c4cdfebe72b251db4bSean Callanan// CHECK-LP64: callq    __ZdaPv
6272c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
63398e6b90f5e161d520a95cbf34c732a55fd3e476Chris Lattner// CHECK-LP32: calll     L__ZdaPv
6472c2153b466263a21870b2b1c817900d4981493eFariborz Jahanian
65