This is the mail archive of the gcc-patches@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]

Add lto-streamer-out dump file


Hi,
this patch adds lto-streamer-out dump file which journal what is streamed
into the output file and why. For example compiling:

#include <stdio.h>
main()
{
  fprintf (stderr, "Error\n");
}

We get

Creating compressed section .gnu.lto_.profile.3e57b5d44bc7b5b7
Creating output block for icf
Creating compressed section .gnu.lto_.icf.3e57b5d44bc7b5b7
Creating output block for jmpfuncs
    Streaming SCC of  <addr_expr 0x7ffff7287240>
     Streaming  <addr_expr 0x7ffff7287240>  to jmpfuncs
     Streaming  <string_cst 0x7ffff725ce00>  to jmpfuncs
     Encoding indexable  <array_type 0x7ffff7279b28>  as 0 
     Encoding indexable  <pointer_type 0x7ffff7279bd0>  as 1 
    Finished SCC of  <addr_expr 0x7ffff7287240>

    Streaming SCC of  <integer_cst 0x7ffff72816f0 0>
    Finished SCC of  <integer_cst 0x7ffff72816f0 0>

    Streaming SCC of  <integer_cst 0x7ffff7281270 6>
     Encoding indexable  <integer_type 0x7ffff70ff150 ssizetype>  as 2 
    Finished SCC of  <integer_cst 0x7ffff7281270 6>

Creating compressed section .gnu.lto_.jmpfuncs.3e57b5d44bc7b5b7
Creating output block for inline
Creating compressed section .gnu.lto_.inline.3e57b5d44bc7b5b7
Creating compressed section .gnu.lto_.pureconst.3e57b5d44bc7b5b7

Streaming body of main
Creating output block for function_body
    Streaming SCC of  <result_decl 0x7ffff70f4960 D.2398>
     Streaming  <result_decl 0x7ffff70f4960 D.2398>  to function_body
     Encoding indexable  <integer_type 0x7ffff70ff000 sizetype>  as 0 
     Encoding indexable  <integer_type 0x7ffff70ff0a8 bitsizetype>  as 1 
     Encoding indexable  <integer_type 0x7ffff70ff5e8 int>  as 2 
     Encoding indexable  <function_decl 0x7ffff7283500 main>  as 0 
    Finished SCC of  <result_decl 0x7ffff70f4960 D.2398>

    Streaming SCC of  <block 0x7ffff7216d80>
     Streaming  <block 0x7ffff7216d80>  to function_body
    Finished SCC of  <block 0x7ffff7216d80>

     Encoding indexable  <pointer_type 0x7ffff724e540>  as 3 
  Streaming gimple stmt stderr.0_1 = stderr;
    Streaming SCC of  <mem_ref 0x7ffff7282b68>
     Streaming  <mem_ref 0x7ffff7282b68>  to function_body
     Encoding indexable  <pointer_type 0x7ffff72853f0>  as 4 
     Streaming  <addr_expr 0x7ffff7287320>  to function_body
     Encoding indexable  <var_decl 0x7ffff72377e0 stderr>  as 0 
    Finished SCC of  <mem_ref 0x7ffff7282b68>

  Streaming gimple stmt fwrite ("Error\n", 1, 6, stderr.0_1);
    Streaming SCC of  <addr_expr 0x7ffff725cf20>
     Streaming  <addr_expr 0x7ffff725cf20>  to function_body
     Encoding indexable  <pointer_type 0x7ffff7285150>  as 5 
     Encoding indexable  <function_decl 0x7ffff7197300 __builtin_fwrite>  as 1 
    Finished SCC of  <addr_expr 0x7ffff725cf20>

    Streaming SCC of  <addr_expr 0x7ffff725ce20>
     Streaming  <addr_expr 0x7ffff725ce20>  to function_body
     Streaming  <string_cst 0x7ffff725ce00>  to function_body
     Encoding indexable  <array_type 0x7ffff7279b28>  as 6 
     Encoding indexable  <pointer_type 0x7ffff7279bd0>  as 7 
    Finished SCC of  <addr_expr 0x7ffff725ce20>

    Streaming SCC of  <integer_cst 0x7ffff7281270 6>
     Encoding indexable  <integer_type 0x7ffff70ff150 ssizetype>  as 8 
    Finished SCC of  <integer_cst 0x7ffff7281270 6>

     Encoding indexable  <function_type 0x7ffff718f9d8>  as 9 
  Streaming gimple stmt return 0;
