Accept `all` as an alias for all known features in `rs_bindings_from_cc`.

PiperOrigin-RevId: 656547317
Change-Id: I273e291e7f268d09a254094c04fb49c7307763cc
diff --git a/bazel/llvm.bzl b/bazel/llvm.bzl
index cb1434e..898d768 100644
--- a/bazel/llvm.bzl
+++ b/bazel/llvm.bzl
@@ -53,7 +53,7 @@
             executable = False,
         )
 
-LLVM_COMMIT_SHA = "58fb51492d9669525662fa269295d85537968569"
+LLVM_COMMIT_SHA = "51d4980a133db12888207698e39c469cb7055cac"
 
 def llvm_loader_repository_dependencies():
     # This *declares* the dependency, but it won't actually be *downloaded* unless it's used.
diff --git a/features/README.md b/features/README.md
index bfe4931..87e2790 100644
--- a/features/README.md
+++ b/features/README.md
@@ -46,9 +46,9 @@
 `--//rs_bindings_from_cc/bazel_support:globally_enabled_features`
 
 accepts a comma-separated list of unstable internal feature names (like
-`supported`, `non_extern_c_functions`, or `experimental`) and overrides the
-baseline feature set for all targets for the duration of the build. The flag's
-default value is the empty list.
+`supported`, `non_extern_c_functions`, `experimental`, or the special alias
+`all`) and overrides the baseline feature set for all targets for the duration
+of the build. The flag's default value is the empty list.
 
 ## Features
 
diff --git a/rs_bindings_from_cc/ir.rs b/rs_bindings_from_cc/ir.rs
index 684dfa8..b69977b 100644
--- a/rs_bindings_from_cc/ir.rs
+++ b/rs_bindings_from_cc/ir.rs
@@ -1200,9 +1200,10 @@
         let mut features = flagset::FlagSet::<CrubitFeature>::default();
         for feature in <Vec<String> as serde::Deserialize<'de>>::deserialize(deserializer)? {
             features |= match &*feature {
-                "supported" => CrubitFeature::Supported,
-                "non_extern_c_functions" => CrubitFeature::NonExternCFunctions,
-                "experimental" => CrubitFeature::Experimental,
+                "all" => flagset::FlagSet::<CrubitFeature>::full(),
+                "supported" => CrubitFeature::Supported.into(),
+                "non_extern_c_functions" => CrubitFeature::NonExternCFunctions.into(),
+                "experimental" => CrubitFeature::Experimental.into(),
                 other => {
                     return Err(<D::Error as serde::de::Error>::custom(format!(
                         "Unexpected Crubit feature: {other}"