Skip to content

sse2::Group::match_tag misimplementation? #612

Closed
@smoelius

Description

@smoelius

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):

Image

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions