diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index 5c1fd2a1aa1..ead0b4259a9 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -135,20 +135,3 @@ pub fn oom() -> ! {
     //                allocate.
     unsafe { core::intrinsics::abort() }
 }
-
-// FIXME(#14344): When linking liballoc with libstd, this library will be linked
-//                as an rlib (it only exists as an rlib). It turns out that an
-//                optimized standard library doesn't actually use *any* symbols
-//                from this library. Everything is inlined and optimized away.
-//                This means that linkers will actually omit the object for this
-//                file, even though it may be needed in the future.
-//
-//                To get around this for now, we define a dummy symbol which
-//                will never get inlined so the stdlib can call it. The stdlib's
-//                reference to this symbol will cause this library's object file
-//                to get linked in to libstd successfully (the linker won't
-//                optimize it out).
-#[doc(hidden)]
-#[unstable(feature = "issue_14344_fixme")]
-#[cfg(stage0)]
-pub fn fixme_14344_be_sure_to_link_to_collections() {}
diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs
index a2b2ae220f8..1f948384992 100644
--- a/src/libcollections/lib.rs
+++ b/src/libcollections/lib.rs
@@ -133,13 +133,6 @@ pub mod btree_set {
     pub use btree::set::*;
 }
 
-
-// FIXME(#14344) this shouldn't be necessary
-#[doc(hidden)]
-#[unstable(feature = "issue_14344_fixme")]
-#[cfg(stage0)]
-pub fn fixme_14344_be_sure_to_link_to_collections() {}
-
 #[cfg(not(test))]
 mod std {
     pub use core::ops;      // RangeFull
diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs
index ebff4a9126d..cc58952be60 100644
--- a/src/libcollections/string.rs
+++ b/src/libcollections/string.rs
@@ -979,7 +979,6 @@ impl ops::Index<ops::RangeFull> for String {
     }
 }
 
-#[cfg(not(stage0))]
 #[stable(feature = "derefmut_for_string", since = "1.2.0")]
 impl ops::IndexMut<ops::Range<usize>> for String {
     #[inline]
@@ -987,7 +986,6 @@ impl ops::IndexMut<ops::Range<usize>> for String {
         &mut self[..][index]
     }
 }
-#[cfg(not(stage0))]
 #[stable(feature = "derefmut_for_string", since = "1.2.0")]
 impl ops::IndexMut<ops::RangeTo<usize>> for String {
     #[inline]
@@ -995,7 +993,6 @@ impl ops::IndexMut<ops::RangeTo<usize>> for String {
         &mut self[..][index]
     }
 }
-#[cfg(not(stage0))]
 #[stable(feature = "derefmut_for_string", since = "1.2.0")]
 impl ops::IndexMut<ops::RangeFrom<usize>> for String {
     #[inline]
diff --git a/src/liblibc/lib.rs b/src/liblibc/lib.rs
index dfcd08b6990..c229df34ccf 100644
--- a/src/liblibc/lib.rs
+++ b/src/liblibc/lib.rs
@@ -6535,8 +6535,4 @@ pub mod funcs {
     }
 }
 
-#[doc(hidden)]
-#[cfg(stage0)]
-pub fn issue_14344_workaround() {} // FIXME #14344 force linkage to happen correctly
-
 #[test] fn work_on_windows() { } // FIXME #10872 needed for a happy windows
diff --git a/src/libstd/sys/windows/thread_local.rs b/src/libstd/sys/windows/thread_local.rs
index a2dbb0f8342..7550b7ce6c3 100644
--- a/src/libstd/sys/windows/thread_local.rs
+++ b/src/libstd/sys/windows/thread_local.rs
@@ -231,9 +231,12 @@ pub static p_thread_callback: unsafe extern "system" fn(LPVOID, DWORD,
                                                         LPVOID) =
         on_tls_callback;
 
-#[cfg(target_env = "msvc")]
+#[cfg(all(target_env = "msvc", target_pointer_width = "64"))]
 #[link_args = "/INCLUDE:_tls_used"]
 extern {}
+#[cfg(all(target_env = "msvc", target_pointer_width = "32"))]
+#[link_args = "/INCLUDE:__tls_used"]
+extern {}
 
 #[allow(warnings)]
 unsafe extern "system" fn on_tls_callback(h: LPVOID,
diff --git a/src/snapshots.txt b/src/snapshots.txt
index 1b2613d8c50..cb5790b34f4 100644
--- a/src/snapshots.txt
+++ b/src/snapshots.txt
@@ -1,3 +1,11 @@
+S 2015-07-17 d4432b3
+  linux-i386 93f6216a35d3bed3cedf244c9aff4cd716336bd9
+  linux-x86_64 d8f4967fc71a153c925faecf95a7feadf7e463a4
+  macos-i386 29852c4d4b5a851f16d627856a279cae5bf9bd01
+  macos-x86_64 1a20259899321062a0325edb1d22990f05d18708
+  winnt-i386 df50210f41db9a6f2968be5773b8e3bae32bb823
+  winnt-x86_64 d7774b724988485652781a804bdf8e05d28ead48
+
 S 2015-05-24 ba0e1cd
   bitrig-x86_64 2a710e16e3e3ef3760df1f724d66b3af34c1ef3f
   freebsd-x86_64 370db40613f5c08563ed7e38357826dd42d4e0f8