Skip to content

Commit 9a8a3a6

Browse files
committed
WIP
1 parent e140750 commit 9a8a3a6

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

src/librustc_mir/monomorphize/deduplicate_instances.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ pub(crate) fn collapse_interchangable_instances<'a, 'tcx>(
4747
if false /*param.name.as_str().starts_with("<")*/ {
4848
ty.into()
4949
} else {
50+
tcx.sess.warn(&format!("Unused subst for {:?}", inst));
5051
tcx.mk_ty(ty::TyNever)
5152
}
5253
} else {
5354
// Can't use TyError as it gives some ICE in rustc_trans::callee::get_fn
55+
tcx.sess.warn(&format!("Unused subst for {:?}", inst));
5456
tcx.mk_ty(ty::TyNever)
5557
};
5658
Kind::from(ty)
@@ -140,7 +142,7 @@ impl<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> TypeFolder<'gcx, 'tcx> for SubstsVisitor<'a,
140142

141143
fn used_substs_for_instance<'a, 'tcx: 'a>(
142144
tcx: TyCtxt<'a ,'tcx, 'tcx>,
143-
instance: Instance<'tcx>
145+
instance: Instance<'tcx>,
144146
) -> UsedSubsts {
145147
let mir = tcx.instance_mir(instance.def);
146148
let sig = ::rustc::ty::ty_fn_sig(tcx, instance.ty(tcx));
@@ -154,5 +156,19 @@ fn used_substs_for_instance<'a, 'tcx: 'a>(
154156
let mut used_substs = substs_visitor.2;
155157
used_substs.substs.sort_by_key(|s|s.idx);
156158
used_substs.substs.dedup_by_key(|s|s.idx);
159+
used_substs.promoted = mir.promoted.iter().map(|mir| used_substs_for_mir(tcx, mir)).collect();
160+
used_substs
161+
}
162+
163+
fn used_substs_for_mir<'a, 'tcx: 'a>(
164+
tcx: TyCtxt<'a ,'tcx, 'tcx>,
165+
mir: &'tcx Mir<'tcx>,
166+
) -> UsedSubsts {
167+
let mut substs_visitor = SubstsVisitor(tcx, mir, UsedSubsts::default());
168+
substs_visitor.visit_mir(mir);
169+
let mut used_substs = substs_visitor.2;
170+
used_substs.substs.sort_by_key(|s|s.idx);
171+
used_substs.substs.dedup_by_key(|s|s.idx);
172+
used_substs.promoted = mir.promoted.iter().map(|mir| used_substs_for_mir(tcx, mir)).collect();
157173
used_substs
158174
}

src/test/codegen-units/item-collection/static-init.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub static FN : fn() = foo::<i32>;
1717

1818
pub fn foo<T>() { }
1919

20-
//~ TRANS_ITEM fn static_init::foo[0]<i32>
20+
//~ TRANS_ITEM fn static_init::foo[0]<!>
2121
//~ TRANS_ITEM static static_init::FN[0]
2222

2323
//~ TRANS_ITEM fn static_init::start[0]

src/test/run-make-fulldeps/libtest-json/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ OUTPUT_FILE := $(TMPDIR)/libtest-json-output.json
66

77
all:
88
$(RUSTC) --test f.rs
9-
$(call RUN,f) -Z unstable-options --test-threads=1 --format=json > $(OUTPUT_FILE) || true
9+
RUST_BACKTRACE=0 $(call RUN,f) -Z unstable-options --test-threads=1 --format=json \
10+
> $(OUTPUT_FILE) || true
1011

1112
cat $(OUTPUT_FILE) | "$(PYTHON)" validate_json.py
1213

0 commit comments

Comments
 (0)