mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/83116 (Statement with no effect causes wrong code of static object constexpr method)
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
This commit is contained in:
parent
aa8ec7fb26
commit
4a58d2fe83
|
|
@ -1,3 +1,9 @@
|
|||
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
|
||||
|
|
|
|||
|
|
@ -1588,7 +1588,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
|
|||
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));
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
// 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 ();
|
||||
}
|
||||
Loading…
Reference in New Issue