http://llvm.org/bugs/show_bug.cgi?id=18967
Bug ID: 18967
Summary: MS ABI: Bad this adjustment for virtual methods in a
diamond virtual inheritance hierarchy
Product: clang
Version: unspecified
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected], [email protected],
[email protected]
Blocks: 12477, 18887
Classification: Unclassified
Semi-reduced test case:
$ cat t.cpp
struct A {
virtual int foo() { return a; }
int a;
};
struct B : virtual A {
B() : b(1) {}
virtual int bar() { return b; }
int b;
};
struct C : virtual A {
C() : c(2) {}
virtual int foo() { return c; }
int c;
};
struct D : B, C {
D() : d(3) {}
virtual int bar() { return d; }
int d;
};
int main() {
D d;
return d.foo();
}
$ clang-cl -GR- t.cpp && ./t.exe ; echo $?
3
This should return 2, not 3. It's accessing 'd' instead of 'c'.
--
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