aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@gcc.gnu.org>2011-10-18 02:58:06 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2011-10-18 02:58:06 +0000
commit4daba88481ad29c76f24b70485017e54f9a19fe3 (patch)
tree025d5854011b99cfe93205d711317cfd2947da24 /gcc/cp/pt.c
parent9d4dedaa7b3ddd81934489e200dc7a4b97836dbc (diff)
downloadgcc-4daba88481ad29c76f24b70485017e54f9a19fe3.zip
gcc-4daba88481ad29c76f24b70485017e54f9a19fe3.tar.gz
gcc-4daba88481ad29c76f24b70485017e54f9a19fe3.tar.bz2
[multiple changes]
2011-10-17 Michael Spertus <mike_spertus@symantec.com> * gcc/c-family/c-common.c (c_common_reswords): Add __bases, __direct_bases. * gcc/c-family/c-common.h: Add RID_BASES and RID_DIRECT_BASES. 2011-10-17 Michael Spertus <mike_spertus@symantec.com> * cp-tree.def: Add BASES as a new tree code. * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES. (BASES_TYPE, BASES_DIRECT): Define. (calculate_bases, finish_bases, calculate_direct_bases): Declare. * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list, (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them. * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise. * semantics.c (calculate_bases, finish_bases, calculate_direct_bases, dfs_calculate_bases_pre, dfs_calculate_bases_post, calculate_bases_helper): Define. 2011-10-17 Michael Spertus <mike_spertus@symantec.com> * g++.dg/ext/bases.C: New test. 2011-10-17 Michael Spertus <mike_spertus@symantec.com> * include/tr2/type_traits (bases, direct_bases, typelist): New. 2011-10-17 Benjamin Kosnik <bkoz@redhat.com> * libstdc++-v3/include/Makefile.am: Add tr2 directory and includes. * libstdc++-v3/include/Makefile.in: Regenerate. * scripts/create_testsuite_files: Search tr2 directory. * testsuite/libstdc++-dg/conformance.exp: Same. * testsuite/tr2/bases/requirements/explicit_instantiation.cc: New. * testsuite/tr2/bases/requirements/typedefs.cc: New. * testsuite/tr2/bases/value.cc: New. * testsuite/tr2/direct_bases/requirements/ explicit_instantiation.cc: New. * testsuite/tr2/direct_bases/requirements/typedefs.cc: New. * testsuite/tr2/direct_bases/value.cc: New. From-SVN: r180121
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r--gcc/cp/pt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index bbe1139..6fc60d5 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -2980,6 +2980,9 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
}
break;
+ case BASES:
+ parameter_pack_p = true;
+ break;
default:
/* Not a parameter pack. */
break;
@@ -9127,6 +9130,15 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain,
tree arg_pack = NULL_TREE;
tree orig_arg = NULL_TREE;
+ if (TREE_CODE (parm_pack) == BASES)
+ {
+ if (BASES_DIRECT (parm_pack))
+ return calculate_direct_bases (tsubst_expr (BASES_TYPE (parm_pack),
+ args, complain, in_decl, false));
+ else
+ return calculate_bases (tsubst_expr (BASES_TYPE (parm_pack),
+ args, complain, in_decl, false));
+ }
if (TREE_CODE (parm_pack) == PARM_DECL)
{
if (!cp_unevaluated_operand)