From 7321fbd5edb3905d2fcf75c8f5c6e0b9734d0145 Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 18 Nov 2014 17:07:24 +0000 Subject: [PATCH] PR c++/63934 * constexpr.c (cxx_eval_call_expression): Check DECL_CONSTRUCTOR_P rather than VOID_TYPE_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217729 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/constexpr.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 117355975fa2..28d8796842d6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2014-11-18 Jason Merrill + PR c++/63934 + * constexpr.c (cxx_eval_call_expression): Check DECL_CONSTRUCTOR_P + rather than VOID_TYPE_P. + * pt.c (instantiate_template_1): Use tsubst_aggr_type for context. PR c++/58102 diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index 2f0708b40ec3..4325caa0672d 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -1328,7 +1328,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, addr, non_constant_p, overflow_p, &jump_target); - if (VOID_TYPE_P (TREE_TYPE (res))) + if (DECL_CONSTRUCTOR_P (fun)) /* This can be null for a subobject constructor call, in which case what we care about is the initialization side-effects rather than the value. We could get at the @@ -1367,7 +1367,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, { /* If this was a call to initialize an object, set the type of the CONSTRUCTOR to the type of that object. */ - if (DECL_CONSTRUCTOR_P (fun)) + if (DECL_CONSTRUCTOR_P (fun) && !use_new_call) { tree ob_arg = get_nth_callarg (t, 0); STRIP_NOPS (ob_arg); -- 2.47.3