As Jens says in the PR, we handle this correctly.

Tested x86_64-pc-linux-gnu, applying to trunk.

gcc/testsuite/ChangeLog:

        PR c++/52202
        * g++.dg/cpp0x/rv-life.C: New test.
---
 gcc/testsuite/g++.dg/cpp0x/rv-life.C | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/cpp0x/rv-life.C

diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-life.C 
b/gcc/testsuite/g++.dg/cpp0x/rv-life.C
new file mode 100644
index 00000000000..0fd1119d3ff
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-life.C
@@ -0,0 +1,12 @@
+// Core 1376
+// PR c++/52202
+// { dg-do run { target c++11 } }
+
+extern "C" void abort();
+bool x;
+struct T { ~T() { if (!x) abort (); } };
+int main()
+{
+  T&& r = static_cast<T&&>(T());
+  x = true;
+}

base-commit: 8cac6af6f8ba5cce69161459e572e59c2be60e75
-- 
2.30.2

Reply via email to