From ea333e1ceadfd7c0ecb64e47bb844cd2b5e6acc9 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 22 Jun 2000 09:27:15 +0000 Subject: [PATCH] call.c (build_x_va_arg): Check if in a template decl. * call.c (build_x_va_arg): Check if in a template decl. * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg. From-SVN: r34645 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/call.c | 3 +++ gcc/cp/pt.c | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0699f1505a0..e05c3d3fc4c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-06-22 Nathan Sidwell + + * call.c (build_x_va_arg): Check if in a template decl. + * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg. + 2000-06-20 Alexandre Petit-Bianco * class.c (push_lang_context): TYPE_NAME gets you to the Java diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 7b7d96b412c..a155f108967 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -3838,6 +3838,9 @@ build_x_va_arg (expr, type) tree expr; tree type; { + if (processing_template_decl) + return build_min (VA_ARG_EXPR, type, expr); + type = complete_type_or_else (type, NULL_TREE); if (expr == error_mark_node || !type) diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 70ad846e69b..6fcc9e455be 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7099,7 +7099,7 @@ tsubst_copy (t, args, complain, in_decl) } case VA_ARG_EXPR: - return build_va_arg (tsubst_copy (TREE_OPERAND (t, 0), args, complain, + return build_x_va_arg (tsubst_copy (TREE_OPERAND (t, 0), args, complain, in_decl), tsubst (TREE_TYPE (t), args, complain, in_decl));