]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LTO: Capture 'lto_file_decl_data *file_data' in 'class lto_input_block'
authorThomas Schwinge <thomas@codesourcery.com>
Thu, 29 Jun 2023 19:33:06 +0000 (21:33 +0200)
committerThomas Schwinge <thomas@codesourcery.com>
Tue, 4 Jul 2023 12:10:54 +0000 (14:10 +0200)
... instead of just 'unsigned char *mode_table'.  Preparation for a forthcoming
change, where we need to capture an additional 'file_data' item, so it seems
easier to just capture that one proper.

gcc/
* lto-streamer.h (class lto_input_block): Capture
'lto_file_decl_data *file_data' instead of just
'unsigned char *mode_table'.
* ipa-devirt.cc (ipa_odr_read_section): Adjust.
* ipa-fnsummary.cc (inline_read_section): Likewise.
* ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
* ipa-modref.cc (read_section): Likewise.
* ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
Likewise.
* ipa-sra.cc (isra_read_summary_section): Likewise.
* lto-cgraph.cc (input_cgraph_opt_section): Likewise.
* lto-section-in.cc (lto_create_simple_input_block): Likewise.
* lto-streamer-in.cc (lto_read_body_or_constructor)
(lto_input_toplevel_asms): Likewise.
* tree-streamer.h (bp_unpack_machine_mode): Likewise.
gcc/lto/
* lto-common.cc (lto_read_decls): Adjust.

12 files changed:
gcc/ipa-devirt.cc
gcc/ipa-fnsummary.cc
gcc/ipa-icf.cc
gcc/ipa-modref.cc
gcc/ipa-prop.cc
gcc/ipa-sra.cc
gcc/lto-cgraph.cc
gcc/lto-section-in.cc
gcc/lto-streamer-in.cc
gcc/lto-streamer.h
gcc/lto/lto-common.cc
gcc/tree-streamer.h

