http://llvm.org/bugs/show_bug.cgi?id=16971

            Bug ID: 16971
           Summary: The function type of thunks is wrong?
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected], [email protected]
    Classification: Unclassified

I've noticed that for such a code:
  -----------------
  struct A {
    virtual void f();
  };

  struct B {
    virtual void f();
  };

  struct C : A, B {
    virtual void f();
  };

  void C::f() { }
  -----------------
the function type of the thunk is a bit wrong:
  -----------------
  define void @_ZThn8_N1C1fEv(%struct.C* %this) unnamed_addr #0 align 2 {
    ...
    %1 = getelementptr inbounds i8* %0, i64 -8
    %2 = bitcast i8* %1 to %struct.C*
    call void @_ZN1C1fEv(%struct.C* %2)
    ...
  -----------------
(as of r188899)

I believe it should be "define void @_ZThn8_N1C1fEv(%struct.B* %this)" instead.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to