Skip to content

[GlobalISel] Hash collisions / hitting EmptyKey or TombstoneKey on map key in RegisterBankInfo #85209

Closed
@marcauberer

Description

@marcauberer

We experience sporadic failures in RegisterBankInfo::getOperandsMapping. These failures seem to be triggered by

hash_code Hash = hash_combine_range(Begin, End);

hitting the value of EmptyKey or TombstoneKey in the DenseMap member MapOfOperandsMappings. We still use LLVM 13, but the coding seems to have remained the same until to date.

We also see failures in RegisterBankInfo::ValueMapping::verify that seem to be triggered by hash collisions from

hash_code Hash = hash_combine_range(Begin, End);

To us it seems that this coding is not protected against these problems and therefore failures can happen randomly.

Already posted the problem in the Forum, but got no answer there:
https://discourse.llvm.org/t/registerbankinfo-getoperandsmapping-not-protected-against-hash-collisions-emptykey-tombstonekey/77659

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions