From d467c8f522d7ed8e495b548a753b5f599f7778fa Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Jan 2016 18:34:20 -0800 Subject: in assert tests, verify nans are identical --- src/binaryen-shell.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src') 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* builder, @@ -251,11 +264,11 @@ static void run_asserts(size_t* i, bool* checked, AllocatingModule* wasm, ->dyn_cast() ->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); -- cgit v1.2.3