brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 4ee50e1 Raw
56 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -emit-llvm -o - %s | FileCheck %s2// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -emit-llvm -std=c++98 -o - %s | FileCheck %s3// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -emit-llvm -std=c++11 -o - %s | FileCheck %s4 5class A { protected: virtual ~A() {} };6class B { protected: virtual ~B() {} };7 8class C : A { char x; };9class D : public A { short y; };10class E : public A, public B { int z; };11class F : public virtual A { long long w; };12class G : virtual A { long long w; };13 14class H : public E { int a; };15class I : public F { char b; };16 17class J : public H { char q; };18class K : public C, public B { char q; };19 20class XA : public A { };21class XB : public A { };22class XC : public virtual A { };23class X : public XA, public XB, public XC { };24 25void test(A *a, B *b) {26  volatile C *ac = dynamic_cast<C *>(a);27// CHECK: ptr @_ZTI1A, ptr @_ZTI1C, i64 -2)28  volatile D *ad = dynamic_cast<D *>(a);29// CHECK: ptr @_ZTI1A, ptr @_ZTI1D, i64 0)30  volatile E *ae = dynamic_cast<E *>(a);31// CHECK: ptr @_ZTI1A, ptr @_ZTI1E, i64 0)32  volatile F *af = dynamic_cast<F *>(a);33// CHECK: ptr @_ZTI1A, ptr @_ZTI1F, i64 -1)34  volatile G *ag = dynamic_cast<G *>(a);35// CHECK: ptr @_ZTI1A, ptr @_ZTI1G, i64 -2)36  volatile H *ah = dynamic_cast<H *>(a);37// CHECK: ptr @_ZTI1A, ptr @_ZTI1H, i64 0)38  volatile I *ai = dynamic_cast<I *>(a);39// CHECK: ptr @_ZTI1A, ptr @_ZTI1I, i64 -1)40  volatile J *aj = dynamic_cast<J *>(a);41// CHECK: ptr @_ZTI1A, ptr @_ZTI1J, i64 0)42  volatile K *ak = dynamic_cast<K *>(a);43// CHECK: ptr @_ZTI1A, ptr @_ZTI1K, i64 -2)44  volatile X *ax = dynamic_cast<X *>(a);45// CHECK: ptr @_ZTI1A, ptr @_ZTI1X, i64 -1)46 47  volatile E *be = dynamic_cast<E *>(b);48// CHECK: ptr @_ZTI1B, ptr @_ZTI1E, i64 8)49  volatile G *bg = dynamic_cast<G *>(b);50// CHECK: ptr @_ZTI1B, ptr @_ZTI1G, i64 -2)51  volatile J *bj = dynamic_cast<J *>(b);52// CHECK: ptr @_ZTI1B, ptr @_ZTI1J, i64 8)53  volatile K *bk = dynamic_cast<K *>(b);54// CHECK: ptr @_ZTI1B, ptr @_ZTI1K, i64 16)55}56