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. */