diff options
author | Alon Zakai <azakai@google.com> | 2020-10-13 18:53:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-13 18:53:42 -0700 |
commit | b2d4a1811c7ea9f44720bb0e5aba4f64a7f73e58 (patch) | |
tree | ee53b3f6bd32445ba9e32776f1648b2d09a05499 /src/passes/PickLoadSigns.cpp | |
parent | 1a1b547aee688a0d96251e8afd565999acfb1922 (diff) | |
download | binaryen-b2d4a1811c7ea9f44720bb0e5aba4f64a7f73e58.tar.gz binaryen-b2d4a1811c7ea9f44720bb0e5aba4f64a7f73e58.tar.bz2 binaryen-b2d4a1811c7ea9f44720bb0e5aba4f64a7f73e58.zip |
PickLoadSigns fuzz fix: cannot make an atomic operation signed (#3235)
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; |