Creating compressed section .gnu.lto_main.3e57b5d44bc7b5b7
Finished streaming main
     Encoding indexable  <function_decl 0x7ffff7283500 main>  as 0 
     Encoding indexable  <var_decl 0x7ffff72377e0 stderr>  as 0 
     Encoding indexable  <function_decl 0x7ffff7197300 __builtin_fwrite>  as 1 
Creating compressed section .gnu.lto_.symbol_nodes.3e57b5d44bc7b5b7
Creating compressed section .gnu.lto_.refs.3e57b5d44bc7b5b7
Creating output block for decls
Creating compressed section .gnu.lto_.decls.3e57b5d44bc7b5b7
Outputting global stream
 0:  <array_type 0x7ffff7279b28>
    Streaming SCC of  <array_type 0x7ffff7279b28>
     Streaming  <array_type 0x7ffff7279b28>  to decls
     Streaming  <integer_type 0x7ffff7279a80>  to decls
     Streaming  <integer_type 0x7ffff70ff3f0 char>  to decls
     Streaming  <identifier_node 0x7ffff70fe140 char>  to decls
    Finished SCC of  <array_type 0x7ffff7279b28>

 1:  <pointer_type 0x7ffff7279bd0>
    Streaming SCC of  <pointer_type 0x7ffff7279bd0>
     Streaming  <pointer_type 0x7ffff7279bd0>  to decls
    Finished SCC of  <pointer_type 0x7ffff7279bd0>

 2:  <integer_type 0x7ffff70ff150 ssizetype>
 0:  <function_decl 0x7ffff7283500 main>
    Streaming SCC of  <function_decl 0x7ffff7283500 main>
     Streaming  <function_decl 0x7ffff7283500 main>  to decls
     Streaming  <optimization_node 0x7ffff70e8000>  to decls
     Streaming  <target_option_node 0x7ffff70e7018>  to decls
     Streaming  <identifier_node 0x7ffff7208fa0 main>  to decls
     Streaming  <translation_unit_decl 0x7ffff70f49d8 /home/hubicka/example.c>  to decls
     Streaming  <identifier_node 0x7ffff727a5a0 /home/hubicka/example.c>  to decls
     Streaming  <function_type 0x7ffff7279738>  to decls
     Streaming  <function_type 0x7ffff710b540>  to decls
    Finished SCC of  <function_decl 0x7ffff7283500 main>

 1:  <function_decl 0x7ffff7197300 __builtin_fwrite>
    Streaming SCC of  <function_decl 0x7ffff7197300 __builtin_fwrite>
     Streaming  <function_decl 0x7ffff7197300 __builtin_fwrite>  to decls
     Streaming  <identifier_node 0x7ffff7195320 fwrite>  to decls
     Streaming  <identifier_node 0x7ffff71952d0 __builtin_fwrite>  to decls
     Streaming  <function_type 0x7ffff718f9d8>  to decls
     Streaming  <tree_list 0x7ffff711f7a8>  to decls
     Streaming  <tree_list 0x7ffff711f780>  to decls
     Streaming  <tree_list 0x7ffff711f758>  to decls
     Streaming  <tree_list 0x7ffff711f730>  to decls
     Streaming  <tree_list 0x7ffff7193a28>  to decls
     Streaming  <identifier_node 0x7ffff710c910 nonnull>  to decls
    Finished SCC of  <function_decl 0x7ffff7197300 __builtin_fwrite>

 0:  <var_decl 0x7ffff72377e0 stderr>
    Streaming SCC of  <var_decl 0x7ffff72377e0 stderr>
     Streaming  <var_decl 0x7ffff72377e0 stderr>  to decls
     Streaming  <identifier_node 0x7ffff7261d20 stderr>  to decls
     Streaming  <pointer_type 0x7ffff724e540>  to decls
     Streaming  <record_type 0x7ffff7247930 _IO_FILE>  to decls
     Streaming  <field_decl 0x7ffff7255558 _unused2>  to decls
     Streaming  <identifier_node 0x7ffff7254910 _unused2>  to decls
     Streaming  <array_type 0x7ffff724e930>  to decls
     Streaming  <integer_type 0x7ffff724e888>  to decls
     Streaming  <field_decl 0x7ffff72554c0 _mode>  to decls
     Streaming  <identifier_node 0x7ffff72548c0 _mode>  to decls
     Streaming  <field_decl 0x7ffff7255428 __pad5>  to decls
     Streaming  <identifier_node 0x7ffff7254870 __pad5>  to decls
     Streaming  <integer_type 0x7ffff72107e0 size_t>  to decls
     Streaming  <identifier_node 0x7ffff723da50 size_t>  to decls
     Streaming  <field_decl 0x7ffff7255390 __pad4>  to decls
     Streaming  <identifier_node 0x7ffff7254820 __pad4>  to decls
     Streaming  <field_decl 0x7ffff72552f8 __pad3>  to decls
     Streaming  <identifier_node 0x7ffff72547d0 __pad3>  to decls
     Streaming  <field_decl 0x7ffff7255260 __pad2>  to decls
     Streaming  <identifier_node 0x7ffff7254780 __pad2>  to decls
     Streaming  <field_decl 0x7ffff72551c8 __pad1>  to decls
     Streaming  <identifier_node 0x7ffff7254730 __pad1>  to decls
     Streaming  <field_decl 0x7ffff7255130 _offset>  to decls
     Streaming  <identifier_node 0x7ffff72545f0 _offset>  to decls
     Streaming  <integer_type 0x7ffff72422a0 __off64_t>  to decls
     Streaming  <identifier_node 0x7ffff7243050 __off64_t>  to decls
     Streaming  <field_decl 0x7ffff7255098 _lock>  to decls
     Streaming  <identifier_node 0x7ffff72544b0 _lock>  to decls
     Streaming  <pointer_type 0x7ffff724e7e0>  to decls
     Streaming  <void_type 0x7ffff724e348 _IO_lock_t>  to decls
     Streaming  <identifier_node 0x7ffff72511e0 _IO_lock_t>  to decls
     Streaming  <field_decl 0x7ffff7255000 _shortbuf>  to decls
     Streaming  <identifier_node 0x7ffff72540a0 _shortbuf>  to decls
     Streaming  <array_type 0x7ffff724e738>  to decls
     Streaming  <integer_type 0x7ffff710ad20>  to decls
     Streaming  <field_decl 0x7ffff7252ed8 _vtable_offset>  to decls
     Streaming  <identifier_node 0x7ffff7254460 _vtable_offset>  to decls
     Streaming  <field_decl 0x7ffff7252e40 _cur_column>  to decls
     Streaming  <identifier_node 0x7ffff7254410 _cur_column>  to decls
     Streaming  <field_decl 0x7ffff7252da8 _old_offset>  to decls
     Streaming  <identifier_node 0x7ffff7254370 _old_offset>  to decls
     Streaming  <integer_type 0x7ffff72421f8 __off_t>  to decls
     Streaming  <identifier_node 0x7ffff7243000 __off_t>  to decls
     Streaming  <field_decl 0x7ffff7252d10 _flags2>  to decls
     Streaming  <identifier_node 0x7ffff7254320 _flags2>  to decls
     Streaming  <field_decl 0x7ffff7252c78 _fileno>  to decls
     Streaming  <identifier_node 0x7ffff7254280 _fileno>  to decls
     Streaming  <field_decl 0x7ffff7252be0 _chain>  to decls
     Streaming  <identifier_node 0x7ffff7254230 _chain>  to decls
     Streaming  <field_decl 0x7ffff7252b48 _markers>  to decls
     Streaming  <identifier_node 0x7ffff72541e0 _markers>  to decls
     Streaming  <pointer_type 0x7ffff724e498>  to decls
     Streaming  <record_type 0x7ffff724e3f0 _IO_marker>  to decls
     Streaming  <field_decl 0x7ffff72522f8 _pos>  to decls
     Streaming  <identifier_node 0x7ffff7251320 _pos>  to decls
     Streaming  <field_decl 0x7ffff7252260 _sbuf>  to decls
     Streaming  <identifier_node 0x7ffff72512d0 _sbuf>  to decls
     Streaming  <field_decl 0x7ffff72521c8 _next>  to decls
     Streaming  <identifier_node 0x7ffff7251280 _next>  to decls
     Streaming  <type_decl 0x7ffff7252130 D.1971>  to decls
     Streaming  <identifier_node 0x7ffff7251230 _IO_marker>  to decls
     Streaming  <field_decl 0x7ffff7252ab0 _IO_save_end>  to decls
     Streaming  <identifier_node 0x7ffff7251f50 _IO_save_end>  to decls
     Streaming  <pointer_type 0x7ffff710ae70>  to decls
     Streaming  <field_decl 0x7ffff7252a18 _IO_backup_base>  to decls
     Streaming  <identifier_node 0x7ffff7251f00 _IO_backup_base>  to decls
     Streaming  <field_decl 0x7ffff7252980 _IO_save_base>  to decls
     Streaming  <identifier_node 0x7ffff7251eb0 _IO_save_base>  to decls
     Streaming  <field_decl 0x7ffff72528e8 _IO_buf_end>  to decls
     Streaming  <identifier_node 0x7ffff7251e60 _IO_buf_end>  to decls
     Streaming  <field_decl 0x7ffff7252850 _IO_buf_base>  to decls
     Streaming  <identifier_node 0x7ffff7251e10 _IO_buf_base>  to decls
     Streaming  <field_decl 0x7ffff72527b8 _IO_write_end>  to decls
     Streaming  <identifier_node 0x7ffff7251dc0 _IO_write_end>  to decls
     Streaming  <field_decl 0x7ffff7252720 _IO_write_ptr>  to decls
     Streaming  <identifier_node 0x7ffff7251d70 _IO_write_ptr>  to decls
     Streaming  <field_decl 0x7ffff7252688 _IO_write_base>  to decls
     Streaming  <identifier_node 0x7ffff7251d20 _IO_write_base>  to decls
     Streaming  <field_decl 0x7ffff72525f0 _IO_read_base>  to decls
     Streaming  <identifier_node 0x7ffff7251cd0 _IO_read_base>  to decls
     Streaming  <field_decl 0x7ffff7252558 _IO_read_end>  to decls
     Streaming  <identifier_node 0x7ffff7251c80 _IO_read_end>  to decls
     Streaming  <field_decl 0x7ffff72524c0 _IO_read_ptr>  to decls
     Streaming  <identifier_node 0x7ffff7251c30 _IO_read_ptr>  to decls
     Streaming  <field_decl 0x7ffff7252428 _flags>  to decls
     Streaming  <identifier_node 0x7ffff7254140 _flags>  to decls
     Streaming  <type_decl 0x7ffff7249428 D.1950>  to decls
     Streaming  <identifier_node 0x7ffff7243a00 _IO_FILE>  to decls
     Streaming  <field_decl 0x7ffff7252260 _sbuf>  to decls
     Streaming  <record_type 0x7ffff724e3f0 _IO_marker>  to decls
     Streaming  <field_decl 0x7ffff72522f8 _pos>  to decls
     Streaming  <field_decl 0x7ffff72521c8 _next>  to decls
     Streaming  <pointer_type 0x7ffff724e498>  to decls
     Streaming  <type_decl 0x7ffff7252130 D.1971>  to decls
     Streaming  <pointer_type 0x7ffff724e540>  to decls
     Streaming  <record_type 0x7ffff7247930 _IO_FILE>  to decls
     Streaming  <field_decl 0x7ffff7255558 _unused2>  to decls
     Streaming  <field_decl 0x7ffff72554c0 _mode>  to decls
     Streaming  <field_decl 0x7ffff7255428 __pad5>  to decls
     Streaming  <field_decl 0x7ffff7255390 __pad4>  to decls
     Streaming  <field_decl 0x7ffff72552f8 __pad3>  to decls
     Streaming  <field_decl 0x7ffff7255260 __pad2>  to decls
     Streaming  <field_decl 0x7ffff72551c8 __pad1>  to decls
     Streaming  <field_decl 0x7ffff7255130 _offset>  to decls
     Streaming  <field_decl 0x7ffff7255098 _lock>  to decls
     Streaming  <field_decl 0x7ffff7255000 _shortbuf>  to decls
     Streaming  <field_decl 0x7ffff7252ed8 _vtable_offset>  to decls
     Streaming  <field_decl 0x7ffff7252e40 _cur_column>  to decls
     Streaming  <field_decl 0x7ffff7252da8 _old_offset>  to decls
     Streaming  <field_decl 0x7ffff7252d10 _flags2>  to decls
     Streaming  <field_decl 0x7ffff7252c78 _fileno>  to decls
     Streaming  <field_decl 0x7ffff7252be0 _chain>  to decls
     Streaming  <field_decl 0x7ffff7252b48 _markers>  to decls
     Streaming  <field_decl 0x7ffff7252ab0 _IO_save_end>  to decls
     Streaming  <field_decl 0x7ffff7252a18 _IO_backup_base>  to decls
     Streaming  <field_decl 0x7ffff7252980 _IO_save_base>  to decls
     Streaming  <field_decl 0x7ffff72528e8 _IO_buf_end>  to decls
     Streaming  <field_decl 0x7ffff7252850 _IO_buf_base>  to decls
     Streaming  <field_decl 0x7ffff72527b8 _IO_write_end>  to decls
     Streaming  <field_decl 0x7ffff7252720 _IO_write_ptr>  to decls
     Streaming  <field_decl 0x7ffff7252688 _IO_write_base>  to decls
     Streaming  <field_decl 0x7ffff72525f0 _IO_read_base>  to decls
     Streaming  <field_decl 0x7ffff7252558 _IO_read_end>  to decls
     Streaming  <field_decl 0x7ffff72524c0 _IO_read_ptr>  to decls
     Streaming  <field_decl 0x7ffff7252428 _flags>  to decls
     Streaming  <type_decl 0x7ffff7249428 D.1950>  to decls
    Finished SCC of  <var_decl 0x7ffff72377e0 stderr>

