From ce2e5191bc52312239c22129e84e0b97ab00994f Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 5 Oct 2000 08:31:15 +0000 Subject: [PATCH] pt.c (tsubst_expr, [...]): Don't process if tsubsting fails. * pt.c (tsubst_expr, DECL_STMT case): Don't process if tsubsting fails. From-SVN: r36720 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/pt.c | 25 ++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 508cd1eaf1e..960f17d0309 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-10-05 Nathan Sidwell + + * pt.c (tsubst_expr, DECL_STMT case): Don't process if + tsubsting fails. + 2000-10-05 Nathan Sidwell * spew.c (frob_id): New static function. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index e3357a0bce0..171250e5757 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7145,17 +7145,20 @@ tsubst_expr (t, args, complain, in_decl) init = DECL_INITIAL (decl); decl = tsubst (decl, args, complain, in_decl); init = tsubst_expr (init, args, complain, in_decl); - if (init) - DECL_INITIAL (decl) = error_mark_node; - /* By marking the declaration as instantiated, we avoid - trying to instantiate it. Since instantiate_decl can't - handle local variables, and since we've already done - all that needs to be done, that's the right thing to - do. */ - if (TREE_CODE (decl) == VAR_DECL) - DECL_TEMPLATE_INSTANTIATED (decl) = 1; - maybe_push_decl (decl); - cp_finish_decl (decl, init, NULL_TREE, 0); + if (decl != error_mark_node) + { + if (init) + DECL_INITIAL (decl) = error_mark_node; + /* By marking the declaration as instantiated, we avoid + trying to instantiate it. Since instantiate_decl can't + handle local variables, and since we've already done + all that needs to be done, that's the right thing to + do. */ + if (TREE_CODE (decl) == VAR_DECL) + DECL_TEMPLATE_INSTANTIATED (decl) = 1; + maybe_push_decl (decl); + cp_finish_decl (decl, init, NULL_TREE, 0); + } } return decl; } -- 2.30.2