summaryrefslogtreecommitdiff
path: root/src/emscripten-optimizer/parser.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-30 17:04:25 -0700
committerGitHub <noreply@github.com>2016-09-30 17:04:25 -0700
commit58832ad0b8a197ece6165bfe163f634a21f8bd6d (patch)
treeb6f56bb970a53996d5bd6fabf1187a7139997f9f /src/emscripten-optimizer/parser.h
parentcbe71a99f3b53db81cfd23f7a12f2010daeff65d (diff)
downloadbinaryen-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.h12
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);