Skip to content

Commit f90bc30

Browse files
committed
Enable stack probing on x86_64
Cranelift now supports inline stack probes on x86_64
1 parent 0035f09 commit f90bc30

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/lib.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,6 @@ fn build_isa(sess: &Session, backend_config: &BackendConfig) -> Box<dyn isa::Tar
251251

252252
let mut flags_builder = settings::builder();
253253
flags_builder.enable("is_pic").unwrap();
254-
flags_builder.set("enable_probestack", "false").unwrap(); // __cranelift_probestack is not provided
255254
let enable_verifier = if backend_config.enable_verifier { "true" } else { "false" };
256255
flags_builder.set("enable_verifier", enable_verifier).unwrap();
257256
flags_builder.set("regalloc_checker", enable_verifier).unwrap();
@@ -279,6 +278,15 @@ fn build_isa(sess: &Session, backend_config: &BackendConfig) -> Box<dyn isa::Tar
279278
}
280279
}
281280

281+
if target_triple.architecture == target_lexicon::Architecture::X86_64 {
282+
// Windows depends on stack probes to grow the committed part of the stack
283+
flags_builder.enable("enable_probestack").unwrap();
284+
flags_builder.set("probestack_strategy", "inline").unwrap();
285+
} else {
286+
// __cranelift_probestack is not provided and inline stack probes are only supported on x86_64
287+
flags_builder.set("enable_probestack", "false").unwrap();
288+
}
289+
282290
let flags = settings::Flags::new(flags_builder);
283291

284292
let isa_builder = match sess.opts.cg.target_cpu.as_deref() {

0 commit comments

Comments
 (0)