summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/s2wasm.h6
-rw-r--r--src/wasm.h4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index ac62046d8..5557cc2ff 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -21,6 +21,8 @@
#ifndef wasm_s2wasm_h
#define wasm_s2wasm_h
+#include <limits.h>
+
#include "wasm.h"
#include "parsing.h"
#include "asm_v_wasm.h"
@@ -649,7 +651,7 @@ class S2WasmBuilder {
skipComma();
auto curr = allocator.alloc<Load>();
curr->type = type;
- int32_t bytes = getInt()/8;
+ int32_t bytes = getInt() / CHAR_BIT;
curr->bytes = bytes > 0 ? bytes : getWasmTypeSize(type);
curr->signed_ = match("_s");
match("_u");
@@ -669,7 +671,7 @@ class S2WasmBuilder {
skipComma();
auto curr = allocator.alloc<Store>();
curr->type = type;
- int32_t bytes = getInt();
+ int32_t bytes = getInt() / CHAR_BIT;
curr->bytes = bytes > 0 ? bytes : getWasmTypeSize(type);
Name assign = getAssign();
getConst(&curr->offset);
diff --git a/src/wasm.h b/src/wasm.h
index e30a891b9..8701bd2f4 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -758,11 +758,13 @@ public:
std::ostream& doPrint(std::ostream &o, unsigned indent) {
o << '(';
prepareColor(o) << printWasmType(type) << ".store";
- if (bytes < 4) {
+ if (bytes < 4 || (type == i64 && bytes < 8)) {
if (bytes == 1) {
o << '8';
} else if (bytes == 2) {
o << "16";
+ } else if (bytes == 4) {
+ o << "32";
} else {
abort();
}