diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-01-28 18:34:20 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-02-02 19:20:44 -0800 |
commit | d467c8f522d7ed8e495b548a753b5f599f7778fa (patch) | |
tree | 4d077f875bdd6e8be476d215c5e44f591096c4e9 /src | |
parent | edc07c0cb8e66f8ca33de759b02cf1d3171b5df9 (diff) | |
download | binaryen-d467c8f522d7ed8e495b548a753b5f599f7778fa.tar.gz binaryen-d467c8f522d7ed8e495b548a753b5f599f7778fa.tar.bz2 binaryen-d467c8f522d7ed8e495b548a753b5f599f7778fa.zip |
in assert tests, verify nans are identical
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-shell.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/binaryen-shell.cpp b/src/binaryen-shell.cpp index 58815f94a..f969eeb9e 100644 --- a/src/binaryen-shell.cpp +++ b/src/binaryen-shell.cpp @@ -175,6 +175,19 @@ struct Invocation { } }; +static void verify_result(Literal a, Literal b) { + if (a == b) return; + // accept equal nans if equal in all bits + assert(a.type == b.type); + if (a.type == f32) { + assert(a.reinterpreti32() == b.reinterpreti32()); + } else if (a.type == f64) { + assert(a.reinterpreti64() == b.reinterpreti64()); + } else { + abort(); + } +} + static void run_asserts(size_t* i, bool* checked, AllocatingModule* wasm, Element* root, std::unique_ptr<SExpressionWasmBuilder>* builder, @@ -251,11 +264,11 @@ static void run_asserts(size_t* i, bool* checked, AllocatingModule* wasm, ->dyn_cast<Const>() ->value; std::cerr << "seen " << result << ", expected " << expected << '\n'; - assert(expected == result); + verify_result(expected, result); } else { Literal expected; std::cerr << "seen " << result << ", expected " << expected << '\n'; - assert(expected == result); + verify_result(expected, result); } } if (id == ASSERT_TRAP) assert(trapped); |