summaryrefslogtreecommitdiff
path: root/src/emscripten-optimizer/parser.h
diff options
context:
space:
mode:
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);