c++: duplicated side effects of xobj arg [PR113640]
commit0857a00fe3226db8801384743b6d44353dcac9da
authorPatrick Palka <ppalka@redhat.com>
Tue, 30 Jan 2024 15:44:56 +0000 (30 10:44 -0500)
committerPatrick Palka <ppalka@redhat.com>
Tue, 30 Jan 2024 15:44:56 +0000 (30 10:44 -0500)
treed05cbfc17c31b84beb751de92f38e0270367f5e5
parentaf37bef86199e50368cbfbc97befe0622a07f12f
c++: duplicated side effects of xobj arg [PR113640]

We miscompile the below testcase because keep_unused_object_arg thinks
the object argument of an xobj member function is unused, and so it ends
up duplicating the argument's side effects.

PR c++/113640

gcc/cp/ChangeLog:

* call.cc (keep_unused_object_arg): Punt for an xobj member
function.

gcc/testsuite/ChangeLog:

* g++.dg/cpp23/explicit-obj-lambda14.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/call.cc
gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C [new file with mode: 0644]