This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [GSOC] LTO dump tool project


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
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>
diff --git a/gcc/lto/lang.opt b/gcc/lto/lang.opt
index 6c014ae..99f0fea 100644
--- a/gcc/lto/lang.opt
+++ b/gcc/lto/lang.opt
@@ -105,6 +105,10 @@ Display the symbols in order of occurence.
 symbol=
 LTO Driver RejectNegative Joined Var(flag_lto_dump_symbol)
 
+objects
+LTO Var(flag_lto_dump_objects)
+Dump the details of LTO objects.
+
 fresolution=
 LTO Joined
 The resolution file.
diff --git a/gcc/lto/lto-dump.c b/gcc/lto/lto-dump.c
index b0f10e6..8e9c7f6 100644
--- a/gcc/lto/lto-dump.c
+++ b/gcc/lto/lto-dump.c
@@ -2347,6 +2347,17 @@ lto_file_read (lto_file *file, FILE *resolution_file, int *count)
   memset (&section_list, 0, sizeof (struct lto_section_list)); 
   section_hash_table = lto_obj_build_section_table (file, &section_list);
 
+  /* Dump the details of LTO objects.  */
+  if (flag_lto_dump_objects)
+  {
+    int i=0;
+    fprintf (stderr, "\n\t\t\tLTO object name: %s\n", file->filename);
+    fprintf (stderr, "\nNO.\t\tOFFSET\t\tSIZE\t\tSECTION NAME\n\n");
+    for (section = section_list.first; section != NULL; section = section->next)
+      fprintf (stderr, "%d\t\t%d\t\t%d\t\t%s\n",
+	      ++i, section->start, section->len, section->name);
+  }
+
   /* Find all sub modules in the object and put their sections into new hash
      tables in a splay tree. */
   file_ids = lto_splay_tree_new ();

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]