text: // RUN: %clang_cc1 %s -triple i386-unknown-unknown -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
  