@@ -96,8 +96,8 @@ mod prelude {
9696 pub ( crate ) use cranelift_codegen:: ir:: function:: Function ;
9797 pub ( crate ) use cranelift_codegen:: ir:: types;
9898 pub ( crate ) use cranelift_codegen:: ir:: {
99- AbiParam , Block , ExternalName , FuncRef , Inst , InstBuilder , MemFlags , Signature , SourceLoc ,
100- StackSlot , StackSlotData , StackSlotKind , TrapCode , Type , Value ,
99+ AbiParam , Block , FuncRef , Inst , InstBuilder , MemFlags , Signature , SourceLoc , StackSlot ,
100+ StackSlotData , StackSlotKind , TrapCode , Type , Value ,
101101 } ;
102102 pub ( crate ) use cranelift_codegen:: isa:: { self , CallConv } ;
103103 pub ( crate ) use cranelift_codegen:: Context ;
@@ -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