// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s // <rdar://problem/7929157> & <rdar://problem/8104369> struct A { virtual int f() { return 1; } }; struct B { virtual int f() { return 2; } }; struct C : A, B { virtual int f() { return 3; } }; struct D : C { virtual int f() { return 4; } }; static int f(D* d) { B* b = d; return b->f(); }; int g() { D d; return f(&d); } // Thunks should be marked as "linkonce ODR" not "weak". // // CHECK: define linkonce_odr i32 @_ZThn{{[48]}}_N1D1fEv // CHECK: define linkonce_odr i32 @_ZThn{{[48]}}_N1C1fEv