index 2c61a497ceed56e83579ad062ad244c184b7fa26..87529be45153f34ed6c2b50ca7ba9179c92b31bf 100644 (file)
@@ -4147,7 +4147,7 @@ ipa_odr_read_section (struct lto_file_decl_data *file_data, const char *data,
   class data_in *data_in;
 
   lto_input_block ib ((const char *) data + main_offset, header->main_size,
-                     file_data->mode_table);
+                     file_data);
 
   data_in
     = lto_data_in_create (file_data, (const char *) data + string_offset,
index 53dee8f59fa8cdbbf70e9081dd03cfb26d3b02ba..f1244da291ca51713e4934b1ef6b9306137990b9 100644 (file)
@@ -4548,7 +4548,7 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data,
   unsigned int f_count;
 
   lto_input_block ib ((const char *) data + main_offset, header->main_size,
-                     file_data->mode_table);
+                     file_data);
 
   data_in =
     lto_data_in_create (file_data, (const char *) data + string_offset,
index cb9f768d85de6b950a0cea1f33b9f62999cfb4d4..836d0914ded2801607af4b3c0f84a52b6ff180de 100644 (file)
@@ -2204,7 +2204,7 @@ sem_item_optimizer::read_section (lto_file_decl_data *file_data,
   unsigned int count;
 
   lto_input_block ib_main ((const char *) data + main_offset, 0,
-                          header->main_size, file_data->mode_table);
+                          header->main_size, file_data);
 
   data_in
     = lto_data_in_create (file_data, (const char *) data + string_offset,
index e3196df8aa9ded9b1ccee272a252cb0443b4c974..278b2dbd828432082959abb4fce1249dd179532b 100644 (file)
@@ -3816,7 +3816,7 @@ read_section (struct lto_file_decl_data *file_data, const char *data,
   unsigned int f_count;
 
   lto_input_block ib ((const char *) data + main_offset, header->main_size,
-                     file_data->mode_table);
+                     file_data);
 
   data_in
     = lto_data_in_create (file_data, (const char *) data + string_offset,
index 33bda8288fc7d600b2e0d1b478697b3877dd2985..d2b998f8af573a931d12e7d78e9f5bfb2d78cd37 100644 (file)
@@ -5332,7 +5332,7 @@ ipa_prop_read_section (struct lto_file_decl_data *file_data, const char *data,
   unsigned int count;
 
   lto_input_block ib_main ((const char *) data + main_offset,
-                          header->main_size, file_data->mode_table);
+                          header->main_size, file_data);
 
   data_in =
     lto_data_in_create (file_data, (const char *) data + string_offset,
@@ -5556,7 +5556,7 @@ read_replacements_section (struct lto_file_decl_data *file_data,
   unsigned int count;
 
   lto_input_block ib_main ((const char *) data + main_offset,
-                          header->main_size, file_data->mode_table);
+                          header->main_size, file_data);
 
   data_in = lto_data_in_create (file_data, (const char *) data + string_offset,
                                header->string_size, vNULL);
index 21d281a9756e43fe0b4a5cccf3202833804af85d..c35e03b7abdcaa28cb1c51b37a50f008695f27ba 100644 (file)
@@ -2944,7 +2944,7 @@ isra_read_summary_section (struct lto_file_decl_data *file_data,
   unsigned int count;
 
   lto_input_block ib_main ((const char *) data + main_offset,
-                          header->main_size, file_data->mode_table);
+                          header->main_size, file_data);
 
   data_in =
     lto_data_in_create (file_data, (const char *) data + string_offset,
index aed5e9ddb1882847126fb09f3042f686b073b5e7..32c0f5ac6dbc133efc4e6fc5c2647e43a4dc2acb 100644 (file)
@@ -2174,7 +2174,7 @@ input_cgraph_opt_section (struct lto_file_decl_data *file_data,
   unsigned int count;
 
   lto_input_block ib_main ((const char *) data + main_offset,
-                          header->main_size, file_data->mode_table);
+                          header->main_size, file_data);
 
   data_in =
     lto_data_in_create (file_data, (const char *) data + string_offset,
index 07cf7326582b829629077645bb7dbde3472bc814..5ff00a3c130e5b0aa90ace513590a09b045cbb2e 100644 (file)
@@ -262,7 +262,7 @@ lto_create_simple_input_block (struct lto_file_decl_data *file_data,
 
   *datar = data;
   return new lto_input_block (data + main_offset, header->main_size,
-                             file_data->mode_table);
+                             file_data);
 }
 
 
index 2cb83406db589aa932f103deb27ec9dad6384990..6e8bc9516a69f7e5c26017fa352ec0fbb462d725 100644 (file)
@@ -1629,11 +1629,11 @@ lto_read_body_or_constructor (struct lto_file_decl_data *file_data, struct symta
       /* Set up the struct function.  */
       from = data_in->reader_cache->nodes.length ();
       lto_input_block ib_main (data + main_offset, header->main_size,
-                              file_data->mode_table);
+                              file_data);
       if (TREE_CODE (node->decl) == FUNCTION_DECL)
        {
          lto_input_block ib_cfg (data + cfg_offset, header->cfg_size,
-                                 file_data->mode_table);
+                                 file_data);
          input_function (fn_decl, data_in, &ib_main, &ib_cfg,
                          dyn_cast <cgraph_node *>(node));
        }
@@ -1954,7 +1954,7 @@ lto_input_toplevel_asms (struct lto_file_decl_data *file_data, int order_base)
   string_offset = sizeof (*header) + header->main_size;
 
   lto_input_block ib (data + sizeof (*header), header->main_size,
-                     file_data->mode_table);
+                     file_data);
 
   data_in = lto_data_in_create (file_data, data + string_offset,
                              header->string_size, vNULL);
index fc7133d07ba162e44efe0c0f259529319ba8b6f9..2913b808bdece92374a073e4c228bcd01e70a982 100644 (file)
@@ -344,14 +344,14 @@ public:
   /* Special constructor for the string table, it abuses this to
      do random access but use the uhwi decoder.  */
   lto_input_block (const char *data_, unsigned int p_, unsigned int len_,
-                  const unsigned char *mode_table_)
-      : data (data_), mode_table (mode_table_), p (p_), len (len_) {}
+                  const lto_file_decl_data *file_data_)
+      : data (data_), file_data (file_data_), p (p_), len (len_) {}
   lto_input_block (const char *data_, unsigned int len_,
-                  const unsigned char *mode_table_)
-      : data (data_), mode_table (mode_table_), p (0), len (len_) {}
+                  const lto_file_decl_data *file_data_)
+      : data (data_), file_data (file_data_), p (0), len (len_) {}
 
   const char *data;
-  const unsigned char *mode_table;
+  const lto_file_decl_data *file_data;
   unsigned int p;
   unsigned int len;
 };
index 97105c92c121b192241b6ac83e2b037ed5e863f1..cdb37c86b466fe4a0bd75a9f3ba117b8aaafeb28 100644 (file)
@@ -1883,7 +1883,7 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data,
   uint32_t num_decl_states;
 
   lto_input_block ib_main ((const char *) data + main_offset,
-                          header->main_size, decl_data->mode_table);
+                          header->main_size, decl_data);
 
   data_in = lto_data_in_create (decl_data, (const char *) data + string_offset,
                                header->string_size, resolutions);
index 170d61cf20b28822788b41ad4fe5081c1a3363e7..6d565acbbc252858163ded2ee8ac88b5ca75068c 100644 (file)
@@ -114,9 +114,9 @@ bp_pack_machine_mode (struct bitpack_d *bp, machine_mode mode)
 inline machine_mode
 bp_unpack_machine_mode (struct bitpack_d *bp)
 {
-  return (machine_mode)
-          ((class lto_input_block *)
-           bp->stream)->mode_table[bp_unpack_enum (bp, machine_mode, 1 << 8)];
+  lto_input_block *ib = (class lto_input_block *) bp->stream;
+  unsigned ix = bp_unpack_enum (bp, machine_mode, 1 << 8);
+  return (machine_mode) ib->file_data->mode_table[ix];
 }
 
 #endif  /* GCC_TREE_STREAMER_H  */