diff --git a/compiler/rustc_serialize/src/opaque.rs b/compiler/rustc_serialize/src/opaque.rs
index cc8d1c25092eb..484147618bb68 100644
--- a/compiler/rustc_serialize/src/opaque.rs
+++ b/compiler/rustc_serialize/src/opaque.rs
@@ -178,6 +178,9 @@ impl FileEncoder {
 
     pub fn finish(&mut self) -> FileEncodeResult {
         self.flush();
+        if self.res.is_ok() {
+            self.res = self.file.sync_all();
+        }
         #[cfg(debug_assertions)]
         {
             self.finished = true;
diff --git a/library/stdarch b/library/stdarch
index 7df81ba8c3e2d..967e7afd87cbe 160000
--- a/library/stdarch
+++ b/library/stdarch
@@ -1 +1 @@
-Subproject commit 7df81ba8c3e2d02c2ace0c5a6f4f32d800c09e56
+Subproject commit 967e7afd87cbea3232581a4a55031134ab88f595