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

-- >8 --
Fixed by r11-2412.

        PR c++/57533

gcc/testsuite/ChangeLog:

        * g++.dg/eh/throw5.C: New test.
---
 gcc/testsuite/g++.dg/eh/throw5.C | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/eh/throw5.C

diff --git a/gcc/testsuite/g++.dg/eh/throw5.C b/gcc/testsuite/g++.dg/eh/throw5.C
new file mode 100644
index 00000000000..554e8700df0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/eh/throw5.C
@@ -0,0 +1,23 @@
+// PR c++/57533
+// { dg-do run { target c++11 } }
+
+struct X
+{
+    bool moved = false;
+
+    X() = default;
+    X(const X&) = default;
+    X(X&& x) { x.moved = true; }
+};
+
+int main()
+{
+    X x;
+    try {
+        throw x;
+    }
+    catch(...) {
+    }
+    if (x.moved)
+        __builtin_abort();
+}

base-commit: d4d4e874dee2d5b0abe5ceb9f2a78e5602e86030
-- 
2.48.1

Reply via email to