On 07/12/2018 08:05 PM, Hrishikesh Kulkarni wrote:
> Hi,
> 
> I have added command line options:
> 
> -body=
> To dump gimple body (TDF_NONE) of specific function.
> 
> -optimized-blocks=
> To dump gimple body (TDF_BLOCKS) of specific function.
> 
> -optimized-stats=
> To dump gimple body (TDF_STATS) of specific function.
> 
> -optimized-vops=
> To dump gimple body (TDF_VOPS) of specific function.

Hi.

Thanks for it. However I would expect something more smart:
-optimized=[vops,stats,block]. Note that you should do similar
what's done in: gcc/dumpfile.c

int
gcc::dump_manager::
dump_switch_p_1 (const char *arg, struct dump_file_info *dfi, bool doglob)

that will automatically parse   dump_flags_t flags;

Then the copy&parse will not be needed.

> 
> for example:
> 
> -body=foo  will dump
> 
> Gimple body of function: foo
> foo (int a, int b)
> {
>   <bb 2> [local count: 1073741825]:
>   _3 = a_1(D) + b_2(D);
>   return _3;
> 
> }
> 
> 
> -optimized-blocks=foo  will dump
> 
> Gimple body of function: foo
> foo (int a, int b)
> {
> ;;   basic block 2, loop depth 0
> ;;    pred:       ENTRY
>   _3 = a_1(D) + b_2(D);
>   return _3;
> ;;    succ:       EXIT
> 
> }
> 
> 
> -optimized-stats=foo  will dump
> 
> Gimple body of function: foo
> foo (int a, int b)
> {
>   <bb 2> [local count: 1073741825]:
>   _3 = a_1(D) + b_2(D);
>   return _3;
> 
> }
> 
> 
> -optimized-vops=foo  will dump
> 
> Gimple body of function: foo
> foo (int a, int b)
> {
>   <bb 2> [local count: 1073741825]:
>   _3 = a_1(D) + b_2(D);
>   # VUSE <.MEM_4(D)>
>   return _3;
> 
> }
> 
> I have pushed the changes to the current branch. Please find the diff
> file attached herewith.
> 
> I have tried to follow the coding conventions as far as possible in
> this patch. Please let me know if I am missing out something so that I
> can improve the same while refactoring and clean up as suggested in
> the previous mail.

As mentioned in the previous email, indentation level is 2. And every 8 spaces
are replaced with a tabular. In our patch, you use indentation level equal to
one tab, which results in indentation level 8.

Martin

> 
> Regards,
> 
> Hrishikesh
> 
> On Wed, Jul 11, 2018 at 12:10 AM, Hrishikesh Kulkarni
> <hrishikeshpa...@gmail.com> wrote:
>> 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
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>

Reply via email to