Hi. I decided to come up with a new sub-thread that will be linked to a root of email discussion. First, thank you for working on the project and there's a feedback that I can provide now:
1) options of lto-dump: a) no-demangle - does not make sense because it's default b) you should exit after one command, you probably don't want to support: -list bzlib.o -tree-stats c) following should be maybe handled: $ lto-dump -list bzlib.o bzlib.o bzlib.c:468:5: note: previously defined here bzlib.c:407:5: error: ‘BZ2_bzCompress’ has already been defined int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) ^ bzlib.c:407:5: note: previously defined here bzlib.c:148:5: error: ‘BZ2_bzCompressInit’ has already been defined int BZ_API(BZ2_bzCompressInit) d) you should add --help option, take a look at gcov-dump --help, or gcov --help, or gcov-tool --help. e) alpha-sort - maybe name-sort, or alphabetic-sort? 2) output formatting a) you mix usage of tabulars and fixed columns (%10d), please use the later at all places b) I see a lot of extra output when using the tool: ... Reading object files: bzlib.o {GC start 2164k} Reading the callgraph Merging declarations Reading summaries Reading function bodies: Performing interprocedural optimizations <whole-program> <profile_estimate> <icf> in:BZ2_bzCompressEnd in:BZ2_bzDecompressEnd <devirt> <cp> <cdtor> <fnsummary> <inline> <pure-const> <free-fnsummary> <static-var> <single-use> <comdats>Assembling functions: <materialize-all-clones> <simdclone> add_pair_to_block in:add_pair_to_block default_bzfree in:default_bzfree default_bzalloc in:default_bzalloc handle_compress.isra.2 in:handle_compress.isra.2 in:copy_output_until_stop in:copy_input_until_stop BZ2_bz__AssertH__fail in:BZ2_bz__AssertH__fail BZ2_bzCompressInit in:BZ2_bzCompressInit BZ2_bzCompress in:BZ2_bzCompress BZ2_bzCompressEnd BZ2_bzDecompressInit in:BZ2_bzDecompressInit BZ2_indexIntoF in:BZ2_indexIntoF BZ2_bzDecompress in:BZ2_bzDecompress in:unRLE_obuf_to_output_SMALL in:unRLE_obuf_to_output_FAST {GC 5331k -> 2747k} BZ2_bzDecompressEnd BZ2_bzWriteOpen in:BZ2_bzWriteOpen in:BZ2_bzWriteOpen.part.3 BZ2_bzWrite in:BZ2_bzWrite in:BZ2_bzWrite.part.4 BZ2_bzWriteClose64 in:BZ2_bzWriteClose64 in:BZ2_bzWriteClose64.part.5 BZ2_bzWriteClose in:BZ2_bzWriteClose BZ2_bzReadOpen in:BZ2_bzReadOpen in:BZ2_bzReadOpen.part.6 {GC 5332k -> 2307k} bzopen_or_bzdopen in:bzopen_or_bzdopen BZ2_bzReadClose in:BZ2_bzReadClose in:BZ2_bzReadClose.part.7 BZ2_bzRead in:BZ2_bzRead in:BZ2_bzRead.part.8 in:myfeof BZ2_bzReadGetUnused in:BZ2_bzReadGetUnused in:BZ2_bzReadGetUnused.part.9 BZ2_bzBuffToBuffCompress in:BZ2_bzBuffToBuffCompress BZ2_bzBuffToBuffDecompress in:BZ2_bzBuffToBuffDecompress BZ2_bzlibVersion in:BZ2_bzlibVersion BZ2_bzopen in:BZ2_bzopen BZ2_bzdopen in:BZ2_bzdopen BZ2_bzread in:BZ2_bzread in:BZ2_bzread.part.10 BZ2_bzwrite in:BZ2_bzwrite BZ2_bzflush in:BZ2_bzflush BZ2_bzclose in:BZ2_bzclose BZ2_bzerror in:BZ2_bzerror in:bzerrorstrings ... please remove it c) you mix all upper letters in header of lists, please unify that (Visibility, SECTION NAME) d) -gimple-stats does not work for me, no output and -tree-stats definitely not print all trees used e) you should not require -fdump-level for -fdump-body, select a default value for the level please f) why -fdump-level and -fdump-body start with '-f' 3) written source code a) I need following patch to build it: diff --git a/gcc/lto/lto-dump.c b/gcc/lto/lto-dump.c index 9a1ff61852c..48fc7d9a181 100644 --- a/gcc/lto/lto-dump.c +++ b/gcc/lto/lto-dump.c @@ -370,4 +370,4 @@ lto_main (void) timevar_push (TV_PARSE_GLOBAL); } -#include "gt-lto-lto.h" +//#include "gt-lto-lto.h" diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index bc61d25f61d..301ed4b2e25 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -143,4 +143,4 @@ lto_main (void) timevar_push (TV_PARSE_GLOBAL); } -#include "gt-lto-lto.h" +//#include "gt-lto-lto.h" can you please check it? b) you added parse_dump_option, but it's used only in dump-lto.c, why not in dumpfile.c? c) lto-dump.c still contains a lot of code in lto_main that's not needed (and is responsible for extra output) e) you moved all to lto-common.c, but functionality exclusively used only in lto.c should remain there f) you should probably dump to stdout, rather that stderr g) there are still quite some functions in lto-dump.c that are missing comment, lto_main comment should be rewritten 4) misc a) lto-dump should be installed with 'make install', similarly as lto1 is b) lto-dump command option should be documentation, again take a look for gcov-dump, gcov, gcov-tool (*.texi file) c) would be nice to have some test-cases for that, but it's probably out of scope of the project d) I bet there will be quite some extra includes of header file in lto-dump.c, please adjust file comment and year of creation Martin