diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-30 17:04:25 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-30 17:04:25 -0700 |
commit | 58832ad0b8a197ece6165bfe163f634a21f8bd6d (patch) | |
tree | b6f56bb970a53996d5bd6fabf1187a7139997f9f /src/emscripten-optimizer/parser.h | |
parent | cbe71a99f3b53db81cfd23f7a12f2010daeff65d (diff) | |
download | binaryen-58832ad0b8a197ece6165bfe163f634a21f8bd6d.tar.gz binaryen-58832ad0b8a197ece6165bfe163f634a21f8bd6d.tar.bz2 binaryen-58832ad0b8a197ece6165bfe163f634a21f8bd6d.zip |
asm2wasm i64 support (#723)
* support i64 intrinsics from fastcomp, adding --wasm-only flag
* refactor callImport logic in asm2wasm to avoid recomputing wasm types again
* legalize illegal i64 params in exports and imports
* do safe i64 binary ops depending on precision
* fix addVar, only assert on names if we are using a name
Diffstat (limited to 'src/emscripten-optimizer/parser.h')
-rw-r--r-- | src/emscripten-optimizer/parser.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/emscripten-optimizer/parser.h b/src/emscripten-optimizer/parser.h index 9429ff87f..060b71272 100644 --- a/src/emscripten-optimizer/parser.h +++ b/src/emscripten-optimizer/parser.h @@ -69,6 +69,8 @@ extern IString TOPLEVEL, UNARY_PREFIX, UNARY_POSTFIX, MATH_FROUND, + INT64, + INT64_CONST, SIMD_FLOAT32X4, SIMD_FLOAT64X2, SIMD_INT8X16, @@ -549,8 +551,8 @@ class Parser { if (value.isNumber()) { arg = parseFrag(value); src += value.size; - } else { - assert(value.type == OPERATOR); + } else if (value.type == OPERATOR) { + // negative number assert(value.str == MINUS); src += value.size; skipSpace(src); @@ -558,6 +560,12 @@ class Parser { assert(value2.isNumber()); arg = Builder::makePrefix(MINUS, parseFrag(value2)); src += value2.size; + } else { + // identifier and function call + assert(value.type == IDENT); + src += value.size; + skipSpace(src); + arg = parseCall(parseFrag(value), src); } Builder::appendCaseToSwitch(ret, arg); skipSpace(src); |