[LLVMbugs] [Bug 11345] New: debug info generated for functions that are not emitted
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Nov 8 17:44:51 PST 2011
http://llvm.org/bugs/show_bug.cgi?id=11345
Bug #: 11345
Summary: debug info generated for functions that are not
emitted
Product: clang
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: LLVM Codegen
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: nlewycky at google.com
CC: echristo at gmail.com, llvmbugs at cs.uiuc.edu
Classification: Unclassified
Consider this testcase:
class locale {
private:
void _M_add_reference() const throw() {
}
};
class ios_base {
locale _M_ios_locale;
public:
class Init {
};
};
static ios_base::Init __ioinit;
When built without debug info, GCC and clang agree, the resulting assembly is:
.local _ZL8__ioinit
.comm _ZL8__ioinit,1,1
but where things get exciting is the debug info. Besides the
filename/directory/compiler identifier, the strings that GCC emits are
.LASF4:
.string "Init"
.LASF5:
.string "__ioinit"
which makes sense, there's one object named __ioinit of type Init (technically
"ios_base::Init", so emitting that would be fine too). Clang emits:
.Lstring3:
.ascii "__ioinit"
.zero 1
.Lstring4:
.ascii "_ZL8__ioinit"
.zero 1
.Lstring5:
.ascii "Init"
.zero 1
.Lstring6:
.ascii "_M_ios_locale"
.zero 1
.Lstring7:
.ascii "_ZNK6locale16_M_add_referenceEv"
.zero 1
.Lstring8:
.ascii "_M_add_reference"
.zero 1
.Lstring9:
.ascii "locale"
.zero 1
.Lstring10:
.ascii "ios_base"
.zero 1
Yow! We never emitted code for any of those functions at the very least. My
estimate is that this is causing about 60% of the extra strings. (Only an
estimate because there are other sources of differences, such as clang emitting
all case names for a given enum, while gcc only emits the used ones. I consider
clang's behaviour better.)
--
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