Remove constexpr support for DECL_BY_REFERENCE.

Since we switched to doing constexpr evaluation on pre-GENERIC trees,
we don't have to handle DECL_BY_REFERENCE.

	* constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
	support.

From-SVN: r280017
This commit is contained in:
Jason Merrill 2020-01-08 15:31:16 -05:00 committed by Jason Merrill
parent 5b18be0b2b
commit cd3ca6cb11
2 changed files with 8 additions and 14 deletions

View File

@ -1,3 +1,8 @@
2020-01-08 Jason Merrill <jason@redhat.com>
* constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
support.
2020-01-07 Paolo Carlini <paolo.carlini@oracle.com>
* init.c (build_new): Add location_t parameter and use it throughout.

View File

@ -2333,17 +2333,8 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
remapped = DECL_CHAIN (remapped);
}
/* Add the RESULT_DECL to the values map, too. */
tree slot = NULL_TREE;
if (DECL_BY_REFERENCE (res))
{
slot = AGGR_INIT_EXPR_SLOT (t);
tree addr = build_address (slot);
addr = build_nop (TREE_TYPE (res), addr);
ctx->global->values.put (res, addr);
ctx->global->values.put (slot, NULL_TREE);
}
else
ctx->global->values.put (res, NULL_TREE);
gcc_assert (!DECL_BY_REFERENCE (res));
ctx->global->values.put (res, NULL_TREE);
/* Track the callee's evaluated SAVE_EXPRs and TARGET_EXPRs so that
we can forget their values after the call. */
@ -2370,7 +2361,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
result = void_node;
else
{
result = *ctx->global->values.get (slot ? slot : res);
result = *ctx->global->values.get (res);
if (result == NULL_TREE && !*non_constant_p)
{
if (!ctx->quiet)
@ -2409,8 +2400,6 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
one constexpr evaluation? If so, maybe also clear out
other vars from call, maybe in BIND_EXPR handling? */
ctx->global->values.remove (res);
if (slot)
ctx->global->values.remove (slot);
for (tree parm = parms; parm; parm = TREE_CHAIN (parm))
ctx->global->values.remove (parm);