diff options
| author | bors <bors@rust-lang.org> | 2020-05-01 01:38:05 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-05-01 01:38:05 +0000 |
| commit | e94eaa6dce468928b4e1326b2f0054f3075681ff (patch) | |
| tree | 833cc1402e3e700a5cda3385d79f08c7bc4b3591 /src/librustc_codegen_llvm | |
| parent | 614f273e9388ddd7804d5cbc80b8865068a3744e (diff) | |
| parent | d7d2185607280e143ea25b1cf688cb6f27f2db45 (diff) | |
| download | rust-e94eaa6dce468928b4e1326b2f0054f3075681ff.tar.gz rust-e94eaa6dce468928b4e1326b2f0054f3075681ff.zip | |
Auto merge of #70674 - cjgillot:query-arena-all, r=matthewjasper
Have the per-query caches store the results on arenas This PR leverages the cache for each query to serve as storage area for the query results. It introduces a new cache `ArenaCache`, which moves the result to an arena, and only stores the reference in the hash map. This allows to remove a sizeable part of the usage of the global `TyCtxt` arena. I only migrated queries that already used arenas before.
Diffstat (limited to 'src/librustc_codegen_llvm')
| -rw-r--r-- | src/librustc_codegen_llvm/attributes.rs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs index 6ef303c848d..fc357ebb05d 100644 --- a/src/librustc_codegen_llvm/attributes.rs +++ b/src/librustc_codegen_llvm/attributes.rs @@ -253,7 +253,7 @@ pub fn from_fn_attrs(cx: &CodegenCx<'ll, 'tcx>, llfn: &'ll Value, instance: ty:: inline(cx, llfn, attributes::InlineAttr::Hint); } - inline(cx, llfn, codegen_fn_attrs.inline); + inline(cx, llfn, codegen_fn_attrs.inline.clone()); // The `uwtable` attribute according to LLVM is: // @@ -350,15 +350,12 @@ pub fn provide(providers: &mut Providers<'_>) { if tcx.sess.opts.actually_rustdoc { // rustdoc needs to be able to document functions that use all the features, so // whitelist them all - tcx.arena - .alloc(llvm_util::all_known_features().map(|(a, b)| (a.to_string(), b)).collect()) + llvm_util::all_known_features().map(|(a, b)| (a.to_string(), b)).collect() } else { - tcx.arena.alloc( - llvm_util::target_feature_whitelist(tcx.sess) - .iter() - .map(|&(a, b)| (a.to_string(), b)) - .collect(), - ) + llvm_util::target_feature_whitelist(tcx.sess) + .iter() + .map(|&(a, b)| (a.to_string(), b)) + .collect() } }; @@ -390,7 +387,7 @@ pub fn provide_extern(providers: &mut Providers<'_>) { })); } - tcx.arena.alloc(ret) + ret }; } |
