Generate .rs.dtor() to clean up globals.

BUG=5186750

Change-Id: I9d1996153fe774a5ce95646a8a2e07aa6e7fa85f
diff --git a/slang_rs_backend.cpp b/slang_rs_backend.cpp
index 6ae73fc..0119cc9 100644
--- a/slang_rs_backend.cpp
+++ b/slang_rs_backend.cpp
@@ -169,6 +169,13 @@
                       "Pragma for version in source file must be set to 1"));
   }
 
+  // Create a static global destructor if necessary (to handle RS object
+  // runtime cleanup).
+  clang::FunctionDecl *FD = mRefCount.CreateStaticGlobalDtor();
+  if (FD) {
+    HandleTopLevelDecl(clang::DeclGroupRef(FD));
+  }
+
   // Process any static function declarations
   for (clang::DeclContext::decl_iterator I = TUDecl->decls_begin(),
           E = TUDecl->decls_end(); I != E; I++) {