summaryrefslogtreecommitdiff
path: root/src/asm2wasm.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-01-11 17:16:57 -0500
committerAlon Zakai <alonzakai@gmail.com>2016-01-11 17:16:57 -0500
commit4e98f922cb2d727a319f62d32e51afabb2e46d24 (patch)
tree507db7035fe0557431ff49f55016df1bedff8000 /src/asm2wasm.h
parent75a562190a9f4588c8ffb19b8304f76c15a850c6 (diff)
parent873e5b0500a3edb07a09ed285ba8421be375cd25 (diff)
downloadbinaryen-4e98f922cb2d727a319f62d32e51afabb2e46d24.tar.gz
binaryen-4e98f922cb2d727a319f62d32e51afabb2e46d24.tar.bz2
binaryen-4e98f922cb2d727a319f62d32e51afabb2e46d24.zip
Merge pull request #91 from WebAssembly/sanitizers
Add Travis builds with sanitizers
Diffstat (limited to 'src/asm2wasm.h')
-rw-r--r--src/asm2wasm.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index db7cc1ae0..7992de8af 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -385,8 +385,9 @@ private:
}
if (ast[1] == MINUS && ast[2][0] == NUM) {
double num = -ast[2][1]->getNumber();
- assert(isInteger32(num));
- return Literal((int32_t)num);
+ if (isSInteger32(num)) return Literal((int32_t)num);
+ if (isUInteger32(num)) return Literal((uint32_t)num);
+ assert(false && "expected signed or unsigned int32");
}
if (ast[1] == PLUS && ast[2][0] == UNARY_PREFIX && ast[2][1] == MINUS && ast[2][2][0] == NUM) {
return Literal((double)-ast[2][2][1]->getNumber());
@@ -912,9 +913,12 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
} else if (what == NUM) {
auto ret = allocator.alloc<Const>();
double num = ast[1]->getNumber();
- if (isInteger32(num)) {
+ if (isSInteger32(num)) {
ret->value.type = WasmType::i32;
- ret->value.i32 = toInteger32(num);
+ ret->value.i32 = toSInteger32(num);
+ } else if (isUInteger32(num)) {
+ ret->value.type = WasmType::i32;
+ ret->value.i32 = toUInteger32(num);
} else {
ret->value.type = WasmType::f64;
ret->value.f64 = num;