PR c++/71828
* constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
For lval don't use cxx_eval_unary_expression and instead recurse
and if needed rebuild the reference.
* g++.dg/cpp0x/constexpr-71828.C: New test.
From-SVN: r238442
2016-07-18 Jakub Jelinek <jakub@redhat.com>
+ PR c++/71828
+ * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
+ For lval don't use cxx_eval_unary_expression and instead recurse
+ and if needed rebuild the reference.
+
PR c++/71826
* pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
case REALPART_EXPR:
case IMAGPART_EXPR:
+ if (lval)
+ {
+ r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 0), lval,
+ non_constant_p, overflow_p);
+ if (r == error_mark_node)
+ ;
+ else if (r == TREE_OPERAND (t, 0))
+ r = t;
+ else
+ r = fold_build1 (TREE_CODE (t), TREE_TYPE (t), r);
+ break;
+ }
+ /* FALLTHRU */
case CONJ_EXPR:
case FIX_TRUNC_EXPR:
case FLOAT_EXPR:
2016-07-18 Jakub Jelinek <jakub@redhat.com>
+ PR c++/71828
+ * g++.dg/cpp0x/constexpr-71828.C: New test.
+
PR c++/71826
* g++.dg/template/pr71826.C: New test.
--- /dev/null
+// PR c++/71828
+// { dg-do compile { target c++11 } }
+
+constexpr _Complex int a { 1, 2 };
+static_assert (& __imag a != &__real a, "");