[LLVMbugs] [Bug 6996] New: vtables marked weak_odr instead of linkonce_odr
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Apr 30 14:09:25 PDT 2010
http://llvm.org/bugs/show_bug.cgi?id=6996
Summary: vtables marked weak_odr instead of linkonce_odr
Product: clang
Version: unspecified
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: clattner at apple.com
CC: llvmbugs at cs.uiuc.edu
In this testcase:
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);
}
The vtables and related gunk are emitted as weak_odr instead of linkonce_odr.
Because the vtables will be emitted in each translation unit that could
possibly use them (they don't have a key function) they can be linkonce_odr.
When llvm devirtualizes this example, we end up emitting all the vtables etc
even though they aren't used.
--
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.
More information about the llvm-bugs
mailing list