summaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-12 19:59:31 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-12 19:59:31 +0000
commit1b410098c409dad80e1f6f1f37e8873cf483bd25 (patch)
tree549fbd7f45b4c2063e6078f170a0a31b1abddd5a /gcc/cp
parent3dd38952c095b4425fe4232beb1713cf1ff08922 (diff)
downloadgcc-1b410098c409dad80e1f6f1f37e8873cf483bd25.tar.gz
/cp
2010-07-12 Paolo Carlini <paolo.carlini@oracle.com> PR c++/44907 * call.c (build_temp): Add tsubst_flags_t complain parameter; adjust build_special_member_call call, pass complain. (convert_like_real): Adjust build_temp call, pass complain. /testsuite 2010-07-12 Paolo Carlini <paolo.carlini@oracle.com> PR c++/44907 * g++.dg/template/sfinae19.C: New. * g++.dg/template/sfinae20.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162113 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/call.c8
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index bdae8fc813c..27061ada6fa 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2010-07-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/44907
+ * call.c (build_temp): Add tsubst_flags_t complain parameter;
+ adjust build_special_member_call call, pass complain.
+ (convert_like_real): Adjust build_temp call, pass complain.
+
2010-07-09 Jason Merrill <jason@redhat.com>
PR c++/43120
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 0bf7b8eb58d..ca34a6c9afc 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -204,7 +204,7 @@ static void add_candidates (tree, tree, const VEC(tree,gc) *, tree, tree, bool,
tree, tree, int, struct z_candidate **);
static conversion *merge_conversion_sequences (conversion *, conversion *);
static bool magic_varargs_p (tree);
-static tree build_temp (tree, tree, int, diagnostic_t *);
+static tree build_temp (tree, tree, int, diagnostic_t *, tsubst_flags_t);
/* Returns nonzero iff the destructor name specified in NAME matches BASETYPE.
NAME can take many forms... */
@@ -4851,7 +4851,7 @@ enforce_access (tree basetype_path, tree decl, tree diag_decl)
static tree
build_temp (tree expr, tree type, int flags,
- diagnostic_t *diagnostic_kind)
+ diagnostic_t *diagnostic_kind, tsubst_flags_t complain)
{
int savew, savee;
VEC(tree,gc) *args;
@@ -4859,7 +4859,7 @@ build_temp (tree expr, tree type, int flags,
savew = warningcount, savee = errorcount;
args = make_tree_vector_single (expr);
expr = build_special_member_call (NULL_TREE, complete_ctor_identifier,
- &args, type, flags, tf_warning_or_error);
+ &args, type, flags, complain);
release_tree_vector (args);
if (warningcount > savew)
*diagnostic_kind = DK_WARNING;
@@ -5132,7 +5132,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
conversion (i.e. the second step of copy-initialization), so
don't allow any more. */
flags |= LOOKUP_NO_CONVERSION;
- expr = build_temp (expr, totype, flags, &diag_kind);
+ expr = build_temp (expr, totype, flags, &diag_kind, complain);
if (diag_kind && fn)
{
if ((complain & tf_error))