PR c++/83116
* constexpr.c (cxx_eval_call_expression): Only look into
constexpr_call_table if ctx->strict.
* g++.dg/cpp1y/constexpr-83116.C: New test.
From-SVN: r255788
+2017-12-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83116
+ * constexpr.c (cxx_eval_call_expression): Only look into
+ constexpr_call_table if ctx->strict.
+
2017-12-18 Jakub Jelinek <jakub@redhat.com>
PR c++/83300
tree result = NULL_TREE;
constexpr_call *entry = NULL;
- if (depth_ok && !non_constant_args)
+ if (depth_ok && !non_constant_args && ctx->strict)
{
new_call.hash = iterative_hash_template_arg
(new_call.bindings, constexpr_fundef_hasher::hash (new_call.fundef));
+2017-12-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/83116
+ * g++.dg/cpp1y/constexpr-83116.C: New test.
+
2017-12-18 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/83424
--- /dev/null
+// PR c++/83116
+// { dg-do run { target c++14 } }
+// { dg-options "-O2" }
+
+struct S {
+ constexpr S () : s(0) { foo (); }
+ constexpr int foo () { return s; }
+ int s;
+};
+
+int
+main ()
+{
+ static S var;
+ var.s = 5;
+ if (var.s != 5 || var.foo () != 5)
+ __builtin_abort ();
+}