public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/autopar_devel] Cleanup global decl stream reference streaming, part 2
@ 2020-08-22 21:47 Giuliano Belinassi
0 siblings, 0 replies; only message in thread
From: Giuliano Belinassi @ 2020-08-22 21:47 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:b6fcb09410ef58f621070ff27585a3a9b968c7b2
commit b6fcb09410ef58f621070ff27585a3a9b968c7b2
Author: Jan Hubicka <jh@suse.cz>
Date: Mon Jun 1 19:13:58 2020 +0200
Cleanup global decl stream reference streaming, part 2
gcc/ChangeLog:
2020-06-01 Jan Hubicka <hubicka@ucw.cz>
* lto-streamer.h (enum LTO_tags): Remove LTO_field_decl_ref,
LTO_function_decl_ref, LTO_label_decl_ref, LTO_namespace_decl_ref,
LTO_result_decl_ref, LTO_type_decl_ref, LTO_type_ref,
LTO_const_decl_ref, LTO_imported_decl_ref,
LTO_translation_unit_decl_ref, LTO_global_decl_ref and
LTO_namelist_decl_ref; add LTO_global_stream_ref.
* lto-streamer-in.c (lto_input_tree_ref): Simplify.
(lto_input_scc): Update.
(lto_input_tree_1): Update.
* lto-streamer-out.c (lto_indexable_tree_ref): Simlify.
* lto-streamer.c (lto_tag_name): Update.
Diff:
---
gcc/lto-streamer-in.c | 31 +++++---------------
gcc/lto-streamer-out.c | 76 ++++----------------------------------------------
gcc/lto-streamer.c | 18 ++----------
gcc/lto-streamer.h | 29 ++++++-------------
4 files changed, 22 insertions(+), 132 deletions(-)
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index d77b4f5e9ff..5eaba7d16d4 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -316,34 +316,17 @@ lto_input_tree_ref (class lto_input_block *ib, class data_in *data_in,
unsigned HOST_WIDE_INT ix_u;
tree result = NULL_TREE;
- lto_tag_check_range (tag, LTO_field_decl_ref, LTO_namelist_decl_ref);
-
- switch (tag)
+ if (tag == LTO_ssa_name_ref)
{
- case LTO_ssa_name_ref:
ix_u = streamer_read_uhwi (ib);
result = (*SSANAMES (fn))[ix_u];
- break;
-
- case LTO_type_ref:
- case LTO_field_decl_ref:
- case LTO_function_decl_ref:
- case LTO_type_decl_ref:
- case LTO_namespace_decl_ref:
- case LTO_global_decl_ref:
- case LTO_result_decl_ref:
- case LTO_const_decl_ref:
- case LTO_imported_decl_ref:
- case LTO_label_decl_ref:
- case LTO_translation_unit_decl_ref:
- case LTO_namelist_decl_ref:
+ }
+ else
+ {
+ gcc_checking_assert (tag == LTO_global_stream_ref);
ix_u = streamer_read_uhwi (ib);
result = (*data_in->file_data->current_decl_state
->streams[LTO_DECL_STREAM])[ix_u];
- break;
-
- default:
- gcc_unreachable ();
}
gcc_assert (result);
@@ -1485,7 +1468,7 @@ lto_input_scc (class lto_input_block *ib, class data_in *data_in,
{
enum LTO_tags tag = streamer_read_record_start (ib);
if (tag == LTO_null
- || (tag >= LTO_field_decl_ref && tag <= LTO_global_decl_ref)
+ || tag == LTO_global_stream_ref
|| tag == LTO_tree_pickle_reference
|| tag == LTO_integer_cst
|| tag == LTO_tree_scc
@@ -1549,7 +1532,7 @@ lto_input_tree_1 (class lto_input_block *ib, class data_in *data_in,
if (tag == LTO_null)
result = NULL_TREE;
- else if (tag >= LTO_field_decl_ref && tag <= LTO_namelist_decl_ref)
+ else if (tag == LTO_global_stream_ref || tag == LTO_ssa_name_ref)
{
/* If TAG is a reference to an indexable tree, the next value
in IB is the index into the table where we expect to find
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index a44ed0037ee..dfc4603d7ae 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -252,84 +252,18 @@ static void
lto_indexable_tree_ref (struct output_block *ob, tree expr,
enum LTO_tags *tag, unsigned *index)
{
- enum tree_code code;
- enum lto_decl_stream_e_t encoder;
-
gcc_checking_assert (tree_is_indexable (expr));
- if (TYPE_P (expr))
+ if (TREE_CODE (expr) == SSA_NAME)
{
- *tag = LTO_type_ref;
- encoder = LTO_DECL_STREAM;
+ *tag = LTO_ssa_name_ref;
+ *index = SSA_NAME_VERSION (expr);
}
else
{
- code = TREE_CODE (expr);
- switch (code)
- {
- case SSA_NAME:
- *tag = LTO_ssa_name_ref;
- *index = SSA_NAME_VERSION (expr);
- return;
- break;
-
- case FIELD_DECL:
- *tag = LTO_field_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case FUNCTION_DECL:
- *tag = LTO_function_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case VAR_DECL:
- case DEBUG_EXPR_DECL:
- gcc_checking_assert (decl_function_context (expr) == NULL
- || TREE_STATIC (expr));
- /* FALLTHRU */
- case PARM_DECL:
- *tag = LTO_global_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case CONST_DECL:
- *tag = LTO_const_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case TYPE_DECL:
- *tag = LTO_type_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case NAMESPACE_DECL:
- *tag = LTO_namespace_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case LABEL_DECL:
- *tag = LTO_label_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case RESULT_DECL:
- *tag = LTO_result_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- case TRANSLATION_UNIT_DECL:
- *tag = LTO_translation_unit_decl_ref;
- encoder = LTO_DECL_STREAM;
- break;
-
- default:
- /* No other node is indexable, so it should have been handled by
- lto_output_tree. */
- gcc_unreachable ();
- }
+ *tag = LTO_global_stream_ref;
+ *index = lto_get_index (&ob->decl_state->streams[LTO_DECL_STREAM], expr);
}
- *index = lto_get_index (&ob->decl_state->streams[encoder], expr);
}
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index f7d3f24b0b1..7d0fd3924c0 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -84,24 +84,10 @@ lto_tag_name (enum LTO_tags tag)
return "LTO_ert_must_not_throw";
case LTO_tree_pickle_reference:
return "LTO_tree_pickle_reference";
- case LTO_field_decl_ref:
- return "LTO_field_decl_ref";
- case LTO_function_decl_ref:
- return "LTO_function_decl_ref";
- case LTO_label_decl_ref:
- return "LTO_label_decl_ref";
- case LTO_namespace_decl_ref:
- return "LTO_namespace_decl_ref";
- case LTO_result_decl_ref:
- return "LTO_result_decl_ref";
+ case LTO_global_stream_ref:
+ return "LTO_global_sream_ref";
case LTO_ssa_name_ref:
return "LTO_ssa_name_ref";
- case LTO_type_decl_ref:
- return "LTO_type_decl_ref";
- case LTO_type_ref:
- return "LTO_type_ref";
- case LTO_global_decl_ref:
- return "LTO_global_decl_ref";
default:
return "LTO_UNKNOWN";
}
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index fc7e4312420..241a46d4f31 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -185,28 +185,15 @@ enum LTO_tags
LTO_trees,
/* References to indexable tree nodes. These objects are stored in
- tables that are written separately from the function bodies that
- reference them. This way they can be instantiated even when the
- referencing functions aren't (e.g., during WPA) and it also allows
- functions to be copied from one file to another without having
- to unpickle the body first (the references are location
- independent).
-
- NOTE, do not regroup these values as the grouping is exposed
- in the range checks done in lto_input_tree. */
- LTO_field_decl_ref, /* Do not change. */
- LTO_function_decl_ref,
- LTO_label_decl_ref,
- LTO_namespace_decl_ref,
- LTO_result_decl_ref,
+ tables that are written separately from the function bodies
+ and variable constructors that reference them. This way they can be
+ instantiated even when the referencing functions aren't (e.g., during WPA)
+ and it also allows functions to be copied from one file to another without
+ having to unpickle the body first (the references are location
+ independent). */
+ LTO_global_stream_ref,
+
LTO_ssa_name_ref,
- LTO_type_decl_ref,
- LTO_type_ref,
- LTO_const_decl_ref,
- LTO_imported_decl_ref,
- LTO_translation_unit_decl_ref,
- LTO_global_decl_ref,
- LTO_namelist_decl_ref, /* Do not change. */
/* This tag must always be last. */
LTO_NUM_TAGS
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-08-22 21:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-22 21:47 [gcc/devel/autopar_devel] Cleanup global decl stream reference streaming, part 2 Giuliano Belinassi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).