From 4fe84e2a4c0b600d2bc01f171b3b9dd1f4357208 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Tue, 6 Jun 2023 12:01:23 -0400 Subject: [PATCH] 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 diff --git a/gcc/testsuite/g++.dg/opt/nrv24.C b/gcc/testsuite/g++.dg/opt/nrv24.C new file mode 100644 index 000000000000..7a7a59b26f7d --- /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();} +} -- 2.47.2