-
Notifications
You must be signed in to change notification settings - Fork 318
Description
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:
Line 1885 in b5b0655
| 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?