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 <mli...@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 <mli...@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
>>>> <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
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>
>>>
>
diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
index 0f16d4f..531f912 100644
--- a/gcc/dumpfile.c
+++ b/gcc/dumpfile.c
@@ -30,6 +30,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "langhooks.h"
 
+#include "cgraph.h"
+
 /* If non-NULL, return one past-the-end of the matching SUBPART of
    the WHOLE string.  */
 #define skip_leading_substring(whole,  part) \
@@ -898,6 +900,26 @@ dump_switch_p (const char *arg)
   return any;
 }
 
+int
+gcc::dump_manager::
+dump_body_p (const char *arg)
+{
+  struct dump_file_info dfi;
+  dfi.pflags = 0;
+  dump_switch_p_1 (arg, &dfi, false);
+  cgraph_node *cnode;
+  fprintf(stderr, "%d\n", dfi.pflags);
+  FOR_EACH_FUNCTION (cnode)
+  {
+    if (cnode->definition && !strcmp (flag_body, cnode->name ()))
+    {
+      fprintf (stderr, "Gimple body of function: %s\n", cnode->name ());
+      cnode->get_untransformed_body ();
+      debug_function (cnode->decl, dfi.pflags);
+    }
+  }
+}
+
 /* Parse ARG as a -fopt-info switch and store flags, optgroup_flags
    and filename.  Return non-zero if it is a recognized switch.  */
 
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index 21803a6..04a103d 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -239,6 +239,9 @@ public:
   int
   dump_switch_p (const char *arg);
 
+  int
+  dump_body_p (const char *arg); 
+
   /* Start a dump for PHASE. Store user-supplied dump flags in
      *FLAG_PTR.  Return the number of streams opened.  Set globals
      DUMP_FILE, and ALT_DUMP_FILE to point to the opened streams, and
diff --git a/gcc/lto/lang.opt b/gcc/lto/lang.opt
index 26770d5..78a88a8 100644
--- a/gcc/lto/lang.opt
+++ b/gcc/lto/lang.opt
@@ -114,9 +114,12 @@ objects
 LTO Var(flag_lto_dump_objects)
 Dump the details of LTO objects.
 
-optimized=
+fdump-optimized=
 LTO Driver RejectNegative Joined Var(flag_optimized)
 
+fdump-body=
+LTO Driver RejectNegative Joined Var(flag_body)
+
 type-stats
 LTO Var(flag_lto_dump_type_stats)
 Dump the statistics of tree types.
diff --git a/gcc/lto/lto-dump.c b/gcc/lto/lto-dump.c
index 1c83ab5..2f6b6b1 100644
--- a/gcc/lto/lto-dump.c
+++ b/gcc/lto/lto-dump.c
@@ -219,25 +219,28 @@ dump_symbol ()
 void
 dump_body ()
 {
-  dump_flags_t flags = TDF_NONE;
-  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;
-  cgraph_node *cnode;
-  FOR_EACH_FUNCTION (cnode)
-  {
-    if (cnode->definition)
-    {
-      fprintf (stderr, "Gimple body of function: %s\n", cnode->name ());
-      cnode->get_untransformed_body ();
-      debug_function (cnode->decl, flags);
-    }
-  }
+	g->get_dumps ()->dump_body_p (flag_optimized);
+
+  
+  // dump_flags_t flags = TDF_NONE;
+  // 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;
+  // cgraph_node *cnode;
+  // FOR_EACH_FUNCTION (cnode)
+  // {
+  //   if (cnode->definition)
+  //   {
+  //     fprintf (stderr, "Gimple body of function: %s\n", cnode->name ());
+  //     cnode->get_untransformed_body ();
+  //     debug_function (cnode->decl, flags);
+  //   }
+  // }
 }
 
 /* Number of parallel tasks to run, -1 if we want to use GNU Make jobserver.  */

Reply via email to