Extract TargetIsa building to a separate function
This commit is contained in:
parent
5538c15a43
commit
94eac08a48
1 changed files with 31 additions and 29 deletions
60
src/lib.rs
60
src/lib.rs
|
@ -171,35 +171,6 @@ impl CodegenBackend for CraneliftCodegenBackend {
|
|||
|
||||
let metadata = tcx.encode_metadata();
|
||||
|
||||
let mut flags_builder = settings::builder();
|
||||
flags_builder.enable("is_pic").unwrap();
|
||||
flags_builder.set("enable_verifier", if cfg!(debug_assertions) {
|
||||
"true"
|
||||
} else {
|
||||
"false"
|
||||
}).unwrap();
|
||||
|
||||
use rustc::session::config::OptLevel;
|
||||
match tcx.sess.opts.optimize {
|
||||
OptLevel::No => {
|
||||
flags_builder.set("opt_level", "fastest").unwrap();
|
||||
}
|
||||
OptLevel::Less | OptLevel::Default => {}
|
||||
OptLevel::Aggressive => {
|
||||
flags_builder.set("opt_level", "best").unwrap();
|
||||
}
|
||||
OptLevel::Size | OptLevel::SizeMin => {
|
||||
tcx.sess
|
||||
.warn("Optimizing for size is not supported. Just ignoring the request");
|
||||
}
|
||||
}
|
||||
|
||||
let flags = settings::Flags::new(flags_builder);
|
||||
let isa =
|
||||
cranelift::codegen::isa::lookup(tcx.sess.target.target.llvm_target.parse().unwrap())
|
||||
.unwrap()
|
||||
.finish(flags);
|
||||
|
||||
// TODO: move to the end of this function when compiling libcore doesn't have unimplemented stuff anymore
|
||||
save_incremental(tcx);
|
||||
tcx.sess.warn("Saved incremental data");
|
||||
|
@ -245,6 +216,7 @@ impl CodegenBackend for CraneliftCodegenBackend {
|
|||
jit_module.finish();
|
||||
::std::process::exit(0);
|
||||
} else {
|
||||
let isa = build_isa(tcx.sess);
|
||||
let mut faerie_module: Module<FaerieBackend> = Module::new(
|
||||
FaerieBuilder::new(
|
||||
isa,
|
||||
|
@ -322,6 +294,36 @@ impl CodegenBackend for CraneliftCodegenBackend {
|
|||
}
|
||||
}
|
||||
|
||||
fn build_isa(sess: &Session) -> Box<isa::TargetIsa + 'static> {
|
||||
use rustc::session::config::OptLevel;
|
||||
|
||||
let mut flags_builder = settings::builder();
|
||||
flags_builder.enable("is_pic").unwrap();
|
||||
flags_builder.set("enable_verifier", if cfg!(debug_assertions) {
|
||||
"true"
|
||||
} else {
|
||||
"false"
|
||||
}).unwrap();
|
||||
|
||||
match sess.opts.optimize {
|
||||
OptLevel::No => {
|
||||
flags_builder.set("opt_level", "fastest").unwrap();
|
||||
}
|
||||
OptLevel::Less | OptLevel::Default => {}
|
||||
OptLevel::Aggressive => {
|
||||
flags_builder.set("opt_level", "best").unwrap();
|
||||
}
|
||||
OptLevel::Size | OptLevel::SizeMin => {
|
||||
sess.warn("Optimizing for size is not supported. Just ignoring the request");
|
||||
}
|
||||
}
|
||||
|
||||
let flags = settings::Flags::new(flags_builder);
|
||||
cranelift::codegen::isa::lookup(sess.target.target.llvm_target.parse().unwrap())
|
||||
.unwrap()
|
||||
.finish(flags)
|
||||
}
|
||||
|
||||
fn codegen_mono_items<'a, 'tcx: 'a>(
|
||||
tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
||||
module: &mut Module<impl Backend + 'static>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue