diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-18 17:07:24 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-18 17:07:24 +0000 |
commit | 7321fbd5edb3905d2fcf75c8f5c6e0b9734d0145 (patch) | |
tree | 53b4559d47a26ddc6ee87eb8ea55094d828dba04 | |
parent | ef7f5966f4a10b3b7eb58f60750868636ef981a6 (diff) |
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
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/constexpr.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 117355975fa..28d8796842d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2014-11-18 Jason Merrill <jason@redhat.com> + 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 2f0708b40ec..4325caa0672 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); |