summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-11 11:38:03 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-11 11:38:03 -0800
commit6cbb5943f93e0edcee676569751748547e6ee990 (patch)
treeac8657f9acbb301129e6d017282138e8a11f13e3 /src
parentbe42e377272dbdee8c592706bbce8753aa6539b6 (diff)
downloadbinaryen-6cbb5943f93e0edcee676569751748547e6ee990.tar.gz
binaryen-6cbb5943f93e0edcee676569751748547e6ee990.tar.bz2
binaryen-6cbb5943f93e0edcee676569751748547e6ee990.zip
nan fixes; test suite fully passes
Diffstat (limited to 'src')
-rw-r--r--src/wasm-interpreter.h2
-rw-r--r--src/wasm-s-parser.h8
2 files changed, 5 insertions, 5 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index b6f77b78d..47a442020 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -648,7 +648,7 @@ private:
if (curr->type == f32) {
float v = value.reinterpretf32();
if (isnan(v)) {
- return Literal(Literal(value.geti32() | 0x7fc00000).reinterpretf32());
+ return Literal(Literal(value.geti32() | 0x7f800000).reinterpretf32());
}
return Literal(value.reinterpretf32());
} else {
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index e3bf07177..d4ec163cf 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -722,10 +722,10 @@ private:
if (modifier) {
std::istringstream istr(modifier);
istr >> std::hex >> u.pattern;
+ u.pattern |= 0x7f800000;
} else {
- u.pattern = 0;
+ u.pattern = 0x7fc00000;
}
- u.pattern |= 0x7fc00000;
if (negative) u.pattern |= 0x80000000;
if (!isnan(u.f)) u.pattern |= 1;
assert(isnan(u.f));
@@ -740,10 +740,10 @@ private:
if (modifier) {
std::istringstream istr(modifier);
istr >> std::hex >> u.pattern;
+ u.pattern |= 0x7ff0000000000000LL;
} else {
- u.pattern = 0;
+ u.pattern = 0x7ff8000000000000L;
}
- u.pattern |= 0x7ff0000000000000LL;
if (negative) u.pattern |= 0x8000000000000000LL;
if (!isnan(u.d)) u.pattern |= 1;
assert(isnan(u.d));