aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-09-15 22:49:33 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-15 22:49:33 +0000
commit371534a917ce5751c5d05e2b7428a86374a73376 (patch)
tree33fe22d2aef87ebe2187a86a3143960cb151a07d /gcc
parentc063dc9813c9aecef8db565e265d76668f8c8fae (diff)
downloadgcc-371534a917ce5751c5d05e2b7428a86374a73376.zip
gcc-371534a917ce5751c5d05e2b7428a86374a73376.tar.gz
gcc-371534a917ce5751c5d05e2b7428a86374a73376.tar.bz2
decl2.c (build_expr_from_tree): Handle VA_ARG_EXPR.
* decl2.c (build_expr_from_tree): Handle VA_ARG_EXPR. * pt.c (tsubst_copy): Likewise. * tree.c (search_tree): Likewise. (mapcar): Likewise. From-SVN: r29440
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/decl2.c4
-rw-r--r--gcc/cp/pt.c5
-rw-r--r--gcc/cp/tree.c2
4 files changed, 18 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e6cdab7..066b247 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+1999-09-15 Mark Mitchell <mark@codesourcery.com>
+
+ * decl2.c (build_expr_from_tree): Handle VA_ARG_EXPR.
+ * pt.c (tsubst_copy): Likewise.
+ * tree.c (search_tree): Likewise.
+ (mapcar): Likewise.
+
1999-09-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* typeck2.c (ack): Don't declare progname.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 14dc741..5ba6c6d 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -4026,6 +4026,10 @@ build_expr_from_tree (t)
case VAR_DECL:
return convert_from_reference (t);
+ case VA_ARG_EXPR:
+ return build_va_arg (build_expr_from_tree (TREE_OPERAND (t, 0)),
+ TREE_TYPE (t));
+
default:
return t;
}
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 704ac44..c4d829f 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7206,6 +7206,11 @@ tsubst_copy (t, args, complain, in_decl)
return r;
}
+ case VA_ARG_EXPR:
+ return build_va_arg (tsubst_copy (TREE_OPERAND (t, 0), args, complain,
+ in_decl),
+ tsubst (TREE_TYPE (t), args, complain, in_decl));
+
default:
return t;
}
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 48425ed..0805092 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -1656,6 +1656,7 @@ search_tree (t, func)
case EXIT_EXPR:
case LOOP_EXPR:
case BIT_FIELD_REF:
+ case VA_ARG_EXPR:
TRY (TREE_OPERAND (t, 0));
break;
@@ -1929,6 +1930,7 @@ mapcar (t, func)
case CLEANUP_POINT_EXPR:
case THROW_EXPR:
case STMT_EXPR:
+ case VA_ARG_EXPR:
t = copy_node (t);
TREE_TYPE (t) = mapcar (TREE_TYPE (t), func);
TREE_OPERAND (t, 0) = mapcar (TREE_OPERAND (t, 0), func);