diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
index 3b6f02c9368c9..83a897f1ab74f 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
@@ -84,6 +84,7 @@ impl Step for ToolBuild {
                 | "cargo"
                 | "clippy-driver"
                 | "miri"
+                | "rustfmt"
                 => {}
 
                 _ => return,
diff --git a/src/libcore/mem/mod.rs b/src/libcore/mem/mod.rs
index 91449f09936aa..b43ba6ac34032 100644
--- a/src/libcore/mem/mod.rs
+++ b/src/libcore/mem/mod.rs
@@ -374,13 +374,13 @@ pub fn align_of_val<T: ?Sized>(val: &T) -> usize {
 /// will do a single needs_drop check for all the values.
 ///
 /// Types like Vec therefore just `drop_in_place(&mut self[..])` without using
-/// needs_drop explicitly. Types like HashMap, on the other hand, have to drop
+/// needs_drop explicitly. Types like `HashMap`, on the other hand, have to drop
 /// values one at a time and should use this API.
 ///
 ///
 /// # Examples
 ///
-/// Here's an example of how a collection might make use of needs_drop:
+/// Here's an example of how a collection might make use of `needs_drop`:
 ///
 /// ```
 /// use std::{mem, ptr};
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 6a35906d20c2f..003fdd501a35a 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -2003,7 +2003,7 @@ pub fn build_session_options_and_crate_config(
             None |
             Some("human") => ErrorOutputType::HumanReadable(HumanReadableErrorType::Default(color)),
             Some("human-annotate-rs") => {
-                ErrorOutputType::HumanReadable(HumanReadableErrorType::AnnotateRs(color))
+                ErrorOutputType::HumanReadable(HumanReadableErrorType::AnnotateSnippet(color))
             },
             Some("json") => ErrorOutputType::Json { pretty: false, json_rendered },
             Some("pretty-json") => ErrorOutputType::Json { pretty: true, json_rendered },
@@ -2041,7 +2041,7 @@ pub fn build_session_options_and_crate_config(
                 "--error-format=pretty-json is unstable",
             );
         }
-        if let ErrorOutputType::HumanReadable(HumanReadableErrorType::AnnotateRs(_)) =
+        if let ErrorOutputType::HumanReadable(HumanReadableErrorType::AnnotateSnippet(_)) =
             error_format {
             early_error(
                 ErrorOutputType::Json { pretty: false, json_rendered },
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index b3a9d764b1db0..d04b9ac083ce5 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -24,7 +24,7 @@ use rustc_data_structures::sync::{
 use errors::{DiagnosticBuilder, DiagnosticId, Applicability};
 use errors::emitter::{Emitter, EmitterWriter};
 use errors::emitter::HumanReadableErrorType;
-use errors::annotate_rs_emitter::{AnnotateRsEmitterWriter};
+use errors::annotate_snippet_emitter_writer::{AnnotateSnippetEmitterWriter};
 use syntax::ast::{self, NodeId};
 use syntax::edition::Edition;
 use syntax::feature_gate::{self, AttributeType};
@@ -1034,8 +1034,8 @@ fn default_emitter(
         (config::ErrorOutputType::HumanReadable(kind), dst) => {
             let (short, color_config) = kind.unzip();
 
-            if let HumanReadableErrorType::AnnotateRs(_) = kind {
-                let emitter = AnnotateRsEmitterWriter::new(
+            if let HumanReadableErrorType::AnnotateSnippet(_) = kind {
+                let emitter = AnnotateSnippetEmitterWriter::new(
                     Some(source_map.clone()),
                     short,
                 );
diff --git a/src/librustc_errors/annotate_rs_emitter.rs b/src/librustc_errors/annotate_snippet_emitter_writer.rs
similarity index 94%
rename from src/librustc_errors/annotate_rs_emitter.rs
rename to src/librustc_errors/annotate_snippet_emitter_writer.rs
index de42389de74ba..9f9c7588d977b 100644
--- a/src/librustc_errors/annotate_rs_emitter.rs
+++ b/src/librustc_errors/annotate_snippet_emitter_writer.rs
@@ -1,9 +1,9 @@
-/// Emit diagnostics using the `annotate-snippets` library
-///
-/// This is the equivalent of `./emitter.rs` but making use of the
-/// [`annotate-snippets`][annotate_snippets] library instead of building the output ourselves.
-///
-/// [annotate_snippets]: https://docs.rs/crate/annotate-snippets/
+//! Emit diagnostics using the `annotate-snippets` library
+//!
+//! This is the equivalent of `./emitter.rs` but making use of the
+//! [`annotate-snippets`][annotate_snippets] library instead of building the output ourselves.
+//!
+//! [annotate_snippets]: https://docs.rs/crate/annotate-snippets/
 
 use syntax_pos::{SourceFile, MultiSpan, Loc};
 use crate::{
@@ -18,8 +18,8 @@ use annotate_snippets::display_list::DisplayList;
 use annotate_snippets::formatter::DisplayListFormatter;
 
 
-/// Generates diagnostics using annotate-rs
-pub struct AnnotateRsEmitterWriter {
+/// Generates diagnostics using annotate-snippet
+pub struct AnnotateSnippetEmitterWriter {
     source_map: Option<Lrc<SourceMapperDyn>>,
     /// If true, hides the longer explanation text
     short_message: bool,
@@ -27,7 +27,7 @@ pub struct AnnotateRsEmitterWriter {
     ui_testing: bool,
 }
 
-impl Emitter for AnnotateRsEmitterWriter {
+impl Emitter for AnnotateSnippetEmitterWriter {
     /// The entry point for the diagnostics generation
     fn emit_diagnostic(&mut self, db: &DiagnosticBuilder<'_>) {
         let primary_span = db.span.clone();
@@ -158,7 +158,7 @@ impl<'a>  DiagnosticConverter<'a> {
     }
 }
 
-impl AnnotateRsEmitterWriter {
+impl AnnotateSnippetEmitterWriter {
     pub fn new(
         source_map: Option<Lrc<SourceMapperDyn>>,
         short_message: bool
diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs
index fcc0358ea7c11..3bf477efe35f9 100644
--- a/src/librustc_errors/emitter.rs
+++ b/src/librustc_errors/emitter.rs
@@ -24,7 +24,7 @@ use termcolor::{WriteColor, Color, Buffer};
 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum HumanReadableErrorType {
     Default(ColorConfig),
-    AnnotateRs(ColorConfig),
+    AnnotateSnippet(ColorConfig),
     Short(ColorConfig),
 }
 
@@ -34,7 +34,7 @@ impl HumanReadableErrorType {
         match self {
             HumanReadableErrorType::Default(cc) => (false, cc),
             HumanReadableErrorType::Short(cc) => (true, cc),
-            HumanReadableErrorType::AnnotateRs(cc) => (false, cc),
+            HumanReadableErrorType::AnnotateSnippet(cc) => (false, cc),
         }
     }
     pub fn new_emitter(
diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs
index 7bc7d0ddaf243..1831d58e73607 100644
--- a/src/librustc_errors/lib.rs
+++ b/src/librustc_errors/lib.rs
@@ -33,7 +33,7 @@ use termcolor::{ColorSpec, Color};
 mod diagnostic;
 mod diagnostic_builder;
 pub mod emitter;
-pub mod annotate_rs_emitter;
+pub mod annotate_snippet_emitter_writer;
 mod snippet;
 pub mod registry;
 mod styled_buffer;
diff --git a/src/tools/clippy b/src/tools/clippy
index 20da8f45c601d..71be6f62fa920 160000
--- a/src/tools/clippy
+++ b/src/tools/clippy
@@ -1 +1 @@
-Subproject commit 20da8f45c601d0eec8af8c0897abd536ad57951f
+Subproject commit 71be6f62fa920c0bd10cdf3a29aeb8c6719a8075
diff --git a/src/tools/rustc-workspace-hack/Cargo.toml b/src/tools/rustc-workspace-hack/Cargo.toml
index 18d682640db01..747200611224e 100644
--- a/src/tools/rustc-workspace-hack/Cargo.toml
+++ b/src/tools/rustc-workspace-hack/Cargo.toml
@@ -26,6 +26,7 @@ features = [
   "basetsd",
   "consoleapi",
   "errhandlingapi",
+  "ioapiset",
   "jobapi",
   "jobapi2",
   "knownfolders",
@@ -33,12 +34,14 @@ features = [
   "memoryapi",
   "minschannel",
   "minwinbase",
+  "namedpipeapi",
+  "ntdef",
   "ntsecapi",
   "ntstatus",
   "objbase",
-  "profileapi",
   "processenv",
   "processthreadsapi",
+  "profileapi",
   "psapi",
   "schannel",
   "securitybaseapi",
@@ -53,6 +56,10 @@ features = [
   "winbase",
   "wincon",
   "wincrypt",
+  "winsock2",
+  "ws2def",
+  "ws2ipdef",
+  "ws2tcpip",
 ]
 
 [dependencies]