diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-05 13:56:43 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-05 13:56:43 -0800 |
commit | 06eda827f3a5ec67e5302b8d51d82e300d07ff23 (patch) | |
tree | fcea8d84975a77a417f3661fcfb8391d66ba42ae /src/wasm-interpreter.h | |
parent | 8568369a26510b61db639f55142797385e59abcb (diff) | |
download | binaryen-06eda827f3a5ec67e5302b8d51d82e300d07ff23.tar.gz binaryen-06eda827f3a5ec67e5302b8d51d82e300d07ff23.tar.bz2 binaryen-06eda827f3a5ec67e5302b8d51d82e300d07ff23.zip |
negative zero for f64
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r-- | src/wasm-interpreter.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 21d6fbd9f..4ba5a7427 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -364,8 +364,14 @@ public: case Mul: return Flow(Literal(l * r)); case Div: return Flow(Literal(l / r)); case CopySign: return Flow(Literal(std::copysign(l, r))); - case Min: return Flow(Literal(std::min(l, r))); - case Max: return Flow(Literal(std::max(l, r))); + case Min: { + if (l == r && l == 0) return Literal(1/l < 0 ? l : r); + return Literal(std::min(l, r)); + } + case Max: { + if (l == r && l == 0) return Literal(1/l < 0 ? r : l); + return Literal(std::max(l, r)); + } default: abort(); } } |