about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-02-25 11:53:08 -0800
committerGitHub <noreply@github.com>2023-02-25 11:53:08 -0800
commitb90a385f26ed16587cb17e28883f5aacd293b9af (patch)
tree759105a405ab414ce2a55916cf14ef52e1f02a8b /src/bootstrap
parent31448badfd74ea72d2c8622cc60d3dca889ef7d4 (diff)
parent001bceeb1ecd1239031a5c7ff711106b2b1c54cc (diff)
Rollup merge of #105736 - chenyukang:yukang/add-mir-opt-level-testing, r=jyn514
Test that the compiler/library builds with validate-mir

Fixes #105706
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/builder.rs7
-rw-r--r--src/bootstrap/config.rs3
2 files changed, 10 insertions, 0 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 952c70cec1c..fe92ee3c18e 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -1915,6 +1915,13 @@ impl<'a> Builder<'a> {
             }
         }
 
+        if matches!(mode, Mode::Std) {
+            if let Some(mir_opt_level) = self.config.rust_validate_mir_opts {
+                rustflags.arg("-Zvalidate-mir");
+                rustflags.arg(&format!("-Zmir-opt-level={}", mir_opt_level));
+            }
+        }
+
         Cargo { command: cargo, rustflags, rustdocflags, allow_features }
     }
 
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
index 56f96734bbb..4a563bc396d 100644
--- a/src/bootstrap/config.rs
+++ b/src/bootstrap/config.rs
@@ -173,6 +173,7 @@ pub struct Config {
     pub rust_profile_use: Option<String>,
     pub rust_profile_generate: Option<String>,
     pub rust_lto: RustcLto,
+    pub rust_validate_mir_opts: Option<u32>,
     pub llvm_profile_use: Option<String>,
     pub llvm_profile_generate: bool,
     pub llvm_libunwind_default: Option<LlvmLibunwind>,
@@ -770,6 +771,7 @@ define_config! {
         // ignored; this is set from an env var set by bootstrap.py
         download_rustc: Option<StringOrBool> = "download-rustc",
         lto: Option<String> = "lto",
+        validate_mir_opts: Option<u32> = "validate-mir-opts",
     }
 }
 
@@ -1149,6 +1151,7 @@ impl Config {
                 .as_deref()
                 .map(|value| RustcLto::from_str(value).unwrap())
                 .unwrap_or_default();
+            config.rust_validate_mir_opts = rust.validate_mir_opts;
         } else {
             config.rust_profile_use = flags.rust_profile_use;
             config.rust_profile_generate = flags.rust_profile_generate;