Rollup merge of #57027 - Zoxc:query-perf5, r=michaelwoerister

Optimize away a move

r? @michaelwoerister
This commit is contained in:
kennytm 2018-12-23 00:07:56 +08:00
commit 9b2331d2ca
No known key found for this signature in database
GPG key ID: FEF6C8051D0E013C

View file

@ -136,11 +136,14 @@ impl<'a, 'tcx, Q: QueryDescription<'tcx>> JobOwner<'a, 'tcx, Q> {
Entry::Vacant(entry) => {
// No job entry for this query. Return a new one to be started later
return tls::with_related_context(tcx, |icx| {
// Create the `parent` variable before `info`. This allows LLVM
// to elide the move of `info`
let parent = icx.query.clone();
let info = QueryInfo {
span,
query: Q::query(key.clone()),
};
let job = Lrc::new(QueryJob::new(info, icx.query.clone()));
let job = Lrc::new(QueryJob::new(info, parent));
let owner = JobOwner {
cache,
job: job.clone(),