diff options
| author | Erik Desjardins <erikdesjardins@users.noreply.github.com> | 2020-10-12 22:33:27 -0400 |
|---|---|---|
| committer | Erik Desjardins <erikdesjardins@users.noreply.github.com> | 2021-01-14 22:49:16 -0500 |
| commit | cd2580722375671fa2967661f65b7b33570547ec (patch) | |
| tree | 2a7c80c04b77f40691edd1da05e0d54e0930873f /compiler/rustc_codegen_llvm/src/attributes.rs | |
| parent | e38fb306b7f5e65cca34df2dab1f0db15e1defb4 (diff) | |
| download | rust-cd2580722375671fa2967661f65b7b33570547ec.tar.gz rust-cd2580722375671fa2967661f65b7b33570547ec.zip | |
Use probe-stack=inline-asm in LLVM 11+
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/attributes.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/attributes.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/compiler/rustc_codegen_llvm/src/attributes.rs b/compiler/rustc_codegen_llvm/src/attributes.rs index 97c38e04bc1..700f32e15b9 100644 --- a/compiler/rustc_codegen_llvm/src/attributes.rs +++ b/compiler/rustc_codegen_llvm/src/attributes.rs @@ -127,13 +127,18 @@ fn set_probestack(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) { return; } - // Flag our internal `__rust_probestack` function as the stack probe symbol. - // This is defined in the `compiler-builtins` crate for each architecture. llvm::AddFunctionAttrStringValue( llfn, llvm::AttributePlace::Function, const_cstr!("probe-stack"), - const_cstr!("__rust_probestack"), + if llvm_util::get_version() < (11, 0, 1) { + // Flag our internal `__rust_probestack` function as the stack probe symbol. + // This is defined in the `compiler-builtins` crate for each architecture. + const_cstr!("__rust_probestack") + } else { + // On LLVM 11+, emit inline asm for stack probes instead of a function call. + const_cstr!("inline-asm") + }, ); } |