Outputting stream for main
 0:  <integer_type 0x7ffff70ff000 sizetype>
 1:  <integer_type 0x7ffff70ff0a8 bitsizetype>
 2:  <integer_type 0x7ffff70ff5e8 int>
 3:  <pointer_type 0x7ffff724e540>
 4:  <pointer_type 0x7ffff72853f0>
    Streaming SCC of  <pointer_type 0x7ffff72853f0>
     Streaming  <pointer_type 0x7ffff72853f0>  to decls
    Finished SCC of  <pointer_type 0x7ffff72853f0>

 5:  <pointer_type 0x7ffff7285150>
    Streaming SCC of  <pointer_type 0x7ffff7285150>
     Streaming  <pointer_type 0x7ffff7285150>  to decls
    Finished SCC of  <pointer_type 0x7ffff7285150>

 6:  <array_type 0x7ffff7279b28>
 7:  <pointer_type 0x7ffff7279bd0>
 8:  <integer_type 0x7ffff70ff150 ssizetype>
 9:  <function_type 0x7ffff718f9d8>
 0:  <function_decl 0x7ffff7283500 main>
 1:  <function_decl 0x7ffff7197300 __builtin_fwrite>
 0:  <var_decl 0x7ffff72377e0 stderr>
Creating section .gnu.lto_.symtab.3e57b5d44bc7b5b7
Creating section .gnu.lto_.opts

