Skip to content

Commit

Permalink
Rollup merge of #71285 - ljedrz:mir_inline_span_for_optimized_mir, r=…
Browse files Browse the repository at this point in the history
…ecstatic-morse

MIR: use HirId instead of NodeId to avoid cycles while inlining

I wanted to see if I could limit the number of uses of `NodeId` when `HirId` is available and I saw that some of the MIR `Inliner` code could use `Span` instead of `NodeId`, not unlike in #71197.

~If I'm understanding the reason for not calling `optimized_mir` in incremental builds here correctly, this change could also allow us to do so.~

This change could affect performance, so if this approach makes sense, a perf run is probably a good idea.
  • Loading branch information
Dylan-DPC committed Apr 20, 2020
2 parents e3a514c + 3c455fe commit 42b533d
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/librustc_mir/transform/inline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,15 @@ impl Inliner<'tcx> {
continue;
}

let self_node_id = self.tcx.hir().as_local_node_id(self.source.def_id()).unwrap();
let callee_node_id = self.tcx.hir().as_local_node_id(callsite.callee);
let callee_hir_id = self.tcx.hir().as_local_hir_id(callsite.callee);

let callee_body = if let Some(callee_node_id) = callee_node_id {
let callee_body = if let Some(callee_hir_id) = callee_hir_id {
let self_hir_id = self.tcx.hir().as_local_hir_id(self.source.def_id()).unwrap();
// Avoid a cycle here by only using `optimized_mir` only if we have
// a lower node id than the callee. This ensures that the callee will
// a lower `HirId` than the callee. This ensures that the callee will
// not inline us. This trick only works without incremental compilation.
// So don't do it if that is enabled.
if !self.tcx.dep_graph.is_fully_enabled()
&& self_node_id.as_u32() < callee_node_id.as_u32()
{
if !self.tcx.dep_graph.is_fully_enabled() && self_hir_id < callee_hir_id {
self.tcx.optimized_mir(callsite.callee)
} else {
continue;
Expand Down

0 comments on commit 42b533d

Please sign in to comment.