Could it be possible that sse2::Group::match_tag is misimplemented?
I have observed discrepancies between rustdoc-types-produced JSON files on MacOS and Linux. I have been trying to determine the root cause.
I noticed that the elements of this hashtable can have different orders on the two platforms, even when elements are inserted in the same order:
pub(crate) external_paths: FxHashMap<DefId, (Vec<Symbol>, ItemType)>,
Digging further, I noticed that values returned by this call to match_tag can differ on the two platforms:
|
for bit in group.match_tag(tag_hash) { |
From what I can tell, my MacOS platform uses the neon implementation, and my Linux platform uses the sse2 implementation.
Here is a side-by-side comparison withneon on the left and sse2 on the right (please ignore the line numbers):
If I disable the sse2 implementation so that my Linux platform uses the generic one, the returned values still differ, but generated JSON files match.
Disabling the neon implementation on my MacOS platform does not have the same effect (the JSON files still differ).
Am I crazy to point the finger at sse2::Group::match_tag?
Could it be possible that
sse2::Group::match_tagis misimplemented?I have observed discrepancies between rustdoc-types-produced JSON files on MacOS and Linux. I have been trying to determine the root cause.
I noticed that the elements of this hashtable can have different orders on the two platforms, even when elements are inserted in the same order:
Digging further, I noticed that values returned by this call to
match_tagcan differ on the two platforms:hashbrown/src/raw/mod.rs
Line 1885 in b5b0655
From what I can tell, my MacOS platform uses the
neonimplementation, and my Linux platform uses thesse2implementation.Here is a side-by-side comparison with
neonon the left andsse2on the right (please ignore the line numbers):If I disable the
sse2implementation so that my Linux platform uses the generic one, the returned values still differ, but generated JSON files match.Disabling the
neonimplementation on my MacOS platform does not have the same effect (the JSON files still differ).Am I crazy to point the finger at
sse2::Group::match_tag?