From 4fe84e2a4c0b600d2bc01f171b3b9dd1f4357208 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Tue, 6 Jun 2023 12:01:23 -0400 Subject: c++: add NRV testcase [PR58050] This was fixed in GCC 10. PR c++/58050 gcc/testsuite/ChangeLog: * g++.dg/opt/nrv24.C: New test. --- gcc/testsuite/g++.dg/opt/nrv24.C | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/nrv24.C (limited to 'gcc') diff --git a/gcc/testsuite/g++.dg/opt/nrv24.C b/gcc/testsuite/g++.dg/opt/nrv24.C new file mode 100644 index 0000000..7a7a59b --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/nrv24.C @@ -0,0 +1,18 @@ +// PR c++/58050 +// { dg-do link } + +struct B { + B() { } + B(const B&); // not defined, link error on unnecessary copy + ~B() { } +}; +struct A { + static B make() { return B(); } +} a; +A *ap() { return &a; } +int main () { + {B b = A::make();} + {B B = a.make();} + {B b = ap()->make();} + {B b = A().make();} +} -- cgit v1.1