https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115900

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |mpolacek at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #7 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Thus:

--- a/gcc/cp/constexpr.cc
+++ b/gcc/cp/constexpr.cc
@@ -3123,10 +3123,14 @@ cxx_eval_call_expression (const constexpr_ctx *ctx,
tree t,
     At this point it has already been evaluated in the call
     to cxx_bind_parameters_in_call.  */
       new_obj = TREE_VEC_ELT (new_call.bindings, 0);
-      new_obj = cxx_fold_indirect_ref (ctx, loc, DECL_CONTEXT (fun), new_obj);
-
-      if (ctx->call && ctx->call->fundef
-     && DECL_CONSTRUCTOR_P (ctx->call->fundef->decl))
+      bool empty_base = false;
+      new_obj = cxx_fold_indirect_ref (ctx, loc, DECL_CONTEXT (fun), new_obj,
+                      &empty_base);
+
+      if (empty_base)
+   new_obj = NULL_TREE;
+      else if (ctx->call && ctx->call->fundef
+          && DECL_CONSTRUCTOR_P (ctx->call->fundef->decl))
    {
      tree cur_obj = TREE_VEC_ELT (ctx->call->bindings, 0);
      STRIP_NOPS (cur_obj);

Reply via email to