diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/passes/Print.cpp | 6 | ||||
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 15 |
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); } |