about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authoryukang <moorekang@gmail.com>2022-12-15 14:49:11 +0800
committeryukang <moorekang@gmail.com>2023-02-24 08:07:43 +0000
commit34813e205157f0235e5cf8847079f13ac6acd078 (patch)
tree6735e78b84c5da80fc19b1428d528a245fd3e628 /src/bootstrap
parent07c993eba8b76eae497e98433ae075b00f01be10 (diff)
downloadrust-34813e205157f0235e5cf8847079f13ac6acd078.tar.gz
rust-34813e205157f0235e5cf8847079f13ac6acd078.zip
Test that the compiler/library builds with -Zmir-opt-level=3 -Zvalidate-mir
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;