From 7610f2ce1bff1c54feeb451f0b40dcc3d3350389 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Tue, 25 Jan 2000 05:53:12 +0000 Subject: [PATCH] pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a template. * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a template. * decl2.c (mark_used): Do instantiate inlines that have been explicitly instantiated. From-SVN: r31601 --- gcc/cp/ChangeLog | 8 ++++++++ gcc/cp/decl2.c | 3 ++- gcc/cp/pt.c | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 92dcb79..14cad83 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2000-01-24 Jason Merrill + + * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a + template. + + * decl2.c (mark_used): Do instantiate inlines that have been + explicitly instantiated. + 2000-01-24 Richard Henderson * call.c (build_over_call): Use expand_tree_builtin. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 51f02ec..56283c8 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -5202,7 +5202,8 @@ mark_used (decl) instantiation because that is not checked in instantiate_decl. */ if ((TREE_CODE (decl) == FUNCTION_DECL || TREE_CODE (decl) == VAR_DECL) && DECL_LANG_SPECIFIC (decl) && DECL_TEMPLATE_INFO (decl) - && !DECL_EXPLICIT_INSTANTIATION (decl)) + && (!DECL_EXPLICIT_INSTANTIATION (decl) + || (TREE_CODE (decl) == FUNCTION_DECL && DECL_INLINE (decl)))) instantiate_decl (decl); } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 67670fa..701ec9b 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5121,6 +5121,11 @@ static tree maybe_fold_nontype_arg (arg) tree arg; { + /* If we're not in a template, ARG is already as simple as it's going to + get, and trying to reprocess the trees will break. */ + if (! processing_template_decl) + return arg; + if (TREE_CODE_CLASS (TREE_CODE (arg)) != 't' && !uses_template_parms (arg)) { -- 2.7.4