[LLVMdev] Implementing minimal debug info (-g1?) for Clang

Alexey Samsonov samsonov at google.com
Thu Apr 5 10:24:03 PDT 2012


Hi!

Currently Clang "-g" flag emits full debug info, which is fine for
debugging, but increases the binary size significantly.
It may be useful to produce less debug info, that is still enough for
collecting nice stack traces with file names and line numbers,
but would introduce less overhead. Cary Coutant made a patch which does
this for GCC (it didn't hit trunk yet) -
reduces debug info to only descriptions of functions, extern variables,
line number tables and inlined subroutine info
by setting "-gmlt" ("minimum line table") or "-g1" flags.
(See this patch at
http://old.nabble.com/-patch--Add-new--gmlt-option-for-min.-debug-info-with-line-tables-(issue4440072)-td31482851.html
or http://codereview.appspot.com/4440072). This patch is used in Google for
about 2 years already.

I get the following binary sizes of 483.xalancbmk benchmark from SPEC 2006
(clang from trunk vs. gcc 4.6.x with Google patches):
11026073 Xalan_base.clang_O0
45882529 Xalan_base.clang_O0_g
11079688 Xalan_base.gcc_O0
16437776 Xalan_base.gcc_O0_gmlt
54221056 Xalan_base.gcc_O0_g

WDYT of implementing similar option in Clang? Clearly, there are two
options:
1. Don't modify Clang codegen, but instead erase all the extra debug info
by LLVM (pro - there actually is StripDebugInfo pass already, but it's very
short and easy,
and would have to be patched a lot).
2. Emit less information in Clang. We're also quite interested if this may
reduce the compilation time as well.
Which approach looks better in your opinion? I'd like to start working on
that enhancement, but certainly would be happy to hear some advice
beforehand.

--
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120405/fc229b3b/attachment.html>


More information about the llvm-dev mailing list