diff options
author | Philip Reames <listmail@philipreames.com> | 2019-10-05 00:32:10 +0000 |
---|---|---|
committer | Philip Reames <listmail@philipreames.com> | 2019-10-05 00:32:10 +0000 |
commit | d5a4dad2061c09b01f396b3958ccccc4f9727b1a (patch) | |
tree | 8a561e03675bcf2ce3ea6bed224b6f52fa8a3da9 /llvm/lib/Support/CommandLine.cpp | |
parent | 9fe5d730c7070fa64c292699265c26f24c96003e (diff) | |
download | llvm-d5a4dad2061c09b01f396b3958ccccc4f9727b1a.zip llvm-d5a4dad2061c09b01f396b3958ccccc4f9727b1a.tar.gz llvm-d5a4dad2061c09b01f396b3958ccccc4f9727b1a.tar.bz2 |
Fix a *nasty* miscompile in experimental unordered atomic lowering
This is an omission in rL371441. Loads which happened to be unordered weren't being added to the PendingLoad set, and thus weren't be ordered w/respect to side effects which followed before the end of the block.
Included test case is how I spotted this. We had an atomic load being folded into a using instruction after a fence that load was supposed to be ordered with. I'm sure it showed up a bunch of other ways as well.
Spotted via manual inspecting of assembly differences in a corpus w/and w/o the new experimental mode. Finding this with testing would have been "unpleasant".
llvm-svn: 373814
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
0 files changed, 0 insertions, 0 deletions