http://llvm.org/bugs/show_bug.cgi?id=13883
Bug #: 13883
Summary: clang doesn't compute "nearly empty" correctly in edge
cases
Product: clang
Version: unspecified
Platform: PC
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P
Component: C++
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected], [email protected]
Classification: Unclassified
Testcase (from gcc testsuite):
struct E1 {};
struct E2 : public E1 {};
struct E : public E1, public E2 {};
struct N : public E { virtual void f () {} };
struct X : virtual public N {
};
int main () {
X x;
/* N should not be the primary base of X; it is not nearly empty. */
if ((void*)&x == (void*)(N*)&x)
return 1;
}
clang's implementation of ItaniumCXXABI::isNearlyEmpty in particular doesn't
check the rule that a nearly empty class "has no proper base class that is
empty, not morally virtual, and at an offset other than zero".
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- 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