Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
      2 // RUN: FileCheck %s
      3 // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
      4 // RUN: FileCheck %s
      5 
      6 extern "C" int printf(...);
      7 
      8 int count;
      9 
     10 struct S {
     11   S() : iS (++count) { printf("S::S(%d)\n", iS); }
     12   ~S() { printf("S::~S(%d)\n", iS); }
     13   int iS;
     14 };
     15 
     16 struct V {
     17   V() : iV (++count) { printf("V::V(%d)\n", iV); }
     18   virtual ~V() { printf("V::~V(%d)\n", iV); }
     19   int iV;
     20 };
     21 
     22 struct COST
     23 {
     24   S *cost;
     25   V *vcost;
     26   unsigned *cost_val;
     27 
     28   ~COST();
     29   COST();
     30 };
     31 
     32 
     33 COST::COST()
     34 {
     35   cost = new S[3];
     36   vcost = new V[4];
     37   cost_val = new unsigned[10];
     38 }
     39 
     40 COST::~COST()
     41 {
     42   if (cost) {
     43    delete [] cost;
     44   }
     45   if (vcost) {
     46    delete [] vcost;
     47   }
     48   if (cost_val)
     49     delete [] cost_val;
     50 }
     51 
     52 COST c1;
     53 
     54 int main()
     55 {
     56   COST c3;
     57 }
     58 COST c2;
     59 
     60 // CHECK: call void @_ZdaPv
     61 
     62