This is an archive of the discontinued LLVM Phabricator instance.

Fix a bug in the definition of isUnordered on MachineMemOperand
ClosedPublic

Authored by reames on Feb 1 2019, 9:19 AM.

Details

Summary

Background: At the moment, we record the AtomicOrdering of an access in the MMO, but also mark any atomic access as volatile in SelectionDAG. GlobalIsel keeps the two separate, but currently doesn't know how to lower an atomic G_LOAD at all. See https://reviews.llvm.org/D57601 for context.

The definition used for unordered was only checking volatility, not atomicity. As noted above, all atomic MMOs are currently also volatile, so this is a latent bug only. Copy the definition used in IR, after auditing the two (2) uses of the function to be sure the desired semantics are the same.

Diff Detail

Event Timeline

reames created this revision.Feb 1 2019, 9:19 AM
jlebar accepted this revision.Feb 1 2019, 10:40 AM
This revision is now accepted and ready to land.Feb 1 2019, 10:40 AM
This revision was automatically updated to reflect the committed changes.
Herald added a project: Restricted Project. · View Herald TranscriptFeb 1 2019, 11:08 AM