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