diff --git a/Cargo.lock b/Cargo.lock
index 7bf9527f47d12..eba2ff82fb8a3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2451,9 +2451,9 @@ checksum = "dd20eec3dbe4376829cb7d80ae6ac45e0a766831dca50202ff2d40db46a8a024"
 
 [[package]]
 name = "os_info"
-version = "3.0.7"
+version = "3.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ac91020bfed8cc3f8aa450d4c3b5fa1d3373fc091c8a92009f3b27749d5a227"
+checksum = "b89dd55b8d8d97dabd0d1adc625d188378fcf87632825bfe9c956acc9a11a72a"
 dependencies = [
  "log",
  "serde",
diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs
index 6ee1dbe4ae3ee..959e66fbf70ef 100644
--- a/compiler/rustc_ast_lowering/src/expr.rs
+++ b/compiler/rustc_ast_lowering/src/expr.rs
@@ -12,7 +12,7 @@ use rustc_hir::definitions::DefPathData;
 use rustc_span::hygiene::ExpnId;
 use rustc_span::source_map::{respan, DesugaringKind, Span, Spanned};
 use rustc_span::symbol::{sym, Ident, Symbol};
-use rustc_span::DUMMY_SP;
+use rustc_span::{hygiene::ForLoopLoc, BytePos, DUMMY_SP};
 
 impl<'hir> LoweringContext<'_, 'hir> {
     fn lower_exprs(&mut self, exprs: &[AstP<Expr>]) -> &'hir [hir::Expr<'hir>] {
@@ -864,6 +864,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
             None => {
                 if movability == Movability::Static {
                     struct_span_err!(self.sess, fn_decl_span, E0697, "closures cannot be static")
+                        .span_suggestion(
+                            fn_decl_span
+                                .with_lo(fn_decl_span.lo() + BytePos("static ".len() as u32)),
+                            "remove the `static` keyword to define a regular closure",
+                            "".into(),
+                            rustc_errors::Applicability::MachineApplicable,
+                        )
                         .emit();
                 }
                 None
diff --git a/compiler/rustc_codegen_gcc/build.sh b/compiler/rustc_codegen_gcc/build.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/build_sysroot/build_sysroot.sh b/compiler/rustc_codegen_gcc/build_sysroot/build_sysroot.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/build_sysroot/prepare_sysroot_src.sh b/compiler/rustc_codegen_gcc/build_sysroot/prepare_sysroot_src.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/cargo.sh b/compiler/rustc_codegen_gcc/cargo.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/clean_all.sh b/compiler/rustc_codegen_gcc/clean_all.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/prepare.sh b/compiler/rustc_codegen_gcc/prepare.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/prepare_build.sh b/compiler/rustc_codegen_gcc/prepare_build.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/rustup.sh b/compiler/rustc_codegen_gcc/rustup.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_codegen_gcc/test.sh b/compiler/rustc_codegen_gcc/test.sh
old mode 100755
new mode 100644
diff --git a/compiler/rustc_passes/src/loops.rs b/compiler/rustc_passes/src/loops.rs
index 4bfac1b72983e..a0ba796cdad69 100644
--- a/compiler/rustc_passes/src/loops.rs
+++ b/compiler/rustc_passes/src/loops.rs
@@ -233,6 +233,12 @@ impl<'a, 'hir> CheckLoopVisitor<'a, 'hir> {
             Normal | AnonConst => {
                 struct_span_err!(self.sess, span, E0268, "`{}` outside of a loop", name)
                     .span_label(span, format!("cannot `{}` outside of a loop", name))
+                    .span_suggestion(
+                        span,
+                        &format!("consider removing the `{}`", name),
+                        String::new(),
+                        Applicability::MaybeIncorrect,
+                    )
                     .emit();
             }
         }
diff --git a/src/doc/book b/src/doc/book
index 8a0bb3c96e719..fcb5e0ea68112 160000
--- a/src/doc/book
+++ b/src/doc/book
@@ -1 +1 @@
-Subproject commit 8a0bb3c96e71927b80fa2286d7a5a5f2547c6aa4
+Subproject commit fcb5e0ea68112d85a1d29a7a7335978ef2a02181
diff --git a/src/doc/edition-guide b/src/doc/edition-guide
index beea0a3cdc388..2d9b1b9da706d 160000
--- a/src/doc/edition-guide
+++ b/src/doc/edition-guide
@@ -1 +1 @@
-Subproject commit beea0a3cdc3885375342fd010f9ad658e6a5e09a
+Subproject commit 2d9b1b9da706de24650fdc5c3b0182f55c82115d
diff --git a/src/doc/embedded-book b/src/doc/embedded-book
index 8c395bdd8073d..4c76da9ddb465 160000
--- a/src/doc/embedded-book
+++ b/src/doc/embedded-book
@@ -1 +1 @@
-Subproject commit 8c395bdd8073deb20ca67e1ed4b14a3a7e315a37
+Subproject commit 4c76da9ddb4650203c129fceffdea95a3466c205
diff --git a/src/doc/nomicon b/src/doc/nomicon
index c05c452b36358..fe6227eb3c853 160000
--- a/src/doc/nomicon
+++ b/src/doc/nomicon
@@ -1 +1 @@
-Subproject commit c05c452b36358821bf4122f9c418674edd1d713d
+Subproject commit fe6227eb3c8533200c52dffa42ef1b6f2f02c40e
diff --git a/src/doc/reference b/src/doc/reference
index 06f9e61931bcf..0e5ed7a4bec06 160000
--- a/src/doc/reference
+++ b/src/doc/reference
@@ -1 +1 @@
-Subproject commit 06f9e61931bcf58b91dfe6c924057e42ce273ee1
+Subproject commit 0e5ed7a4bec065f0cc18c35d1c904639e095314d
diff --git a/src/doc/rust-by-example b/src/doc/rust-by-example
index 1ca6a7bd1d73e..9d4132b56c499 160000
--- a/src/doc/rust-by-example
+++ b/src/doc/rust-by-example
@@ -1 +1 @@
-Subproject commit 1ca6a7bd1d73edc4a3e6c7d6a40f5d4b66c1e517
+Subproject commit 9d4132b56c4999cd3ce1aeca5f1b2f2cb0d11c24
diff --git a/src/doc/rustc-dev-guide b/src/doc/rustc-dev-guide
index 9bf0028b55779..9198465b6ca8b 160000
--- a/src/doc/rustc-dev-guide
+++ b/src/doc/rustc-dev-guide
@@ -1 +1 @@
-Subproject commit 9bf0028b557798ddd07a6f652e4d0c635d3d6620
+Subproject commit 9198465b6ca8bed669df0cbb67c0e6d0b140803c
diff --git a/src/llvm-project b/src/llvm-project
index 6b3dbcc81a470..cba558df777a0 160000
--- a/src/llvm-project
+++ b/src/llvm-project
@@ -1 +1 @@
-Subproject commit 6b3dbcc81a470e5da84576d63fcfc19e3b1154cd
+Subproject commit cba558df777a045b5657d56c29944e9e8fd3a776
diff --git a/src/test/ui/error-codes/E0025.stderr b/src/test/ui/error-codes/E0025.stderr
index dfec6d0276a59..52a646cf515c6 100644
--- a/src/test/ui/error-codes/E0025.stderr
+++ b/src/test/ui/error-codes/E0025.stderr
@@ -2,8 +2,10 @@ error[E0025]: field `a` bound multiple times in the pattern
   --> $DIR/E0025.rs:8:21
    |
 LL |     let Foo { a: x, a: y, b: 0 } = x;
-   |               ----  ^^^^ multiple uses of `a` in pattern
-   |               |
+   |               ----  ^^^^
+   |               |     |
+   |               |     multiple uses of `a` in pattern
+   |               |     help: consider removing one usage of: ``a``
    |               first use of `a`
 
 error: aborting due to previous error
diff --git a/src/test/ui/error-codes/E0268.stderr b/src/test/ui/error-codes/E0268.stderr
index c926f9e487494..2e32d20ee47b7 100644
--- a/src/test/ui/error-codes/E0268.stderr
+++ b/src/test/ui/error-codes/E0268.stderr
@@ -2,7 +2,10 @@ error[E0268]: `break` outside of a loop
   --> $DIR/E0268.rs:2:5
    |
 LL |     break;
-   |     ^^^^^ cannot `break` outside of a loop
+   |     ^^^^^
+   |     |
+   |     cannot `break` outside of a loop
+   |     help: consider removing the: `break`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/error-codes/E0697.rs b/src/test/ui/error-codes/E0697.rs
new file mode 100644
index 0000000000000..f1afa63aac0d3
--- /dev/null
+++ b/src/test/ui/error-codes/E0697.rs
@@ -0,0 +1,3 @@
+fn main() {
+    static || {}; //~ ERROR E0697
+}
diff --git a/src/test/ui/error-codes/E0697.stderr b/src/test/ui/error-codes/E0697.stderr
new file mode 100644
index 0000000000000..5c862e48e75e0
--- /dev/null
+++ b/src/test/ui/error-codes/E0697.stderr
@@ -0,0 +1,9 @@
+error[E0697]: closures cannot be static
+  --> $DIR/E0697.rs:2:5
+   |
+LL |     static || {};
+   |     ^^^^^^^^^ help: consider removing the: `static`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0697`.
diff --git a/src/tools/rust-analyzer b/src/tools/rust-analyzer
index 68319187d6370..f1d7f98ed07b9 160000
--- a/src/tools/rust-analyzer
+++ b/src/tools/rust-analyzer
@@ -1 +1 @@
-Subproject commit 68319187d63707fa36d7c215ed0e444e87d9652a
+Subproject commit f1d7f98ed07b9934286b9c4809dd4d7a47537879