Revert "Revert "Debug Info: Type Units: Simplify type hashing using IR-provided uniqu...
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 3 Jan 2014 18:59:42 +0000 (18:59 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 3 Jan 2014 18:59:42 +0000 (18:59 +0000)
commitd329ef5a3ce315a33691fdfbf63e6f25ae8f6127
tree4f584bba05cb77d12af86c34620abf4f0f1a36f5
parentdace98d80538eae87f244bf8cdc998c555a1ffb1
Revert "Revert "Debug Info: Type Units: Simplify type hashing using IR-provided unique names.""

This reverts commit r198398, thus reapplying r198397.

I had accidentally introduced an endianness issue when applying the hash
to the type unit. Using support::ulittle64_t in the reinterpret_cast in
addDwarfTypeUnitType fixes this issue.

Original commit message:

Debug Info: Type Units: Simplify type hashing using IR-provided unique
names.

What's good for LTO metadata size problems ought to be good for non-LTO
debug info size too, so let's rely on the same uniqueness in both cases.
If it's insufficient for non-LTO for whatever reason (since we now won't
be uniquing CU-local types or any C types - but these are likely to not
be the most significant contributors to type bloat) we should consider a
frontend solution that'll help both LTO and non-LTO alike, rather than
using DWARF-level DIE-hashing that only helps non-LTO debug info size.

It's also much simpler this way and benefits C++ even more since we can
deduplicate lexically separate definitions of the same C++ type since
they have the same mangled name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198436 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/AsmPrinter/DwarfDebug.h
lib/CodeGen/AsmPrinter/DwarfUnit.cpp
test/DebugInfo/X86/c-type-units.ll
test/DebugInfo/X86/generate-odr-hash.ll