[Bug c++/87893] [9 Regression] ICE in gimplify_expr, at gimplify.c:12557 on arm-linux-gnueabi

2019-01-23 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87893

--- Comment #4 from Jason Merrill  ---
Author: jason
Date: Wed Jan 23 13:54:23 2019
New Revision: 268185

URL: https://gcc.gnu.org/viewcvs?rev=268185=gcc=rev
Log:
PR c++/87893 - constexpr ctor ICE on ARM.

PR c++/88293 - ICE with comma expression.
* constexpr.c (initialized_type): Don't shortcut non-void type.
Handle COMPOUND_EXPR.
(cxx_eval_outermost_constant_expr): Return early for void type.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-comma1.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/constexpr.c

[Bug c++/87893] [9 Regression] ICE in gimplify_expr, at gimplify.c:12557 on arm-linux-gnueabi

2019-01-21 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87893

Jason Merrill  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #3 from Jason Merrill  ---
.

*** This bug has been marked as a duplicate of bug 87935 ***

[Bug c++/87893] [9 Regression] ICE in gimplify_expr, at gimplify.c:12557 on arm-linux-gnueabi

2019-01-21 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87893

Jason Merrill  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org

[Bug c++/87893] [9 Regression] ICE in gimplify_expr, at gimplify.c:12557 on arm-linux-gnueabi

2018-12-21 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87893

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug c++/87893] [9 Regression] ICE in gimplify_expr, at gimplify.c:12557 on arm-linux-gnueabi

2018-11-14 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87893

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
When trying to cp_fold pair::pair() ctor call, guess related to arm ABI
feature of returning pointer to the object from the ctor,
2542if (callee && DECL_DECLARED_CONSTEXPR_P (callee)
2543&& !flag_no_inline)
2544  r = maybe_constant_value (x);
returns for some reason a VOID_CST and then
2549if (DECL_CONSTRUCTOR_P (callee))
2550  {
2551loc = EXPR_LOCATION (x);
2552tree s = build_fold_indirect_ref_loc (loc,
2553  CALL_EXPR_ARG (x,
0));
2554r = build2_loc (loc, INIT_EXPR, TREE_TYPE (s), s, r);
2555  }
tries to initialize the class with that.  VOID_CST is a result of the ctor call
constexpr evaluation doing:
  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
   value by evaluating *this, but we don't bother; there's
   no need to put such a call in the hash table.  */
result = lval ? ctx->object : ctx->ctor;
where for some reason both ctx->object and ctx->ctor are NULL and then
  else if (!result)
result = void_node;
both in cxx_eval_call_expression.  No idea why that happens though and why
pair::pair() call isn't being folded at all on the same testcase on
x86_64-linux.