c++: constexpr and volatile member function [PR80456]
authorJason Merrill <jason@redhat.com>
Thu, 15 Apr 2021 19:13:18 +0000 (15:13 -0400)
committerJason Merrill <jason@redhat.com>
Thu, 15 Apr 2021 20:32:00 +0000 (16:32 -0400)
commit3682052e4ccf0a29d1f61df1c8e31f8190eafafe
treec1e7ea4ee939342e91e67c24b355a168a8dc2d4e
parent2dbbbe893f75f587c48111ab4c97cf5e74fb91bb
c++: constexpr and volatile member function [PR80456]

When calling a static member function we still need to evaluate an explicit
object argument.  But we don't want to force a load of the entire object
if the argument is volatile, so we take its address.  If as a result it no
longer has any side-effects, we don't need to evaluate it after all.

gcc/cp/ChangeLog:

PR c++/80456
* call.c (build_new_method_call_1): Check again for side-effects
with a volatile object.

gcc/testsuite/ChangeLog:

PR c++/80456
* g++.dg/cpp0x/constexpr-volatile3.C: New test.
gcc/cp/call.c
gcc/testsuite/g++.dg/cpp0x/constexpr-volatile3.C [new file with mode: 0644]