diff --git a/src/lib.rs b/src/lib.rs index 1389a127c244..b9f8370872f5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -184,7 +184,7 @@ impl CodegenBackend for CraneliftCodegenBackend { rustc_codegen_utils::symbol_names::provide(providers); rustc_codegen_ssa::back::symbol_export::provide(providers); - providers.target_features_whitelist = |_tcx, _cnum| Lrc::new(Default::default()); + providers.target_features_whitelist = |tcx, _cnum| tcx.arena.alloc(FxHashMap::default()); } fn provide_extern(&self, providers: &mut Providers) { rustc_codegen_ssa::back::symbol_export::provide_extern(providers); @@ -226,6 +226,17 @@ impl CodegenBackend for CraneliftCodegenBackend { } } +fn target_triple(sess: &Session) -> target_lexicon::Triple { + let mut target = &*sess.target.target.llvm_target; + + // FIXME add support for x86_64-apple-macosx10.7.0 to target-lexicon + if target.starts_with("x86_64-apple-macosx") { + target = "x86_64-apple-darwin"; + } + + target.parse().unwrap() +} + fn build_isa(sess: &Session) -> Box { let mut flags_builder = settings::builder(); flags_builder.enable("is_pic").unwrap(); @@ -252,8 +263,9 @@ fn build_isa(sess: &Session) -> Box { } }*/ + let target_triple = target_triple(sess); let flags = settings::Flags::new(flags_builder); - cranelift::codegen::isa::lookup(sess.target.target.llvm_target.parse().unwrap()) + cranelift::codegen::isa::lookup(target_triple) .unwrap() .finish(flags) } diff --git a/src/pretty_clif.rs b/src/pretty_clif.rs index 66b3c66334f8..47524c59b16e 100644 --- a/src/pretty_clif.rs +++ b/src/pretty_clif.rs @@ -226,8 +226,7 @@ pub fn write_clif_file<'a, 'tcx: 'a>( match ::std::fs::File::create(clif_file_name) { Ok(mut file) => { - let target_triple: ::target_lexicon::Triple = - tcx.sess.target.target.llvm_target.parse().unwrap(); + let target_triple = crate::target_triple(tcx.sess); writeln!(file, "test compile").unwrap(); writeln!(file, "set is_pic").unwrap(); writeln!(file, "target {}", target_triple).unwrap();