Hi, Thanks for suggestions. I would start working on these points and will try to complete as early as possible.
Regards, Hrishikesh On Mon, Jul 9, 2018 at 2:04 PM, Martin Liška <mli...@suse.cz> wrote: > On 07/09/2018 09:50 AM, Hrishikesh Kulkarni wrote: >> Hi, >> >> The command line option -gimple-stats will dump the statistics of >> gimple statements. >> >> For example: >> >> $ ../stage1-build/gcc/lto-dump test_hello.o -gimple-stats >> >> will dump: >> >> GIMPLE statements >> Kind Stmts Bytes >> --------------------------------------- >> assignments 3 264 >> phi nodes 1 248 >> conditionals 1 80 >> everything else 12 704 >> --------------------------------------- >> Total 17 1296 >> --------------------------------------- >> >> I have pushed the changes to the repo. Please find the diff file >> attached herewith. >> >> Regards, >> >> Hrishikesh > > Hi. > > Thanks for the work. I briefly took a look at the code and I would > focus now directly on refactoring: > > - please make a new branch, first copy lto-dump.c file and all the > Makefile needed stuff and commit that. > - next please rebase (squash) all your patches which you have on top > of it; you did some formatting corrections and it's very hard to read > - please fix coding style, it's mentioned here: > https://gcc.gnu.org/codingconventions.html > the most problematic is usage of horizontal white spaces. We use 2 spaces > for indentation level, and 8 spaces are replaced with a tabular; without that > reading your > code is very hard for me > - then please start refactoring functionality that is copied from lto.c and > put shared > stuff into a header file that will be used by lto.c and lto-dump.c. > > Other observations: > - you use "\t\t%s\t\t%s\t\t%s" formats for prints; I think it would be better > to > use fixed strings with spaces, try %20s. It's probably also used by tools > like nm or objdump > - come up with more specific name for 'entry' and 'compare' > - 'entry' should have functions that will print names, ... according to > options > (flag_lto_dump_demangle, ...); you can have overrides for functions and > variables > - I would first put all symbols into the vector and then I would print it on > a single place > - consider using vec from vec.h, hash_map from hash-map.h instead of std:: > variants > - exit after functions like dump_list, dump_symbol,... > - remove dummy 'dump' function > > Martin > >> >> On Thu, Jul 5, 2018 at 10:41 PM, Hrishikesh Kulkarni >> <hrishikeshpa...@gmail.com> wrote: >>> Hi, >>> >>> I have added new command line option: >>> -objects >>> which will dump size, offset and name of each section for all lto objects >>> >>> for example: >>> $ ../stage1-build/gcc/lto-dump test_hello.o test.o -objects >>> >>> gives output: >>> LTO object name: test_hello.o >>> >>> NO. OFFSET SIZE SECTION NAME >>> >>> 1 64 15 .gnu.lto_.profile.a7add72ac123628 >>> 2 79 55 .gnu.lto_.icf.a7add72ac123628 >>> 3 134 134 .gnu.lto_.jmpfuncs.a7add72ac123628 >>> 4 268 116 .gnu.lto_.inline.a7add72ac123628 >>> 5 384 24 .gnu.lto_.pureconst.a7add72ac123628 >>> 6 408 306 .gnu.lto_foo.a7add72ac123628 >>> 7 714 469 .gnu.lto_bar.a7add72ac123628 >>> 8 1183 345 .gnu.lto_main.a7add72ac123628 >>> 9 1528 88 .gnu.lto_.symbol_nodes.a7add72ac123628 >>> 10 1616 15 .gnu.lto_.refs.a7add72ac123628 >>> 11 1631 1205 .gnu.lto_.decls.a7add72ac123628 >>> 12 2836 109 .gnu.lto_.symtab.a7add72ac123628 >>> 13 2945 76 .gnu.lto_.opts >>> >>> LTO object name: test.o >>> >>> NO. OFFSET SIZE SECTION NAME >>> >>> 1 64 15 .gnu.lto_.profile.ffab9cb8eb84fc03 >>> 2 79 30 .gnu.lto_.icf.ffab9cb8eb84fc03 >>> 3 109 108 .gnu.lto_.jmpfuncs.ffab9cb8eb84fc03 >>> 4 217 62 .gnu.lto_.inline.ffab9cb8eb84fc03 >>> 5 279 21 .gnu.lto_.pureconst.ffab9cb8eb84fc03 >>> 6 300 194 .gnu.lto_koo.ffab9cb8eb84fc03 >>> 7 494 389 .gnu.lto_gain.ffab9cb8eb84fc03 >>> 8 883 77 .gnu.lto_.symbol_nodes.ffab9cb8eb84fc03 >>> 9 960 15 .gnu.lto_.refs.ffab9cb8eb84fc03 >>> 10 975 966 .gnu.lto_.decls.ffab9cb8eb84fc03 >>> 11 1941 58 .gnu.lto_.symtab.ffab9cb8eb84fc03 >>> 12 1999 76 .gnu.lto_.opts >>> >>> >>> I have pushed the changes to the repo. Please find the diff file >>> attached herewith. >>> >>> Regards, >>> >>> Hrishikesh >>> >>> On Thu, Jul 5, 2018 at 12:24 AM, Hrishikesh Kulkarni >>> <hrishikeshpa...@gmail.com> wrote: >>>> Hi, >>>> >>>> I have: >>>> tried to do all the formatting and style corrections according to >>>> output given by check_GNU_style.py >>>> removed '-fdump-lto' prefix from the command line options >>>> added few necessary comments in the code >>>> added command line option -type-stats from previous branch (added a >>>> new percentage column to it) >>>> for e.g. >>>> integer_type 3 25.00% >>>> pointer_type 3 25.00% >>>> array_type 1 8.33% >>>> function_type 5 41.67% >>>> I have pushed the changes to the repo. Please find the diff file >>>> attached herewith. >>>> >>>> Regards, >>>> >>>> Hrishikesh >>>> >>>> On Tue, Jul 3, 2018 at 6:39 PM, Hrishikesh Kulkarni >>>> <hrishikeshpa...@gmail.com> wrote: >>>>> Hi, >>>>> >>>>> Thanks for suggestions. I have started incorporating them. As a first: >>>>> >>>>> I have added command line options: >>>>> -print-size to print the size of functions and variables >>>>> size of variables is in bits and size of functions is represented as >>>>> number of basic blocks. >>>>> >>>>> -print-value to print the value of initialization of global variables. >>>>> >>>>> -size-sort to sort the symbol names according to the size. >>>>> >>>>> for example command line options: >>>>> >>>>> ../stage1-build/gcc/lto-dump test_hello.o -fdump-lto-list -print-size >>>>> -print-value -size-sort >>>>> >>>>> the dump is: >>>>> >>>>> Symbol Table >>>>> Name Type Visibility Size Value >>>>> >>>>> printf function default 0 >>>>> main function default 3 >>>>> foo function default 3 >>>>> bar function default 6 >>>>> >>>>> z variable default 8 97 >>>>> k variable default 32 5 >>>>> p variable default 32 >>>>> 4.400000095367431640625e+0 >>>>> >>>>> I have also tried to make memory allocation dynamic to the best of my >>>>> knowledge. >>>>> I have pushed the changes to the repo. Please find the diff file >>>>> attached herewith. >>>>> >>>>> Regards, >>>>> >>>>> Hrishikesh >>>>> >>>>> >>>>> On Fri, Jun 29, 2018 at 12:55 PM, Martin Liška <mli...@suse.cz> wrote: >>>>>> On 06/27/2018 10:06 PM, Hrishikesh Kulkarni wrote: >>>>>>> Hi, >>>>>>> >>>>>>> I have added new command line options: >>>>>>> -no-demangle -> for the default non demangled output >>>>>>> -no-sort -> for the list of symbols in order of their occurrence >>>>>>> -alpha-sort -> for the list of symbols in their alphabetical order >>>>>>> -reverse-sort -> for the list of symbols in reversed order >>>>>>> -defined-only -> for only the defined symbols >>>>>> >>>>>> Hi. >>>>>> >>>>>> Good progress. >>>>>> >>>>>>> >>>>>>> for example: >>>>>>> >>>>>>> ../stage1-build/gcc/lto-dump test_hello.o -fdump-lto-list -alpha-sort >>>>>>> -demangle -defined-only -reverse-sort >>>>>> >>>>>> Now as you have a separate tool (lto-dump), you can strip 'fdump-lto' >>>>>> prefix >>>>>> from the older options. >>>>>> >>>>>>> >>>>>>> will dump >>>>>>> >>>>>>> Symbol Table >>>>>>> Name Type Visibility Size >>>>>>> main function default >>>>>>> k variable default >>>>>>> foo function default >>>>>>> bar function default >>>>>>> >>>>>>> It is a reversed alphabetical order of demangled symbol names which >>>>>>> have been defined(hence printf excluded). >>>>>>> Along with this I have also added all previous progress with reference >>>>>>> to symbol table to the new branch. >>>>>>> >>>>>>> For further options to add like -size-sort and -print-size I tried to >>>>>>> access size of the symbol with symtab node using >>>>>>> TREE_INT_CST_LOW(DECL_SIZE(node->decl)); >>>>>>> but I am unable to do so. >>>>>>> So how should I proceed with it? >>>>>> >>>>>> Sent advises via instant messaging. >>>>>> >>>>>> Martin >>>>>> >>>>>>> >>>>>>> Please find the diff file attached herewith. I have also pushed the >>>>>>> changes to the new branch. >>>>>>> >>>>>>> Please advise, >>>>>>> >>>>>>> Hrishikesh> >>>>>>> On Wed, Jun 27, 2018 at 1:15 AM, Hrishikesh Kulkarni >>>>>>> <hrishikeshpa...@gmail.com> wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> I have created another branch lto-dump-tool-improved as suggested. >>>>>>>> I have applied the patch for separation to lto-dump binary, made a few >>>>>>>> necessary changes in other files and it is running successfully. >>>>>>>> I will keep on adding previous work to this branch incrementally. >>>>>>>> >>>>>>>> Please find the diff file attached for dumping of TREE statistics and >>>>>>>> GIMPLE statistics. >>>>>>>> >>>>>>>> for example: >>>>>>>> (after configuring with --enable-gather-detailed-mem-stats) >>>>>>>> -fdump-lto-gimple-stats will dump >>>>>>>> GIMPLE statements >>>>>>>> Kind Stmts Bytes >>>>>>>> --------------------------------------- >>>>>>>> assignments 0 0 >>>>>>>> phi nodes 0 0 >>>>>>>> conditionals 0 0 >>>>>>>> everything else 0 0 >>>>>>>> --------------------------------------- >>>>>>>> Total 0 0 >>>>>>>> --------------------------------------- >>>>>>>> >>>>>>>> -fdump-lto-tree-stats will dump >>>>>>>> >>>>>>>> Tree Statistics >>>>>>>> >>>>>>>> Kind Nodes Bytes >>>>>>>> ---------------------------------------- >>>>>>>> decls 4327 932672 >>>>>>>> types 1531 257208 >>>>>>>> blocks 0 0 >>>>>>>> stmts 0 0 >>>>>>>> refs 0 0 >>>>>>>> exprs 4 128 >>>>>>>> constants 82 2060 >>>>>>>> identifiers 4430 177200 >>>>>>>> vecs 16 28544 >>>>>>>> binfos 0 0 >>>>>>>> ssa names 0 0 >>>>>>>> constructors 0 0 >>>>>>>> random kinds 7301 291952 >>>>>>>> lang_decl kinds 0 0 >>>>>>>> lang_type kinds 0 0 >>>>>>>> omp clauses 0 0 >>>>>>>> ---------------------------------------- >>>>>>>> Total 17691 1689764 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Please advise, >>>>>>>> >>>>>>>> Hrishikesh >>>>>>>> >>>>>>>> On Wed, Jun 27, 2018 at 1:00 AM, Hrishikesh Kulkarni >>>>>>>> <hrishikeshpa...@gmail.com> wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> I have created another branch lto-dump-tool-improved as suggested. >>>>>>>>> I have applied the patch for separation to lto-dump binary, made a few >>>>>>>>> necessary changes in other files and it is running successfully. >>>>>>>>> I will keep on adding previous work to this branch incrementally. >>>>>>>>> >>>>>>>>> Please find the diff file attached for dumping of TREE statistics and >>>>>>>>> GIMPLE >>>>>>>>> statistics. >>>>>>>>> >>>>>>>>> for example: >>>>>>>>> (after configuring with --enable-gather-detailed-mem-stats) >>>>>>>>> -fdump-lto-gimple-stats will dump >>>>>>>>> GIMPLE statements >>>>>>>>> Kind Stmts Bytes >>>>>>>>> --------------------------------------- >>>>>>>>> assignments 0 0 >>>>>>>>> phi nodes 0 0 >>>>>>>>> conditionals 0 0 >>>>>>>>> everything else 0 0 >>>>>>>>> --------------------------------------- >>>>>>>>> Total 0 0 >>>>>>>>> --------------------------------------- >>>>>>>>> >>>>>>>>> -fdump-lto-tree-stats will dump >>>>>>>>> >>>>>>>>> Tree Statistics >>>>>>>>> >>>>>>>>> Kind Nodes Bytes >>>>>>>>> ---------------------------------------- >>>>>>>>> decls 4327 932672 >>>>>>>>> types 1531 257208 >>>>>>>>> blocks 0 0 >>>>>>>>> stmts 0 0 >>>>>>>>> refs 0 0 >>>>>>>>> exprs 4 128 >>>>>>>>> constants 82 2060 >>>>>>>>> identifiers 4430 177200 >>>>>>>>> vecs 16 28544 >>>>>>>>> binfos 0 0 >>>>>>>>> ssa names 0 0 >>>>>>>>> constructors 0 0 >>>>>>>>> random kinds 7301 291952 >>>>>>>>> lang_decl kinds 0 0 >>>>>>>>> lang_type kinds 0 0 >>>>>>>>> omp clauses 0 0 >>>>>>>>> ---------------------------------------- >>>>>>>>> Total 17691 1689764 >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Please advise, >>>>>>>>> >>>>>>>>> Hrishikesh >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Jun 22, 2018 at 2:29 PM, Martin Liška <mli...@suse.cz> wrote: >>>>>>>>>> >>>>>>>>>> On 06/18/2018 10:45 AM, Martin Jambor wrote: >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> On Sun, Jun 17 2018, Hrishikesh Kulkarni wrote: >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> I am trying to isolate the dump tool into real lto-dump tool. I >>>>>>>>>>>> have >>>>>>>>>>>> started with the copy&paste of lto.c into lto-dump.c and done the >>>>>>>>>>>> changes to Make-lang.in and config-lang.in suggested by Martin >>>>>>>>>>>> (patch >>>>>>>>>>>> attached). However when I try to build, I get the following error: >>>>>>>>>>>> >>>>>>>>>>>> In file included from ../../gcc/gcc/lto/lto-dump.c:24:0: >>>>>>>>>>>> >>>>>>>>>>>> ../../gcc/gcc/coretypes.h:397:24: fatal error: insn-modes.h: No >>>>>>>>>>>> such >>>>>>>>>>>> >>>>>>>>>>>> file or directory >>>>>>>>>>>> >>>>>>>>>>>> compilation terminated. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I am unable to find the missing dependencies and would be grateful >>>>>>>>>>>> for >>>>>>>>>>>> suggestions on how to resolve the issue. >>>>>>>>>>> >>>>>>>>>>> insn-modes.h is one of header files which are generated at build >>>>>>>>>>> time, >>>>>>>>>>> you will find it in the gcc subdirectory of your build directory (as >>>>>>>>>>> opposed to the source directory). >>>>>>>>>>> >>>>>>>>>>> Martin >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi. >>>>>>>>>> >>>>>>>>>> There's patch that works for me. >>>>>>>>>> Needed dependency is here: >>>>>>>>>> >>>>>>>>>> +lto/lto-dump.o: $(LTO_EXE) >>>>>>>>>> >>>>>>>>>> It's bit artificial, but for now it works. Please start working >>>>>>>>>> on separation of dump infrastructure to lto-dump.c. You'll need >>>>>>>>>> to factor out common code shared in between lto.c and lto-dump.c. >>>>>>>>>> >>>>>>>>>> Martin >>>>>>>>> >>>>>>>>> >>>>>> >