summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog16
-rw-r--r--gcc/tree-chrec.h11
-rw-r--r--gcc/tree-core.h3
-rw-r--r--gcc/tree-scalar-evolution.c34
-rw-r--r--gcc/tree-streamer.c3
-rw-r--r--gcc/tree.c6
-rw-r--r--gcc/tree.h5
7 files changed, 40 insertions, 38 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 48ac980fa45..a19368c348b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,19 @@
+2019-07-02 Richard Biener <rguenther@suse.de>
+
+ * tree-core.h (enum tree_index): Add TI_CHREC_DONT_KNOW and
+ TI_CHREC_KNOWN.
+ * tree.h (chrec_not_analyzed_yet, chrec_dont_know, chrec_known):
+ Define here.
+ * tree.c (build_common_tree_nodes): Initialize them.
+ * tree-chrec.h (chrec_not_analyzed_yet, chrec_dont_know, chrec_known):
+ Make declarations comments.
+ * tree-scalar-evolution.c (chrec_not_analyzed_yet, chrec_dont_know,
+ chrec_known): Remove definitions.
+ (initialize_scalar_evolutions_analyzer): Remove.
+ (scev_initialize): Do not call initialize_scalar_evolutions_analyzer.
+ * tree-streamer.c (preload_common_nodes): Do not preload
+ TI_CHREC_DONT_KNOW or TI_CHREC_KNOWN.
+
2019-07-02 Jan Hubicka <jh@suse.cz>
* tree-ssa-alias.c (aliasing_component_refs_p): Remove forgotten
diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h
index dbbc1b182ac..3b5c090ef93 100644
--- a/gcc/tree-chrec.h
+++ b/gcc/tree-chrec.h
@@ -23,11 +23,14 @@ along with GCC; see the file COPYING3. If not see
/* The following trees are unique elements. Thus the comparison of another
element to these elements should be done on the pointer to these trees,
- and not on their value. */
+ and not on their value.
-extern tree chrec_not_analyzed_yet;
-extern GTY(()) tree chrec_dont_know;
-extern GTY(()) tree chrec_known;
+ extern tree chrec_not_analyzed_yet;
+ extern tree chrec_dont_know;
+ extern tree chrec_known;
+
+ chrec_not_analyzed_yet is NULL_TREE and the others are defined
+ in global_trees[]. */
/* After having added an automatically generated element, please
include it in the following function. */
diff --git a/gcc/tree-core.h b/gcc/tree-core.h
index 23f8f01317e..8ac1978b93a 100644
--- a/gcc/tree-core.h
+++ b/gcc/tree-core.h
@@ -758,6 +758,9 @@ enum tree_index {
TI_CURRENT_TARGET_PRAGMA,
TI_CURRENT_OPTIMIZE_PRAGMA,
+ TI_CHREC_DONT_KNOW,
+ TI_CHREC_KNOWN,
+
TI_MAX
};
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 0bda94ab325..81f70f193d9 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -304,21 +304,6 @@ struct GTY((for_user)) scev_info_str {
static unsigned nb_set_scev = 0;
static unsigned nb_get_scev = 0;
-/* The following trees are unique elements. Thus the comparison of
- another element to these elements should be done on the pointer to
- these trees, and not on their value. */
-
-/* The SSA_NAMEs that are not yet analyzed are qualified with NULL_TREE. */
-tree chrec_not_analyzed_yet;
-
-/* Reserved to the cases where the analyzer has detected an
- undecidable property at compile time. */
-tree chrec_dont_know;
-
-/* When the analyzer has detected that a property will never
- happen, then it qualifies it with chrec_known. */
-tree chrec_known;
-
struct scev_info_hasher : ggc_ptr_hash<scev_info_str>
{
static hashval_t hash (scev_info_str *i);
@@ -3056,23 +3041,6 @@ gather_stats_on_scev_database (void)
}
-
-/* Initializer. */
-
-static void
-initialize_scalar_evolutions_analyzer (void)
-{
- /* The elements below are unique. */
- if (chrec_dont_know == NULL_TREE)
- {
- chrec_not_analyzed_yet = NULL_TREE;
- chrec_dont_know = make_node (SCEV_NOT_KNOWN);
- chrec_known = make_node (SCEV_KNOWN);
- TREE_TYPE (chrec_dont_know) = void_type_node;
- TREE_TYPE (chrec_known) = void_type_node;
- }
-}
-
/* Initialize the analysis of scalar evolutions for LOOPS. */
void
@@ -3084,8 +3052,6 @@ scev_initialize (void)
scalar_evolution_info = hash_table<scev_info_hasher>::create_ggc (100);
- initialize_scalar_evolutions_analyzer ();
-
FOR_EACH_LOOP (loop, 0)
{
loop->nb_iterations = NULL_TREE;
diff --git a/gcc/tree-streamer.c b/gcc/tree-streamer.c
index b7bd276a397..fb2888de665 100644
--- a/gcc/tree-streamer.c
+++ b/gcc/tree-streamer.c
@@ -377,6 +377,9 @@ preload_common_nodes (struct streamer_tree_cache_d *cache)
&& i != TI_TARGET_OPTION_CURRENT
&& i != TI_CURRENT_TARGET_PRAGMA
&& i != TI_CURRENT_OPTIMIZE_PRAGMA
+ /* SCEV state shouldn't reach the IL. */
+ && i != TI_CHREC_DONT_KNOW
+ && i != TI_CHREC_KNOWN
/* Skip va_list* related nodes if offloading. For native LTO
we want them to be merged for the stdarg pass, for offloading
they might not be identical between host and offloading target. */
diff --git a/gcc/tree.c b/gcc/tree.c
index 34912583bba..f2c779f1fe5 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -10641,6 +10641,12 @@ build_common_tree_nodes (bool signed_char)
va_list_type_node = t;
}
+
+ /* SCEV analyzer global shared trees. */
+ chrec_dont_know = make_node (SCEV_NOT_KNOWN);
+ TREE_TYPE (chrec_dont_know) = void_type_node;
+ chrec_known = make_node (SCEV_KNOWN);
+ TREE_TYPE (chrec_known) = void_type_node;
}
/* Modify DECL for given flags.
diff --git a/gcc/tree.h b/gcc/tree.h
index 1a43e6b7ff8..ed59a5d06bf 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4083,6 +4083,11 @@ tree_strip_any_location_wrapper (tree exp)
#define current_target_pragma global_trees[TI_CURRENT_TARGET_PRAGMA]
#define current_optimize_pragma global_trees[TI_CURRENT_OPTIMIZE_PRAGMA]
+/* SCEV analyzer global shared trees. */
+#define chrec_not_analyzed_yet NULL_TREE
+#define chrec_dont_know global_trees[TI_CHREC_DONT_KNOW]
+#define chrec_known global_trees[TI_CHREC_KNOWN]
+
#define char_type_node integer_types[itk_char]
#define signed_char_type_node integer_types[itk_signed_char]
#define unsigned_char_type_node integer_types[itk_unsigned_char]