diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-09-15 22:49:33 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-09-15 22:49:33 +0000 |
commit | 371534a917ce5751c5d05e2b7428a86374a73376 (patch) | |
tree | 33fe22d2aef87ebe2187a86a3143960cb151a07d /gcc | |
parent | c063dc9813c9aecef8db565e265d76668f8c8fae (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 4 | ||||
-rw-r--r-- | gcc/cp/pt.c | 5 | ||||
-rw-r--r-- | gcc/cp/tree.c | 2 |
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); |