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 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/lto/lang.opt b/gcc/lto/lang.opt index 7c671c0..26770d5 100644 --- a/gcc/lto/lang.opt +++ b/gcc/lto/lang.opt @@ -114,17 +114,8 @@ objects LTO Var(flag_lto_dump_objects) Dump the details of LTO objects. -body= -LTO Driver RejectNegative Joined Var(flag_lto_dump_body) - -optimized-blocks= -LTO Driver RejectNegative Joined Var(flag_tree_optimized_blocks) - -optimized-stats= -LTO Driver RejectNegative Joined Var(flag_tree_optimized_stats) - -optimized-vops= -LTO Driver RejectNegative Joined Var(flag_tree_optimized_vops) +optimized= +LTO Driver RejectNegative Joined Var(flag_optimized) type-stats LTO Var(flag_lto_dump_type_stats) diff --git a/gcc/lto/lto-dump.c b/gcc/lto/lto-dump.c index 623c825..1c83ab5 100644 --- a/gcc/lto/lto-dump.c +++ b/gcc/lto/lto-dump.c @@ -215,64 +215,29 @@ dump_symbol () fprintf (stderr, "\n"); } -/* Dump gimple body (TDF_NONE) of specific function. */ +/* Dump specific gimple bodies of all functions. */ void -dump_body_none () -{ - fprintf (stderr, "Gimple body of function: %s\n", - flag_lto_dump_body); - cgraph_node *cnode; - FOR_EACH_FUNCTION (cnode) - if (!strcmp (cnode->name (), flag_lto_dump_body)) - { - cnode->get_untransformed_body (); - debug_function (cnode->decl, 0); - } -} - -/* Dump gimple body (TDF_BLOCKS) of specific function. */ -void -dump_body_blocks () -{ - fprintf (stderr, "Gimple body of function: %s\n", - flag_tree_optimized_blocks); - cgraph_node *cnode; - FOR_EACH_FUNCTION (cnode) - if (!strcmp (cnode->name (), flag_tree_optimized_blocks)) - { - cnode->get_untransformed_body (); - debug_function (cnode->decl, TDF_BLOCKS); - } -} - -/* Dump gimple body (TDF_STATS) of specific function. */ -void -dump_body_stats () -{ - fprintf (stderr, "Gimple body of function: %s\n", - flag_tree_optimized_stats); - cgraph_node *cnode; - FOR_EACH_FUNCTION (cnode) - if (!strcmp (cnode->name (), flag_tree_optimized_stats)) - { - cnode->get_untransformed_body (); - debug_function (cnode->decl, TDF_STATS); - } -} - -/* Dump gimple body (TDF_VOPS) of specific function. */ -void -dump_body_vops () -{ - fprintf (stderr, "Gimple body of function: %s\n", - flag_tree_optimized_vops); - cgraph_node *cnode; - FOR_EACH_FUNCTION (cnode) - if (!strcmp (cnode->name (), flag_tree_optimized_vops)) - { - cnode->get_untransformed_body (); - debug_function (cnode->decl, TDF_VOPS); - } +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); + } + } } /* Number of parallel tasks to run, -1 if we want to use GNU Make jobserver. */ @@ -3640,21 +3605,9 @@ lto_main (void) if (flag_lto_dump_symbol) dump_symbol (); - /* Dump gimple body (TDF_NONE) of specific function. */ - if (flag_lto_dump_body) - dump_body_none (); - - /* Dump gimple body (TDF_BLOCKS) of specific function. */ - if (flag_tree_optimized_blocks) - dump_body_blocks (); - - /* Dump gimple body (TDF_STATS) of specific function. */ - if (flag_tree_optimized_stats) - dump_body_stats (); - - /* Dump gimple body (TDF_VOPS) of specific function. */ - if (flag_tree_optimized_vops) - dump_body_vops (); + /* Dump specfic gimple body of all functions. */ + if (flag_optimized) + dump_body (); timevar_stop (TV_PHASE_STREAM_IN);