Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
      2 // <rdar://problem/7929157> & <rdar://problem/8104369>
      3 
      4 struct A {
      5   virtual int f() { return 1; }
      6 };
      7 
      8 struct B {
      9   virtual int f() { return 2; }
     10 };
     11 
     12 struct C : A, B {
     13   virtual int f() { return 3; }
     14 };
     15 
     16 struct D : C {
     17   virtual int f() { return 4; }
     18 };
     19 
     20 static int f(D* d) {
     21   B* b = d;
     22   return b->f();
     23 };
     24 
     25 int g() {
     26   D d;
     27   return f(&d);
     28 }
     29 
     30 // Thunks should be marked as "linkonce ODR" not "weak".
     31 //
     32 // CHECK: define linkonce_odr i32 @_ZThn{{[48]}}_N1D1fEv
     33 // CHECK: define linkonce_odr i32 @_ZThn{{[48]}}_N1C1fEv
     34