/// features is available on the target machine, by querying LLVM.
pub fn add_configuration(
cfg: &mut CrateConfig,
- sess: &Session,
+ sess: &mut Session,
codegen_backend: &dyn CodegenBackend,
) {
let tf = sym::target_feature;
- cfg.extend(codegen_backend.target_features(sess).into_iter().map(|feat| (tf, Some(feat))));
+ let target_features = codegen_backend.target_features(sess);
+ sess.target_features.extend(target_features.iter().cloned());
+
+ cfg.extend(target_features.into_iter().map(|feat| (tf, Some(feat))));
if sess.crt_static(None) {
cfg.insert((tf, Some(Symbol::intern("crt-static"))));
let codegen_backend = get_codegen_backend(&sess);
let mut cfg = config::build_configuration(&sess, config::to_crate_config(cfg));
- add_configuration(&mut cfg, &sess, &*codegen_backend);
+ add_configuration(&mut cfg, &mut sess, &*codegen_backend);
sess.parse_sess.config = cfg;
(Lrc::new(sess), Lrc::new(codegen_backend), source_map)
// Also incorporate crate type, so that we don't get symbol conflicts when
// linking against a library of the same name, if this is an executable.
- let is_exe = session.crate_types.borrow().contains(&CrateType::Executable);
+ let is_exe = session.crate_types().contains(&CrateType::Executable);
hasher.write(if is_exe { b"exe" } else { b"lib" });
CrateDisambiguator::from(hasher.finish::<Fingerprint>())
kind: ast::ExprKind::Block(P(b), None),
span: rustc_span::DUMMY_SP,
attrs: AttrVec::new(),
+ tokens: None,
});
ast::Stmt {
id: self.resolver.next_node_id(),
span: rustc_span::DUMMY_SP,
attrs: AttrVec::new(),
+ tokens: None,
});
let loop_stmt = ast::Stmt {