[LLVMbugs] [Bug 700] NEW: [llvm-g++] Templates instantiated on internal classes should be internal
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Sun Jan 22 15:53:00 PST 2006
http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=700
Summary: [llvm-g++] Templates instantiated on internal classes
should be internal
Product: tools
Version: trunk
Platform: All
OS/Version: All
Status: NEW
Severity: minor
Priority: P2
Component: llvm-g++
AssignedTo: unassignedbugs at nondot.org
ReportedBy: sabre at nondot.org
Consider:
---
template <typename foo>
void bar() {}
namespace { class C {};}
void (*FP)() = bar<C>;
---
Because C is in an anonymous namespace, there is no reason for the template instantiation of bar here
to be marked linkonce. Instead, it should be marked internal, allowing IPO at compile time.
We currently compile it to:
---
%FP = global void ()* %_Z3barIN11_GLOBAL__N_1CEEvv ; <void ()**> [#uses=0]
linkonce void %_Z3barIN11_GLOBAL__N_1CEEvv() {
ret void
}
---
This occurs with pass registration functions in LLVM, which are templates instantiated on mostly
internal classes.
-Chris
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the llvm-bugs
mailing list