aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2018-08-30 14:32:45 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2018-08-30 12:32:45 +0000
commit7ee6e37a8e59789aba4dac00f9a08adfdc084bbb (patch)
tree0c1d75879236fcc09f3de54cfb855c84fe86ec75 /gcc
parent0c05d45624c68116a6fd82e8977ff8363ff9e4d2 (diff)
downloadgcc-7ee6e37a8e59789aba4dac00f9a08adfdc084bbb.zip
gcc-7ee6e37a8e59789aba4dac00f9a08adfdc084bbb.tar.gz
gcc-7ee6e37a8e59789aba4dac00f9a08adfdc084bbb.tar.bz2
tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO and TYPE_NEXT_REF_TO.
* tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO and TYPE_NEXT_REF_TO. From-SVN: r263978
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/tree.c11
2 files changed, 22 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f7fb162..fa2339b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2018-08-29 Jan Hubicka <jh@suse.cz>
+
+ * tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO
+ and TYPE_NEXT_REF_TO.
+
+2018-08-29 Jan Hubicka <jh@suse.cz>
+
+ * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
+ comment that it has to be even number.
+ (class sreal): Change m_sig type to int32_t.
+ * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
+ int64_t for temporary calculations.
+ (sreal_verify_basics): Drop one bit from minimum and maximum.
+
2018-08-30 Tamar Christina <tamar.christina@arm.com>
* config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.
diff --git a/gcc/tree.c b/gcc/tree.c
index d1e1b30..c3ac8f3 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -5519,9 +5519,14 @@ find_decls_types_r (tree *tp, int *ws, void *data)
fld_worklist_push (TYPE_POINTER_TO (t), fld);
fld_worklist_push (TYPE_REFERENCE_TO (t), fld);
fld_worklist_push (TYPE_NAME (t), fld);
- /* Do not walk TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO. We do not stream
- them and thus do not and want not to reach unused pointer types
- this way. */
+ /* While we do not stream TYPE_POINTER_TO and TYPE_REFERENCE_TO
+ lists, we may look types up in these lists and use them while
+ optimizing the function body. Thus we need to free lang data
+ in them. */
+ if (TREE_CODE (t) == POINTER_TYPE)
+ fld_worklist_push (TYPE_NEXT_PTR_TO (t), fld);
+ if (TREE_CODE (t) == REFERENCE_TYPE)
+ fld_worklist_push (TYPE_NEXT_REF_TO (t), fld);
if (!POINTER_TYPE_P (t))
fld_worklist_push (TYPE_MIN_VALUE_RAW (t), fld);
/* TYPE_MAX_VALUE_RAW is TYPE_BINFO for record types. */