From 82faacf1c7f4e5a64e100e1fa0ac4e0bbffb3e82 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Fri, 14 Dec 2018 18:46:13 +0000 Subject: [PATCH] module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access. gcc/cp/ * module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access. From-SVN: r267139 --- ChangeLog.modules | 5 +++++ gcc/cp/module.cc | 24 +++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog.modules b/ChangeLog.modules index 161aed5f7941..936c5a86a0b9 100644 --- a/ChangeLog.modules +++ b/ChangeLog.modules @@ -1,3 +1,8 @@ +2018-12-14 Nathan Sidwell + + gcc/cp/ + * module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access. + 2018-12-13 Nathan Sidwell Function template deduping diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 0f70cabce80d..6a1284764ea5 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -6138,22 +6138,24 @@ trees_out::tree_decl (tree decl, walk_kind ref, bool looking_inside) const char *kind = NULL; tree ti = NULL_TREE; int use_tpl = -1; - if ((TREE_CODE (decl) == FUNCTION_DECL - || TREE_CODE (decl) == VAR_DECL - || TREE_CODE (decl) == TYPE_DECL) - && DECL_LANG_SPECIFIC (decl)) + if (DECL_IMPLICIT_TYPEDEF_P (decl)) + { + tree type = TREE_TYPE (decl); + if (TYPE_LANG_SPECIFIC (type)) + { + ti = TYPE_TEMPLATE_INFO (type); + use_tpl = CLASSTYPE_USE_TEMPLATE (type); + } + } + else if (DECL_LANG_SPECIFIC (decl) + && (TREE_CODE (decl) == FUNCTION_DECL + || TREE_CODE (decl) == VAR_DECL + || TREE_CODE (decl) == TYPE_DECL)) { use_tpl = DECL_USE_TEMPLATE (decl); ti = DECL_TEMPLATE_INFO (decl); } - if (!ti && TREE_CODE (decl) == TYPE_DECL - && TYPE_LANG_SPECIFIC (TREE_TYPE (decl))) - { - ti = TYPE_TEMPLATE_INFO (TREE_TYPE (decl)); - use_tpl = CLASSTYPE_USE_TEMPLATE (TREE_TYPE (decl)); - } - unsigned owner = MODULE_UNKNOWN; if (!ti) ;