From 7ee6e37a8e59789aba4dac00f9a08adfdc084bbb Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 30 Aug 2018 14:32:45 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/tree.c | 11 ++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f7fb162f925..fa2339b170c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2018-08-29 Jan Hubicka + + * tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO + and TYPE_NEXT_REF_TO. + +2018-08-29 Jan Hubicka + + * 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 * config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max. diff --git a/gcc/tree.c b/gcc/tree.c index d1e1b3048d4..c3ac8f36d55 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. */ -- 2.30.2