Auto merge of #118352 - Zalathar:llvm-hash, r=onur-ozkan · rust-lang/rust@b29a1e0 (original) (raw)

Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@ use std::fs::{self, File};
15 15 use std::io;
16 16 use std::path::{Path, PathBuf};
17 17 use std::process::Command;
18 +use std::sync::OnceLock;
18 19
19 20 use crate::core::builder::{Builder, RunConfig, ShouldRun, Step};
20 21 use crate::core::config::{Config, TargetSelection};
@@ -105,13 +106,16 @@ pub fn prebuilt_llvm_config(
105 106 let llvm_cmake_dir = out_dir.join("lib/cmake/llvm");
106 107 let res = LlvmResult { llvm_config: build_llvm_config, llvm_cmake_dir };
107 108
108 -let smart_stamp_hash = generate_smart_stamp_hash(
109 -&builder.config.src.join("src/llvm-project"),
110 -&builder.in_tree_llvm_info.sha().unwrap_or_default(),
111 -);
109 +static STAMP_HASH_MEMO: OnceLock<String> = OnceLock::new();
110 +let smart_stamp_hash = STAMP_HASH_MEMO.get_or_init(|
111 +generate_smart_stamp_hash(
112 +&builder.config.src.join("src/llvm-project"),
113 +&builder.in_tree_llvm_info.sha().unwrap_or_default(),
114 +)
115 +});
112 116
113 117 let stamp = out_dir.join("llvm-finished-building");
114 -let stamp = HashStamp::new(stamp, Some(&smart_stamp_hash));
118 +let stamp = HashStamp::new(stamp, Some(smart_stamp_hash));
115 119
116 120 if stamp.is_done() {
117 121 if stamp.hash.is_none() {