summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/Print.cpp15
-rw-r--r--test/lit/validation/extended-const.wast10
2 files changed, 23 insertions, 2 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index 3f0cfbabb..b0c83c437 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -21,6 +21,7 @@
#include <ir/iteration.h>
#include <ir/module-utils.h>
#include <ir/table-utils.h>
+#include <ir/utils.h>
#include <pass.h>
#include <pretty_printing.h>
#include <support/string.h>
@@ -3113,7 +3114,14 @@ void PrintSExpression::visitElementSegment(ElementSegment* curr) {
}
o << ' ';
+ bool needExplicitOffset = Measurer{}.measure(curr->offset) > 1;
+ if (needExplicitOffset) {
+ o << "(offset ";
+ }
visit(curr->offset);
+ if (needExplicitOffset) {
+ o << ')';
+ }
if (usesExpressions || currModule->tables.size() > 1) {
o << ' ';
@@ -3183,7 +3191,14 @@ void PrintSExpression::visitDataSegment(DataSegment* curr) {
curr->memory.print(o);
o << ") ";
}
+ bool needExplicitOffset = Measurer{}.measure(curr->offset) > 1;
+ if (needExplicitOffset) {
+ o << "(offset ";
+ }
visit(curr->offset);
+ if (needExplicitOffset) {
+ o << ")";
+ }
o << ' ';
}
String::printEscaped(o, {curr->data.data(), curr->data.size()});
diff --git a/test/lit/validation/extended-const.wast b/test/lit/validation/extended-const.wast
index 6b506671f..054c5e28e 100644
--- a/test/lit/validation/extended-const.wast
+++ b/test/lit/validation/extended-const.wast
@@ -11,14 +11,20 @@
;; EXTENDED: (global.get $gimport$0)
;; EXTENDED: (i32.const 42)
;; EXTENDED: ))
-;; EXTENDED: (data $0 (i32.sub
+;; EXTENDED: (data $0 (offset (i32.sub
;; EXTENDED: (global.get $gimport$0)
;; EXTENDED: (i32.const 10)
-;; EXTENDED: ) "hello world")
+;; EXTENDED: )) "hello world")
+;; EXTENDED: (elem $0 (offset (i32.sub
+;; EXTENDED: (global.get $gimport$0)
+;; EXTENDED: (i32.const 10)
+;; EXTENDED: )))
(module
(import "env" "global" (global i32))
(memory 1 1)
+ (table 1 1 funcref)
(global i32 (i32.add (global.get 0) (i32.const 42)))
(data (offset (i32.sub (global.get 0) (i32.const 10))) "hello world")
+ (elem (offset (i32.sub (global.get 0) (i32.const 10))) func)
)