aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cp-tree.h
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2011-05-10 17:23:31 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2011-05-10 17:23:31 +0000
commitd26e59864b3ea46ad8d4671a3c55f86cf5f2fa94 (patch)
tree7c389e370937901a10bb25ff1bb73eb2135042bd /gcc/cp/cp-tree.h
parentdbcc9f08d5631a29708cf859689a46a1895111fa (diff)
downloadgcc-d26e59864b3ea46ad8d4671a3c55f86cf5f2fa94.zip
gcc-d26e59864b3ea46ad8d4671a3c55f86cf5f2fa94.tar.gz
gcc-d26e59864b3ea46ad8d4671a3c55f86cf5f2fa94.tar.bz2
mark EXPR_PACK_EXPANSION as typed only
mark EXPR_PACK_EXPANSION as typed only * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand. * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED. * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new operand of EXPR_PACK_EXPANSION. (cp_tree_operand_length): Declare. * tree.c (cp_tree_operand_length): Define. (cp_tree_equal): Call it. * pt.c (value_dependent_expr_P): Likewise. * mangle.c (write_expression): Likewise. From-SVN: r173625
Diffstat (limited to 'gcc/cp/cp-tree.h')
-rw-r--r--gcc/cp/cp-tree.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 53092ff..efcdeef 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -2734,7 +2734,10 @@ extern void decl_shadowed_for_var_insert (tree, tree);
/* The list of parameter packs used in the PACK_EXPANSION_* node. The
TREE_VALUE of each TREE_LIST contains the parameter packs. */
-#define PACK_EXPANSION_PARAMETER_PACKS(NODE) TREE_CHAIN (NODE)
+#define PACK_EXPANSION_PARAMETER_PACKS(NODE) \
+ *(TREE_CODE (NODE) == EXPR_PACK_EXPANSION \
+ ? &TREE_OPERAND (NODE, 1) \
+ : &TREE_CHAIN (TYPE_PACK_EXPANSION_CHECK (NODE)))
/* Determine if this is an argument pack. */
#define ARGUMENT_PACK_P(NODE) \
@@ -5430,6 +5433,7 @@ extern tree nonlambda_method_basetype (void);
extern void maybe_add_lambda_conv_op (tree);
/* in tree.c */
+extern int cp_tree_operand_length (const_tree);
void cp_free_lang_data (tree t);
extern tree force_target_expr (tree, tree, tsubst_flags_t);
extern tree build_target_expr_with_type (tree, tree, tsubst_flags_t);