[GSOC] LTO dump tool project
Hrishikesh Kulkarni
hrishikeshparag@gmail.com
Thu Jul 5 17:11:00 GMT 2018
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: objects.diff
Type: text/x-patch
Size: 1306 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20180705/6fc367f0/attachment.bin>
More information about the Gcc
mailing list