mirror of git://gcc.gnu.org/git/gcc.git
Explicitly list all tree codes in gcc/tree-streamer.c:record_common_node
gcc/ * tree-streamer.c (record_common_node): Explicitly list expected tree codes. From-SVN: r241246
This commit is contained in:
parent
12d3f34b33
commit
80b841ba52
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-10-17 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
|
* tree-streamer.c (record_common_node): Explicitly list expected
|
||||||
|
tree codes.
|
||||||
|
|
||||||
2016-10-17 Richard Biener <rguenther@suse.de>
|
2016-10-17 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/77988
|
PR tree-optimization/77988
|
||||||
|
|
|
||||||
|
|
@ -277,12 +277,28 @@ record_common_node (struct streamer_tree_cache_d *cache, tree node)
|
||||||
in the cache as hash value. */
|
in the cache as hash value. */
|
||||||
streamer_tree_cache_append (cache, node, cache->nodes.length ());
|
streamer_tree_cache_append (cache, node, cache->nodes.length ());
|
||||||
|
|
||||||
if (POINTER_TYPE_P (node)
|
switch (TREE_CODE (node))
|
||||||
|| TREE_CODE (node) == COMPLEX_TYPE
|
|
||||||
|| TREE_CODE (node) == ARRAY_TYPE)
|
|
||||||
record_common_node (cache, TREE_TYPE (node));
|
|
||||||
else if (TREE_CODE (node) == RECORD_TYPE)
|
|
||||||
{
|
{
|
||||||
|
case ERROR_MARK:
|
||||||
|
case FIELD_DECL:
|
||||||
|
case FIXED_POINT_TYPE:
|
||||||
|
case IDENTIFIER_NODE:
|
||||||
|
case INTEGER_CST:
|
||||||
|
case INTEGER_TYPE:
|
||||||
|
case POINTER_BOUNDS_TYPE:
|
||||||
|
case REAL_TYPE:
|
||||||
|
case TREE_LIST:
|
||||||
|
case VOID_CST:
|
||||||
|
case VOID_TYPE:
|
||||||
|
/* No recursive trees. */
|
||||||
|
break;
|
||||||
|
case ARRAY_TYPE:
|
||||||
|
case COMPLEX_TYPE:
|
||||||
|
case POINTER_TYPE:
|
||||||
|
case REFERENCE_TYPE:
|
||||||
|
record_common_node (cache, TREE_TYPE (node));
|
||||||
|
break;
|
||||||
|
case RECORD_TYPE:
|
||||||
/* The FIELD_DECLs of structures should be shared, so that every
|
/* The FIELD_DECLs of structures should be shared, so that every
|
||||||
COMPONENT_REF uses the same tree node when referencing a field.
|
COMPONENT_REF uses the same tree node when referencing a field.
|
||||||
Pointer equality between FIELD_DECLs is used by the alias
|
Pointer equality between FIELD_DECLs is used by the alias
|
||||||
|
|
@ -291,6 +307,10 @@ record_common_node (struct streamer_tree_cache_d *cache, tree node)
|
||||||
nonoverlapping_component_refs_of_decl_p). */
|
nonoverlapping_component_refs_of_decl_p). */
|
||||||
for (tree f = TYPE_FIELDS (node); f; f = TREE_CHAIN (f))
|
for (tree f = TYPE_FIELDS (node); f; f = TREE_CHAIN (f))
|
||||||
record_common_node (cache, f);
|
record_common_node (cache, f);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* Unexpected tree code. */
|
||||||
|
gcc_unreachable ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue