[GSOC] LTO dump tool project

Hrishikesh Kulkarni hrishikeshparag@gmail.com
Tue Jul 31 06:25:00 GMT 2018


Hi,

I have added command line options
-fdump-level=
-fdump-body=
to dump specific optimized body of specified function.

I have made the necessary changes as suggested to avoid manual parsing.

I have pushed the changes to the branch lto-dump-tool-v4. Please find
the diff file attached herewith.

Regards,

Hrishikesh

On Sat, Jul 28, 2018 at 8:47 PM, Hrishikesh Kulkarni
<hrishikeshparag@gmail.com> wrote:
> Hi,
>
> I have added command line options
> -gimple-stats to dump GIMPLE statistics
> -tree-stats to dump TREE statistics
>
> I have pushed the changes to the new branch. Please find the diff file
> attached herewith.
>
> Regards,
>
> Hrishikesh
>
> On Fri, Jul 27, 2018 at 11:15 PM, Hrishikesh Kulkarni
> <hrishikeshparag@gmail.com> wrote:
>> Hi,
>>
>> I have added command line option -type-stats to the new branch which
>> dumps the statistics of tree types.
>> As suggested hash_map is used from hash-map.h.
>>
>> Please find the patch attached herewith.
>>
>> Regards,
>>
>> Hrishikesh
>>
>> On Tue, Jul 24, 2018 at 10:42 PM, Hrishikesh Kulkarni
>> <hrishikeshparag@gmail.com> wrote:
>>> Hi,
>>>
>>> Please find the patch for dumping details of LTO objects attached herewith.
>>> I have also added the changes to the new branch (lto-dump-tool-v4).
>>>
>>> Regards,
>>>
>>> Hrishikesh
>>>
>>> On Mon, Jul 23, 2018 at 10:28 PM, Hrishikesh Kulkarni
>>> <hrishikeshparag@gmail.com> wrote:
>>>> Hi,
>>>>
>>>> Please find the patch for dumping detail information of a specified
>>>> symbol attached herewith.
>>>> I have also pushed the changes to the new branch (lto-dump-tool-v4).
>>>>
>>>> Regards,
>>>>
>>>> Hrishikesh
>>>>
>>>> On Sun, Jul 22, 2018 at 2:39 AM, Hrishikesh Kulkarni
>>>> <hrishikeshparag@gmail.com> wrote:
>>>>> Hi,
>>>>>
>>>>> Please find the patch for dumping list of symbols(incorporating your
>>>>> suggestions) attached herewith.
>>>>> I have created a new branch lto-dump-tool-v4 and pushed the changes to it.
>>>>>
>>>>> Command line options used are:
>>>>> -list
>>>>> -demangle
>>>>> -no-demangle
>>>>> -defined-only
>>>>> -print-value
>>>>> -alpha-sort
>>>>> -size-sort
>>>>> -reverse-sort
>>>>> -no-sort
>>>>>
>>>>> Mean while I am working on doing the parsing using dump_switch_p_1
>>>>> infrastructure.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Hrishikesh
>>>>>
>>>>> On Wed, Jul 18, 2018 at 11:14 PM, Hrishikesh Kulkarni
>>>>> <hrishikeshparag@gmail.com> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I tried doing as suggested
>>>>>>
>>>>>> +  dfi.pflags = 0;
>>>>>> +  dump_switch_p_1 (arg, &dfi, false);
>>>>>>
>>>>>> 1.>  the value of dfi.pflags is not changing even if different command
>>>>>> line options are passed like -fdump-blocks or -fdump-vops
>>>>>>
>>>>>> 2.> what is the significance of bool doglob?
>>>>>>
>>>>>> Please find the diff file attached herewith.
>>>>>>
>>>>>> Please advise.
>>>>>>
>>>>>> Hrishikesh
>>>>>>
>>>>>> On Tue, Jul 17, 2018 at 6:30 PM, Martin Liška <mliska@suse.cz> wrote:
>>>>>>> On 07/16/2018 05:44 PM, Hrishikesh Kulkarni wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> As suggested I have created command line option -optimized=[none,
>>>>>>>> blocks, stats, vops] to dump the respective gimple bodies of all
>>>>>>>> functions.
>>>>>>>>
>>>>>>>> for example:
>>>>>>>>
>>>>>>>> -optimized=blocks will dump
>>>>>>>
>>>>>>>
>>>>>>> Hi.
>>>>>>>
>>>>>>> The name does not make much sense and you removed option that
>>>>>>> limited function name. So instead I would create something like:
>>>>>>>
>>>>>>> -fdump-body=foo
>>>>>>> and
>>>>>>> -fdump-level=optimized
>>>>>>>
>>>>>>> I don't like how you do manual parsing in:
>>>>>>> +  if (!strcmp (flag_optimized, "blocks"))
>>>>>>> +    flags = TDF_BLOCKS;
>>>>>>> +  else if (!strcmp (flag_optimized, "stats"))
>>>>>>> +    flags = TDF_STATS;
>>>>>>> +  else if (!strcmp (flag_optimized, "vops"))
>>>>>>> +    flags = TDF_VOPS;
>>>>>>> +  else if (!strcmp (flag_optimized, "none"))
>>>>>>> +    flags = TDF_NONE;
>>>>>>>
>>>>>>> As I wrote in previous email, take a look how it's done
>>>>>>> in dump_switch_p_1 (const char *arg, struct dump_file_info *dfi, bool doglob)
>>>>>>> and reuse that functionality.
>>>>>>>
>>>>>>> Martin
>>>>>>>
>>>>>>>>
>>>>>>>> Gimple body of function: main
>>>>>>>> main ()
>>>>>>>> {
>>>>>>>> ;;   basic block 2, loop depth 0
>>>>>>>> ;;    pred:       ENTRY
>>>>>>>>   printf ("%d", 8);
>>>>>>>>   return 0;
>>>>>>>> ;;    succ:       EXIT
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> Gimple body of function: bar
>>>>>>>> bar (int a, int b, int cond)
>>>>>>>> {
>>>>>>>>   int ret;
>>>>>>>>
>>>>>>>> ;;   basic block 2, loop depth 0
>>>>>>>> ;;    pred:       ENTRY
>>>>>>>>   if (cond_2(D) != 0)
>>>>>>>>     goto <bb 3>; [50.00%]
>>>>>>>>   else
>>>>>>>>     goto <bb 4>; [50.00%]
>>>>>>>> ;;    succ:       3
>>>>>>>> ;;                4
>>>>>>>>
>>>>>>>> ;;   basic block 3, loop depth 0
>>>>>>>> ;;    pred:       2
>>>>>>>>   ret_5 = a_3(D) + b_4(D);
>>>>>>>>   goto <bb 5>; [100.00%]
>>>>>>>> ;;    succ:       5
>>>>>>>>
>>>>>>>> ;;   basic block 4, loop depth 0
>>>>>>>> ;;    pred:       2
>>>>>>>>   ret_6 = a_3(D) - b_4(D);
>>>>>>>> ;;    succ:       5
>>>>>>>>
>>>>>>>> ;;   basic block 5, loop depth 0
>>>>>>>> ;;    pred:       3
>>>>>>>> ;;                4
>>>>>>>>   # ret_1 = PHI <ret_5(3), ret_6(4)>
>>>>>>>>   return ret_1;
>>>>>>>> ;;    succ:       EXIT
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> I have pushed the changes to the repo. Please find the diff file
>>>>>>>> attached herewith.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Hrishikesh
>>>>>>>>
>>>>>>>> On Fri, Jul 13, 2018 at 2:47 PM, Martin Liška <mliska@suse.cz> wrote:
>>>>>>>>> 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
>>>>>>>>>> <hrishikeshparag@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 <mliska@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
>>>>>>>>>>>>> <hrishikeshparag@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
>>>>>>>>>>>>>> <hrishikeshparag@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
>>>>>>>>>>>>>>> <hrishikeshparag@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 <mliska@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
>>>>>>>>>>>>>>>>>> <hrishikeshparag@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
>>>>>>>>>>>>>>>>>>> <hrishikeshparag@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 <mliska@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
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: optimized_body.diff
Type: text/x-patch
Size: 3420 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20180731/95d63618/attachment.bin>


More information about the Gcc mailing list