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