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

Tested x86_64-pc-linux-gnu, applying to trunk.

        * constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
        support.
---
 gcc/cp/constexpr.c | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index 417af182a2a..806d3ab2cff 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -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);
 

base-commit: f83c72fa36479084490f9a62adb4ed20aef72907
-- 
2.18.1

Reply via email to