summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm/wasm-binary.cpp4
-rw-r--r--test/lit/basic/extended-names-passive-data-segments.wast27
-rw-r--r--test/lit/basic/extended-names.wast7
3 files changed, 36 insertions, 2 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index f9a643d66..28a630c4a 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1067,7 +1067,7 @@ void WasmBinaryWriter::writeNames() {
}
// data segment names
- if (!wasm->memories.empty()) {
+ {
Index count = 0;
for (auto& seg : wasm->dataSegments) {
if (seg->hasExplicitName) {
@@ -1081,7 +1081,7 @@ void WasmBinaryWriter::writeNames() {
o << U32LEB(count);
for (Index i = 0; i < wasm->dataSegments.size(); i++) {
auto& seg = wasm->dataSegments[i];
- if (seg->name.is()) {
+ if (seg->hasExplicitName) {
o << U32LEB(i);
writeEscapedName(seg->name.str);
}
diff --git a/test/lit/basic/extended-names-passive-data-segments.wast b/test/lit/basic/extended-names-passive-data-segments.wast
new file mode 100644
index 000000000..e2d63ed3f
--- /dev/null
+++ b/test/lit/basic/extended-names-passive-data-segments.wast
@@ -0,0 +1,27 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+
+;; RUN: wasm-opt %s -all -o %t.text.wast -g -S
+;; RUN: wasm-as %s -all -g -o %t.wasm
+;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
+;; RUN: wasm-as %s -all -o %t.nodebug.wasm
+;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
+;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
+;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
+;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG
+
+(module $foo
+
+ ;; Check that passive data segment names are output even when there
+ ;; is no declared memory
+ ;; CHECK-TEXT: (data $passive_data "b")
+ ;; CHECK-BIN: (data $passive_data "b")
+ (data $passive_data "b")
+ (data "c")
+)
+;; CHECK-TEXT: (data $1 "c")
+
+;; CHECK-BIN: (data $1 "c")
+
+;; CHECK-BIN-NODEBUG: (data $0 "b")
+
+;; CHECK-BIN-NODEBUG: (data $1 "c")
diff --git a/test/lit/basic/extended-names.wast b/test/lit/basic/extended-names.wast
index b6c4d52ae..c89dd0d38 100644
--- a/test/lit/basic/extended-names.wast
+++ b/test/lit/basic/extended-names.wast
@@ -16,6 +16,8 @@
;; CHECK-TEXT: (data $passive_data "b")
+ ;; CHECK-TEXT: (data $2 "c")
+
;; CHECK-TEXT: (table $t1 1 funcref)
;; CHECK-BIN: (memory $m1 1 1)
@@ -23,11 +25,14 @@
;; CHECK-BIN: (data $passive_data "b")
+ ;; CHECK-BIN: (data $2 "c")
+
;; CHECK-BIN: (table $t1 1 funcref)
(table $t1 1 funcref)
(memory $m1 1 1)
(data $mydata (i32.const 0) "a")
(data $passive_data "b")
+ (data "c")
)
;; CHECK-BIN-NODEBUG: (memory $0 1 1)
@@ -35,4 +40,6 @@
;; CHECK-BIN-NODEBUG: (data $1 "b")
+;; CHECK-BIN-NODEBUG: (data $2 "c")
+
;; CHECK-BIN-NODEBUG: (table $0 1 funcref)