summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/passes/Print.cpp6
-rw-r--r--src/wasm/wasm-s-parser.cpp15
2 files changed, 11 insertions, 10 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index 7a160a8eb..445021bcf 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -2752,10 +2752,10 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> {
o << '(';
printExpressionContents(curr);
incIndent();
- printFullLine(curr->rtt);
for (auto& operand : curr->operands) {
printFullLine(operand);
}
+ printFullLine(curr->rtt);
decIndent();
}
void visitStructGet(StructGet* curr) {
@@ -2777,11 +2777,11 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> {
o << '(';
printExpressionContents(curr);
incIndent();
- printFullLine(curr->rtt);
- printFullLine(curr->size);
if (curr->init) {
printFullLine(curr->init);
}
+ printFullLine(curr->size);
+ printFullLine(curr->rtt);
decIndent();
}
void visitArrayGet(ArrayGet* curr) {
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp
index 339d3a04e..7182860ed 100644
--- a/src/wasm/wasm-s-parser.cpp
+++ b/src/wasm/wasm-s-parser.cpp
@@ -2401,8 +2401,6 @@ Expression* SExpressionWasmBuilder::makeRttSub(Element& s) {
Expression* SExpressionWasmBuilder::makeStructNew(Element& s, bool default_) {
auto heapType = parseHeapType(*s[1]);
- auto* rtt = parseExpression(*s[2]);
- validateHeapTypeUsingChild(rtt, heapType, s);
auto numOperands = s.size() - 3;
if (default_ && numOperands > 0) {
throw ParseException(
@@ -2411,8 +2409,10 @@ Expression* SExpressionWasmBuilder::makeStructNew(Element& s, bool default_) {
std::vector<Expression*> operands;
operands.resize(numOperands);
for (Index i = 0; i < numOperands; i++) {
- operands[i] = parseExpression(*s[i + 3]);
+ operands[i] = parseExpression(*s[i + 2]);
}
+ auto* rtt = parseExpression(*s[s.size() - 1]);
+ validateHeapTypeUsingChild(rtt, heapType, s);
return Builder(wasm).makeStructNew(rtt, operands);
}
@@ -2454,13 +2454,14 @@ Expression* SExpressionWasmBuilder::makeStructSet(Element& s) {
Expression* SExpressionWasmBuilder::makeArrayNew(Element& s, bool default_) {
auto heapType = parseHeapType(*s[1]);
- auto* rtt = parseExpression(*s[2]);
- validateHeapTypeUsingChild(rtt, heapType, s);
- auto* size = parseExpression(*s[3]);
Expression* init = nullptr;
+ size_t i = 2;
if (!default_) {
- init = parseExpression(*s[4]);
+ init = parseExpression(*s[i++]);
}
+ auto* size = parseExpression(*s[i++]);
+ auto* rtt = parseExpression(*s[i++]);
+ validateHeapTypeUsingChild(rtt, heapType, s);
return Builder(wasm).makeArrayNew(rtt, size, init);
}