diff options
Diffstat (limited to 'src/passes/PickLoadSigns.cpp')
-rw-r--r-- | src/passes/PickLoadSigns.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/passes/PickLoadSigns.cpp b/src/passes/PickLoadSigns.cpp index c3b5a2ba2..3541b1055 100644 --- a/src/passes/PickLoadSigns.cpp +++ b/src/passes/PickLoadSigns.cpp @@ -109,6 +109,10 @@ struct PickLoadSigns : public WalkerPass<ExpressionStackWalker<PickLoadSigns>> { load->bytes * 8)) { // unsigned usages exist but the wrong size continue; } + // Atomic operations are always unsigned, never signed. + if (load->isAtomic) { + continue; + } // we can pick the optimal one. our hope is to remove 2 items per // signed use (two shifts), so we factor that in load->signed_ = usage.signedUsages * 2 >= usage.unsignedUsages; |