aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2016-02-19 23:31:16 -0500
committerJason Merrill <jason@gcc.gnu.org>2016-02-19 23:31:16 -0500
commit2207c59959535b8b513126335e3317d59bd58ce2 (patch)
treed038b95ebbc4f644bae8790434bf2f844546c414 /gcc/cp
parent313efd9efb15ebaac341319515dc227f0229f073 (diff)
downloadgcc-2207c59959535b8b513126335e3317d59bd58ce2.zip
gcc-2207c59959535b8b513126335e3317d59bd58ce2.tar.gz
gcc-2207c59959535b8b513126335e3317d59bd58ce2.tar.bz2
re PR c++/69743 (function overload with variadic arguments - template instantiation depth exceeds maximum (gcc4, clang - no problem))
PR c++/69743 * call.c (remaining_arguments): No longer static. * cp-tree.h: Declare it. * pt.c (more_specialized_fn): Use it. From-SVN: r233579
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/call.c2
-rw-r--r--gcc/cp/cp-tree.h1
-rw-r--r--gcc/cp/pt.c4
4 files changed, 11 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 571c416..ca3b14b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/69743
+ * call.c (remaining_arguments): No longer static.
+ * cp-tree.h: Declare it.
+ * pt.c (more_specialized_fn): Use it.
+
2016-02-19 Jakub Jelinek <jakub@redhat.com>
Bernd Edlinger <bernd.edlinger@hotmail.de>
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index cb71176..4226094 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -1905,7 +1905,7 @@ add_candidate (struct z_candidate **candidates,
/* Return the number of remaining arguments in the parameter list
beginning with ARG. */
-static int
+int
remaining_arguments (tree arg)
{
int n;
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 7800ae8..3c23a83a 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -5612,6 +5612,7 @@ extern tree make_temporary_var_for_ref_to_temp (tree, tree);
extern bool type_has_extended_temps (tree);
extern tree strip_top_quals (tree);
extern bool reference_related_p (tree, tree);
+extern int remaining_arguments (tree);
extern tree perform_implicit_conversion (tree, tree, tsubst_flags_t);
extern tree perform_implicit_conversion_flags (tree, tree, tsubst_flags_t, int);
extern tree build_integral_nontype_arg_conv (tree, tree, tsubst_flags_t);
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 7308389..65edfa7 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -20288,7 +20288,7 @@ more_specialized_fn (tree pat1, tree pat2, int len)
if (TREE_CODE (arg1) == TYPE_PACK_EXPANSION)
{
- int i, len2 = list_length (args2);
+ int i, len2 = remaining_arguments (args2);
tree parmvec = make_tree_vec (1);
tree argvec = make_tree_vec (len2);
tree ta = args2;
@@ -20312,7 +20312,7 @@ more_specialized_fn (tree pat1, tree pat2, int len)
}
else if (TREE_CODE (arg2) == TYPE_PACK_EXPANSION)
{
- int i, len1 = list_length (args1);
+ int i, len1 = remaining_arguments (args1);
tree parmvec = make_tree_vec (1);
tree argvec = make_tree_vec (len1);
tree ta = args1;