xrefs: FnvHashMap<XRef<'tcx>, u32>)
{
let mut xref_positions = vec![0; xrefs.len()];
+
+ // Encode XRefs sorted by their ID
+ let mut sorted_xrefs: Vec<_> = xrefs.into_iter().collect();
+ sorted_xrefs.sort_by_key(|&(_, id)| id);
+
rbml_w.start_tag(tag_xref_data);
- for (xref, id) in xrefs.into_iter() {
+ for (xref, id) in sorted_xrefs.into_iter() {
xref_positions[id as usize] = rbml_w.mark_stable_position() as u32;
match xref {
XRef::Predicate(p) => {
-include ../tools.mk
all:
$(RUSTC) reproducible-build-aux.rs
+ mv libreproducible_build_aux.rlib first.rlib
+ $(RUSTC) reproducible-build-aux.rs
+ cp libreproducible_build_aux.rlib second.rlib
+ cmp "first.rlib" "second.rlib" || exit 1
$(RUSTC) reproducible-build.rs -o"$(TMPDIR)/reproducible-build1"
$(RUSTC) reproducible-build.rs -o"$(TMPDIR)/reproducible-build2"
- nm "$(TMPDIR)/reproducible-build1" | sort > "$(TMPDIR)/reproducible-build1.nm"
- nm "$(TMPDIR)/reproducible-build2" | sort > "$(TMPDIR)/reproducible-build2.nm"
- cmp "$(TMPDIR)/reproducible-build1.nm" "$(TMPDIR)/reproducible-build2.nm" || exit 1
+ cmp "$(TMPDIR)/reproducible-build1" "$(TMPDIR)/reproducible-build2" || exit 1
+ $(RUSTC) reproducible-build-aux.rs -g
+ mv libreproducible_build_aux.rlib first.rlib
$(RUSTC) reproducible-build-aux.rs -g
+ cp libreproducible_build_aux.rlib second.rlib
$(RUSTC) reproducible-build.rs -g -o"$(TMPDIR)/reproducible-build1-debug"
$(RUSTC) reproducible-build.rs -g -o"$(TMPDIR)/reproducible-build2-debug"
- nm "$(TMPDIR)/reproducible-build1-debug" | sort > "$(TMPDIR)/reproducible-build1-debug.nm"
- nm "$(TMPDIR)/reproducible-build2-debug" | sort > "$(TMPDIR)/reproducible-build2-debug.nm"
- cmp "$(TMPDIR)/reproducible-build1-debug.nm" "$(TMPDIR)/reproducible-build2-debug.nm" || exit 1
+ cmp "$(TMPDIR)/reproducible-build1-debug" "$(TMPDIR)/reproducible-build2-debug" || exit 1
+ $(RUSTC) reproducible-build-aux.rs -O
+ mv libreproducible_build_aux.rlib first.rlib
$(RUSTC) reproducible-build-aux.rs -O
+ cp libreproducible_build_aux.rlib second.rlib
$(RUSTC) reproducible-build.rs -O -o"$(TMPDIR)/reproducible-build1-opt"
$(RUSTC) reproducible-build.rs -O -o"$(TMPDIR)/reproducible-build2-opt"
- nm "$(TMPDIR)/reproducible-build1-opt" | sort > "$(TMPDIR)/reproducible-build1-opt.nm"
- nm "$(TMPDIR)/reproducible-build2-opt" | sort > "$(TMPDIR)/reproducible-build2-opt.nm"
- cmp "$(TMPDIR)/reproducible-build1-opt.nm" "$(TMPDIR)/reproducible-build2-opt.nm" || exit 1
+ cmp "$(TMPDIR)/reproducible-build1-opt" "$(TMPDIR)/reproducible-build2-opt" || exit 1
fn foo(&self) {}
}
-impl reproducible_build_aux::Trait<char, String> for TupleStruct {
+impl<T: reproducible_build_aux::Marker + 'static> reproducible_build_aux::Trait<T, String> for TupleStruct {
+ type Assoc = (u8, i16);
+
fn foo(&self) {}
}
let _ = reproducible_build_aux::Enum::Variant3 { x: 0 };
let _ = reproducible_build_aux::TupleStruct(1, 2, 3, 4);
- let object_shim: &reproducible_build_aux::Trait<char, String> = &TupleStruct(0, 1, 2, 3);
+ let object_shim: &reproducible_build_aux::Trait<char, String, Assoc=(u8, i16)> = &TupleStruct(0, 1, 2, 3);
object_shim.foo();
let pointer_shim: &Fn(i32) = ®ular_fn;
TupleStruct(1, 2, 3, 4).bar();
}
-
-