56 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s2 3class A {4public:5 ~A() {}6};7 8class B : public virtual A {9public:10 ~B() {}11};12 13class C : public virtual A {14public:15 ~C() {}16};17 18class TestOrder : public C, public B, public virtual A {19 A a;20 int i;21 A *p;22public:23 ~TestOrder();24};25 26TestOrder::~TestOrder() {}27 28class TestArray {29 A a[2];30 A b[0];31public:32 ~TestArray();33};34 35TestArray::~TestArray() {}36 37// CHECK: [B2 (ENTRY)]38// CHECK: Succs (1): B139// CHECK: [B1]40// CHECK: 1: this->a.~A() (Member object destructor)41// CHECK: 2: ~B() (Base object destructor)42// CHECK: 3: ~C() (Base object destructor)43// CHECK: 4: ~A() (Base object destructor)44// CHECK: Preds (1): B245// CHECK: Succs (1): B046// CHECK: [B0 (EXIT)]47// CHECK: Preds (1): B148// CHECK: [B2 (ENTRY)]49// CHECK: Succs (1): B150// CHECK: [B1]51// CHECK: 1: this->a.~A() (Member object destructor)52// CHECK: Preds (1): B253// CHECK: Succs (1): B054// CHECK: [B0 (EXIT)]55// CHECK: Preds (1): B156