Bootstrapped/regtested x86_64-linux, plan to commit it later today if there
are no complains.

	* cgraph.c (cgraph_node::get_untransformed_body): Dump function
	bodies streamed in with -Q.
	* dumpfile.c (dump_files): Add lto-stream-out dump file.
	* dumpfile.h (tree_dump_index): Add lto_stream_out.
	* gimple-streamer-out.c: Include gimple-pretty-print.h
	(output_bb): Dump stmts streamed.
	* lto-section-out.c: Include print-tree.h
	(lto_begin_section): Dump sections created.
	(lto_output_decl_index): Dump decl encoded.
	* lto-streamer-out.c: Include print-tree.h
	(create_output_block): Dump output block created.
	(DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
	(output_function): Dump function output.
	(output_constructor): Dump constructor streamed.
	(write_global_stream): Output indexes encoded.
	(produce_asm_for_decls): Dump streams encoded.
	* lto-streamer.c (streamer_dump_file): New global var.
	* lto-streamer.h (streamer_dump_file): Declare.
	* passes.c (ipa_write_summaries): Initialize streamer dump.
	* varpool.c (varpool_node::get_constructor): Dump constructors streamed
	in.
Index: cgraph.c
===================================================================
--- cgraph.c	(revision 261542)
+++ cgraph.c	(working copy)
@@ -3543,6 +3543,8 @@ cgraph_node::get_untransformed_body (voi
 
   gcc_assert (DECL_STRUCT_FUNCTION (decl) == NULL);
 
+  if (!quiet_flag)
+    fprintf (stderr, " in:%s", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
   lto_input_function_body (file_data, this, data);
   lto_stats.num_function_bodies++;
   lto_free_section_data (file_data, LTO_section_function_body, name,
Index: dumpfile.c
===================================================================
--- dumpfile.c	(revision 261542)
+++ dumpfile.c	(working copy)
@@ -64,6 +64,7 @@ static struct dump_file_info dump_files[
   DUMP_FILE_INFO (".original", "tree-original", DK_tree, 0),
   DUMP_FILE_INFO (".gimple", "tree-gimple", DK_tree, 0),
   DUMP_FILE_INFO (".nested", "tree-nested", DK_tree, 0),
+  DUMP_FILE_INFO (".lto-stream-out", "ipa-lto-stream-out", DK_ipa, 0),
 #define FIRST_AUTO_NUMBERED_DUMP 1
 #define FIRST_ME_AUTO_NUMBERED_DUMP 4
 
Index: dumpfile.h
===================================================================
--- dumpfile.h	(revision 261542)
+++ dumpfile.h	(working copy)
@@ -33,6 +33,7 @@ enum tree_dump_index
   TDI_original,			/* dump each function before optimizing it */
   TDI_gimple,			/* dump each function after gimplifying it */
   TDI_nested,			/* dump each function after unnesting it */
+  TDI_lto_stream_out,		/* dump information about lto streaming */
 
   TDI_lang_all,			/* enable all the language dumps.  */
   TDI_tree_all,			/* enable all the GENERIC/GIMPLE dumps.  */
Index: gimple-streamer-out.c
===================================================================
--- gimple-streamer-out.c	(revision 261542)
+++ gimple-streamer-out.c	(working copy)
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3.
 #include "gimple-iterator.h"
 #include "cgraph.h"
 #include "value-prof.h"
+#include "gimple-pretty-print.h"
 
 /* Output PHI function PHI to the main stream in OB.  */
 
@@ -220,6 +221,11 @@ output_bb (struct output_block *ob, basi
 	{
 	  int region;
 	  gimple *stmt = gsi_stmt (bsi);
+	  if (streamer_dump_file)
+	    {
+	      fprintf (streamer_dump_file, "  Streaming gimple stmt ");
+	      print_gimple_stmt (streamer_dump_file, stmt, 0, TDF_SLIM);
+	    }
 
 	  output_gimple_stmt (ob, stmt);
 
Index: lto-streamer-out.c
===================================================================
--- lto-streamer-out.c	(revision 261542)
+++ lto-streamer-out.c	(working copy)
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.
 #include "gomp-constants.h"
 #include "debug.h"
 #include "omp-offload.h"
+#include "print-tree.h"
 
 
 static void lto_write_tree (struct output_block*, tree, bool);
@@ -65,6 +66,9 @@ struct output_block *
 create_output_block (enum lto_section_type section_type)
 {
   struct output_block *ob = XCNEW (struct output_block);
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "Creating output block for %s\n",
+	     lto_section_name [section_type]);
 
   ob->section_type = section_type;
   ob->decl_state = lto_get_out_decl_state ();
@@ -738,6 +742,14 @@ DFS::DFS_write_tree_body (struct output_
 
   enum tree_code code;
 
+  if (streamer_dump_file)
+    {
+      print_node_brief (streamer_dump_file, "    Streaming ",
+	 		expr, 4);
+      fprintf (streamer_dump_file, "  to %s\n",
+	       lto_section_name [ob->section_type]);
+    }
+
   code = TREE_CODE (expr);
 
   if (CODE_CONTAINS_STRUCT (code, TS_TYPED))
@@ -1635,6 +1647,13 @@ lto_output_tree (struct output_block *ob
 	 we stream out.  */
       gcc_assert (!in_dfs_walk);
 
+      if (streamer_dump_file)
+	{
+	  print_node_brief (streamer_dump_file, "   Streaming SCC of ",
+			    expr, 4);
+          fprintf (streamer_dump_file, "\n");
+	}
+
       /* Start the DFS walk.  */
       /* Save ob state ... */
       /* let's see ... */
@@ -1651,6 +1670,12 @@ lto_output_tree (struct output_block *ob
       streamer_write_uhwi (ob, ix);
       streamer_write_enum (ob->main_stream, LTO_tags, LTO_NUM_TAGS,
 			   lto_tree_code_to_tag (TREE_CODE (expr)));
+      if (streamer_dump_file)
+	{
+	  print_node_brief (streamer_dump_file, "   Finished SCC of ",
+			    expr, 4);
+          fprintf (streamer_dump_file, "\n\n");
+	}
       lto_stats.num_pickle_refs_output++;
     }
 }
@@ -2072,6 +2097,10 @@ output_function (struct cgraph_node *nod
   basic_block bb;
   struct output_block *ob;
 
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "\nStreaming body of %s\n",
+	     node->name ());
+
   function = node->decl;
   fn = DECL_STRUCT_FUNCTION (function);
   ob = create_output_block (LTO_section_function_body);
@@ -2190,6 +2219,9 @@ output_function (struct cgraph_node *nod
   produce_asm (ob, function);
 
   destroy_output_block (ob);
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "Finished streaming %s\n",
+	     node->name ());
 }
 
 /* Output the body of function NODE->DECL.  */
@@ -2200,6 +2232,10 @@ output_constructor (struct varpool_node
   tree var = node->decl;
   struct output_block *ob;
 
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "\nStreaming constructor of %s\n",
+	     node->name ());
+
   ob = create_output_block (LTO_section_function_body);
 
   clear_line_info (ob);
@@ -2216,6 +2252,9 @@ output_constructor (struct varpool_node
   produce_asm (ob, var);
 
   destroy_output_block (ob);
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "Finished streaming %s\n",
+	     node->name ());
 }
 
 
@@ -2485,6 +2524,12 @@ write_global_stream (struct output_block
   for (index = 0; index < size; index++)
     {
       t = lto_tree_ref_encoder_get_tree (encoder, index);
+      if (streamer_dump_file)
+	{
+          fprintf (streamer_dump_file, " %i:", (int)index);
+	  print_node_brief (streamer_dump_file, "", t, 4);
+          fprintf (streamer_dump_file, "\n");
+	}
       if (!streamer_tree_cache_lookup (ob->writer_cache, t, NULL))
 	stream_write_tree (ob, t, false);
     }
@@ -2860,12 +2905,18 @@ produce_asm_for_decls (void)
       }
 
   /* Write the global symbols.  */
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "Outputting global stream\n");
   lto_output_decl_state_streams (ob, out_state);
   num_fns = lto_function_decl_states.length ();
   for (idx = 0; idx < num_fns; idx++)
     {
       fn_out_state =
 	lto_function_decl_states[idx];
+      if (streamer_dump_file)
+        fprintf (streamer_dump_file, "Outputting stream for %s\n",
+		 IDENTIFIER_POINTER
+		    (DECL_ASSEMBLER_NAME (fn_out_state->fn_decl)));
       lto_output_decl_state_streams (ob, fn_out_state);
     }
 
Index: lto-streamer.c
===================================================================
--- lto-streamer.c	(revision 261542)
+++ lto-streamer.c	(working copy)
@@ -44,6 +44,8 @@ const char *section_name_prefix = LTO_SE
 /* Set when streaming LTO for offloading compiler.  */
 bool lto_stream_offload_p;
 
+FILE *streamer_dump_file;
+
 /* Return a string representing LTO tag TAG.  */
 
 const char *
Index: lto-streamer.h
===================================================================
--- lto-streamer.h	(revision 261542)
+++ lto-streamer.h	(working copy)
@@ -1221,5 +1221,6 @@ struct dref_entry {
 
 extern vec<dref_entry> dref_queue;
 
+extern FILE *streamer_dump_file;
 
 #endif /* GCC_LTO_STREAMER_H  */
Index: passes.c
===================================================================
--- passes.c	(revision 261542)
+++ passes.c	(working copy)
@@ -2641,6 +2641,9 @@ ipa_write_summaries (void)
   if ((!flag_generate_lto && !flag_generate_offload) || seen_error ())
     return;
 
+  gcc_assert (!dump_file);
+  streamer_dump_file = dump_begin (TDI_lto_stream_out, NULL);
+
   select_what_to_stream ();
 
   encoder = lto_symtab_encoder_new (false);
@@ -2683,6 +2686,11 @@ ipa_write_summaries (void)
   ipa_write_summaries_1 (compute_ltrans_boundary (encoder));
 
   free (order);
+  if (streamer_dump_file)
+    {
+      dump_end (TDI_lto_stream_out, streamer_dump_file);
+      streamer_dump_file = NULL;
+    }
 }
 
 /* Same as execute_pass_list but assume that subpasses of IPA passes
Index: varpool.c
===================================================================
--- varpool.c	(revision 261542)
+++ varpool.c	(working copy)
@@ -307,6 +307,8 @@ varpool_node::get_constructor (void)
 		 file_data->file_name,
 		 name);
 
+  if (!quiet_flag)
+    fprintf (stderr, " in:%s", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
   lto_input_variable_constructor (file_data, this, data);
   gcc_assert (DECL_INITIAL (decl) != error_mark_node);
   lto_stats.num_function_bodies++;
Index: lto-section-out.c
===================================================================
--- lto-section-out.c	(revision 261542)
+++ lto-section-out.c	(working copy)
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.
 #include "data-streamer.h"
 #include "langhooks.h"
 #include "lto-compress.h"
+#include "print-tree.h"
 
 static vec<lto_out_decl_state_ptr> decl_state_stack;
 
@@ -66,6 +67,9 @@ lto_begin_section (const char *name, boo
 {
   lang_hooks.lto.begin_section (name);
 
+  if (streamer_dump_file)
+    fprintf (streamer_dump_file, "Creating %ssection %s\n",
+	     compress ? "compressed " : "", name);
   gcc_assert (compression_stream == NULL);
   if (compress)
     compression_stream = lto_start_compression (lto_append_data, NULL);
@@ -158,6 +162,12 @@ lto_output_decl_index (struct lto_output
   if (!existed_p)
     {
       index = encoder->trees.length ();
+      if (streamer_dump_file)
+	{
+	  print_node_brief (streamer_dump_file, "    Encoding indexable ",
+			    name, 4);
+	  fprintf (streamer_dump_file, "  as %i \n", index);
+	}
       encoder->trees.safe_push (name);
       new_entry_p = TRUE;
     }


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