diff options
| author | bors <bors@rust-lang.org> | 2017-10-12 11:20:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-10-12 11:20:16 +0000 |
| commit | 1807f27a338e8e3f8c3a9c99fde2223b5942e640 (patch) | |
| tree | 8041ab852ad6099133352a7a9cec1e22471d4b54 | |
| parent | 39fd958520c1319a457fba98ccc501bdea537c04 (diff) | |
| parent | 1235836f678eeae33c841ae5b8975b3967be886f (diff) | |
Auto merge of #45176 - michaelwoerister:fix-region-and-trans-item-order, r=nikomatsakis
incr.comp.: Fix HashStable for ty::RegionKind and trans item order Fixes #45161 and the failing rust-icci tests. r? @nikomatsakis
| -rw-r--r-- | src/librustc/ich/impls_ty.rs | 3 | ||||
| -rw-r--r-- | src/librustc_trans/partitioning.rs | 23 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/librustc/ich/impls_ty.rs b/src/librustc/ich/impls_ty.rs index 6e55365980c..f719ce15092 100644 --- a/src/librustc/ich/impls_ty.rs +++ b/src/librustc/ich/impls_ty.rs @@ -61,6 +61,9 @@ for ty::RegionKind { def_id.hash_stable(hcx, hasher); name.hash_stable(hcx, hasher); } + ty::ReLateBound(db, ty::BrEnv) => { + db.depth.hash_stable(hcx, hasher); + } ty::ReEarlyBound(ty::EarlyBoundRegion { def_id, index, name }) => { def_id.hash_stable(hcx, hasher); index.hash_stable(hcx, hasher); diff --git a/src/librustc_trans/partitioning.rs b/src/librustc_trans/partitioning.rs index 0d46ea64f9f..386806e4c9c 100644 --- a/src/librustc_trans/partitioning.rs +++ b/src/librustc_trans/partitioning.rs @@ -163,10 +163,27 @@ pub trait CodegenUnitExt<'tcx> { fn item_sort_key<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, item: TransItem<'tcx>) -> ItemSortKey { ItemSortKey(match item { - TransItem::Fn(instance) => { - tcx.hir.as_local_node_id(instance.def_id()) + TransItem::Fn(ref instance) => { + match instance.def { + // We only want to take NodeIds of user-defined + // instances into account. The others don't matter for + // the codegen tests and can even make item order + // unstable. + InstanceDef::Item(def_id) => { + tcx.hir.as_local_node_id(def_id) + } + InstanceDef::Intrinsic(..) | + InstanceDef::FnPtrShim(..) | + InstanceDef::Virtual(..) | + InstanceDef::ClosureOnceShim { .. } | + InstanceDef::DropGlue(..) | + InstanceDef::CloneShim(..) => { + None + } + } } - TransItem::Static(node_id) | TransItem::GlobalAsm(node_id) => { + TransItem::Static(node_id) | + TransItem::GlobalAsm(node_id) => { Some(node_id) } }, item.symbol_name(tcx)) |
