summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_cranelift/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_codegen_cranelift/src/lib.rs')
-rw-r--r--compiler/rustc_codegen_cranelift/src/lib.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/compiler/rustc_codegen_cranelift/src/lib.rs b/compiler/rustc_codegen_cranelift/src/lib.rs
index 80ce3dc93..8cc7f6c34 100644
--- a/compiler/rustc_codegen_cranelift/src/lib.rs
+++ b/compiler/rustc_codegen_cranelift/src/lib.rs
@@ -57,8 +57,6 @@ mod compiler_builtins;
mod concurrency_limiter;
mod config;
mod constant;
-// FIXME revert back to the external crate with Cranelift 0.93
-mod cranelift_native;
mod debuginfo;
mod discriminant;
mod driver;
@@ -88,7 +86,7 @@ mod prelude {
self, FloatTy, Instance, InstanceDef, IntTy, ParamEnv, Ty, TyCtxt, TypeAndMut,
TypeFoldable, TypeVisitableExt, UintTy,
};
- pub(crate) use rustc_target::abi::{Abi, Scalar, Size, VariantIdx};
+ pub(crate) use rustc_target::abi::{Abi, FieldIdx, Scalar, Size, VariantIdx, FIRST_VARIANT};
pub(crate) use rustc_data_structures::fx::FxHashMap;
@@ -251,7 +249,7 @@ fn target_triple(sess: &Session) -> target_lexicon::Triple {
}
}
-fn build_isa(sess: &Session, backend_config: &BackendConfig) -> Box<dyn isa::TargetIsa + 'static> {
+fn build_isa(sess: &Session, backend_config: &BackendConfig) -> Arc<dyn isa::TargetIsa + 'static> {
use target_lexicon::BinaryFormat;
let target_triple = crate::target_triple(sess);
@@ -285,14 +283,17 @@ fn build_isa(sess: &Session, backend_config: &BackendConfig) -> Box<dyn isa::Tar
}
}
- if let target_lexicon::Architecture::Aarch64(_) | target_lexicon::Architecture::X86_64 =
- target_triple.architecture
+ if let target_lexicon::Architecture::Aarch64(_)
+ | target_lexicon::Architecture::Riscv64(_)
+ | target_lexicon::Architecture::X86_64 = target_triple.architecture
{
- // Windows depends on stack probes to grow the committed part of the stack
+ // Windows depends on stack probes to grow the committed part of the stack.
+ // On other platforms it helps prevents stack smashing.
flags_builder.enable("enable_probestack").unwrap();
flags_builder.set("probestack_strategy", "inline").unwrap();
} else {
- // __cranelift_probestack is not provided and inline stack probes are only supported on AArch64 and x86_64
+ // __cranelift_probestack is not provided and inline stack probes are only supported on
+ // AArch64, Riscv64 and x86_64.
flags_builder.set("enable_probestack", "false").unwrap();
}