Give scope_exit helper correct move semantics

llvm-svn: 323442
diff --git a/llvm/unittests/ADT/ScopeExitTest.cpp b/llvm/unittests/ADT/ScopeExitTest.cpp
index 301942c..ab11dff 100644
--- a/llvm/unittests/ADT/ScopeExitTest.cpp
+++ b/llvm/unittests/ADT/ScopeExitTest.cpp
@@ -29,4 +29,21 @@
   EXPECT_TRUE(Called);
 }
 
+TEST(ScopeExitTest, Release) {
+  int Count = 0;
+  auto Increment = [&] { ++Count; };
+  {
+    auto G = make_scope_exit(Increment);
+    auto H = std::move(G);
+    auto I = std::move(G);
+    EXPECT_EQ(0, Count);
+  }
+  EXPECT_EQ(1, Count);
+  {
+    auto G = make_scope_exit(Increment);
+    G.release();
+  }
+  EXPECT_EQ(1, Count);
+}
+
 } // end anonymous namespace