summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/asm2wasm.h2
-rw-r--r--src/emscripten-optimizer/optimizer-shared.cpp8
-rw-r--r--src/emscripten-optimizer/optimizer.h2
3 files changed, 6 insertions, 6 deletions
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index 7dcc0385b..014658eb5 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -260,7 +260,7 @@ private:
}
bool isUnsignedCoercion(Ref ast) {
- return detectSign(ast) == ASM_UNSIGNED;
+ return detectSign(ast, Math_fround) == ASM_UNSIGNED;
}
// an asm.js binary op can either be a binary or a relational in wasm
diff --git a/src/emscripten-optimizer/optimizer-shared.cpp b/src/emscripten-optimizer/optimizer-shared.cpp
index ae346d756..e37408b19 100644
--- a/src/emscripten-optimizer/optimizer-shared.cpp
+++ b/src/emscripten-optimizer/optimizer-shared.cpp
@@ -129,7 +129,7 @@ static void abort_on(Ref node) {
abort();
}
-AsmSign detectSign(Ref node) {
+AsmSign detectSign(Ref node, IString minifiedFround) {
IString type = node[0]->getIString();
if (type == BINARY) {
IString op = node[1]->getIString();
@@ -160,11 +160,11 @@ AsmSign detectSign(Ref node) {
} else if (type == NAME) {
return ASM_FLEXIBLE;
} else if (type == CONDITIONAL) {
- return detectSign(node[2]);
+ return detectSign(node[2], minifiedFround);
} else if (type == CALL) {
- if (node[1][0] == NAME && node[1][1] == MATH_FROUND) return ASM_NONSIGNED;
+ if (node[1][0] == NAME && (node[1][1] == MATH_FROUND || node[1][1] == minifiedFround)) return ASM_NONSIGNED;
} else if (type == SEQ) {
- return detectSign(node[2]);
+ return detectSign(node[2], minifiedFround);
}
abort_on(node);
abort(); // avoid warning
diff --git a/src/emscripten-optimizer/optimizer.h b/src/emscripten-optimizer/optimizer.h
index fe1c18770..4720909a5 100644
--- a/src/emscripten-optimizer/optimizer.h
+++ b/src/emscripten-optimizer/optimizer.h
@@ -130,7 +130,7 @@ enum AsmSign {
ASM_NONSIGNED = 3,
};
-extern AsmSign detectSign(cashew::Ref node);
+extern AsmSign detectSign(cashew::Ref node, cashew::IString minifiedFround);
#endif // __optimizer_h__