summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/emscripten-optimizer/optimizer-shared.cpp5
-rw-r--r--src/emscripten-optimizer/optimizer.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/emscripten-optimizer/optimizer-shared.cpp b/src/emscripten-optimizer/optimizer-shared.cpp
index 09b458138..7fe91eeab 100644
--- a/src/emscripten-optimizer/optimizer-shared.cpp
+++ b/src/emscripten-optimizer/optimizer-shared.cpp
@@ -228,3 +228,8 @@ Ref makeAsmCoercion(Ref node, AsmType type) {
}
}
+Ref makeSigning(Ref node, AsmSign sign) {
+ assert(sign == ASM_SIGNED || sign == ASM_UNSIGNED);
+ return ValueBuilder::makeBinary(node, sign == ASM_SIGNED ? OR : TRSHIFT, ValueBuilder::makeNum(0));
+}
+
diff --git a/src/emscripten-optimizer/optimizer.h b/src/emscripten-optimizer/optimizer.h
index 00303aee9..6850214c2 100644
--- a/src/emscripten-optimizer/optimizer.h
+++ b/src/emscripten-optimizer/optimizer.h
@@ -140,5 +140,7 @@ inline cashew::Ref deStat(cashew::Ref node) {
cashew::Ref makeAsmCoercedZero(AsmType type);
cashew::Ref makeAsmCoercion(cashew::Ref node, AsmType type);
+cashew::Ref makeSigning(cashew::Ref node, AsmSign sign);
+
#endif // __optimizer_h__