diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-02-10 23:09:43 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-02-10 23:09:43 +0000 |
| commit | 7679300d9382e351dcecf2321c71e77723d1cae3 (patch) | |
| tree | 6604b63f04397f27d412c45af8e2a1bf7a8a3c4c /llvm/lib/Transforms/Scalar | |
| parent | bb557065f60fa03e7a46a0b69bc0abea6ae46ca4 (diff) | |
| download | bcm5719-llvm-7679300d9382e351dcecf2321c71e77723d1cae3.tar.gz bcm5719-llvm-7679300d9382e351dcecf2321c71e77723d1cae3.zip | |
EarlyCSE: It isn't safe to CSE across synchronization boundaries
This fixes PR22514.
llvm-svn: 228760
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/EarlyCSE.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp index 9a9f9651f3f..862622f5932 100644 --- a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp +++ b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp @@ -527,6 +527,9 @@ bool EarlyCSE::processNode(DomTreeNode *Node) { // Ignore volatile loads. if (MemInst.isVolatile()) { LastStore = nullptr; + // Don't CSE across synchronization boundaries. + if (Inst->mayWriteToMemory()) + ++CurrentGeneration; continue; } |

