From 99322a5158e274decf1552b3abc041b3abbacbd2 Mon Sep 17 00:00:00 2001 From: onur-ozkan Date: Sat, 11 Jan 2025 16:01:33 +0300 Subject: [PATCH] extend sanitizers stamp calculation Signed-off-by: onur-ozkan --- src/bootstrap/src/core/build_steps/llvm.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs index 1159ba712306..51df2eba6e9c 100644 --- a/src/bootstrap/src/core/build_steps/llvm.rs +++ b/src/bootstrap/src/core/build_steps/llvm.rs @@ -1121,18 +1121,24 @@ impl Step for Sanitizers { let out_dir = builder.native_dir(self.target).join("sanitizers"); let runtimes = supported_sanitizers(&out_dir, self.target, &builder.config.channel); - if runtimes.is_empty() { + + if builder.config.dry_run() || runtimes.is_empty() { return runtimes; } let LlvmResult { llvm_config, .. } = builder.ensure(Llvm { target: builder.config.build }); - if builder.config.dry_run() { - return runtimes; - } - let stamp = BuildStamp::new(&out_dir) - .with_prefix("sanitizers") - .with_stamp(builder.in_tree_llvm_info.sha().map(String::from).unwrap_or_default()); + static STAMP_HASH_MEMO: OnceLock = OnceLock::new(); + let smart_stamp_hash = STAMP_HASH_MEMO.get_or_init(|| { + generate_smart_stamp_hash( + builder, + &builder.config.src.join("src/llvm-project/compiler-rt"), + builder.in_tree_llvm_info.sha().unwrap_or_default(), + ) + }); + + let stamp = + BuildStamp::new(&out_dir).with_prefix("sanitizers").with_stamp(smart_stamp_hash); if stamp.is_up_to_date() { if stamp.stamp.is_empty() {