[PATCH] D60637: [WebAssembly] Emit the DataCount section when bulk memory is enabled
Thomas Lively via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 19 16:38:53 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL358798: [WebAssembly] Emit the DataCount section when bulk memory is enabled (authored by tlively, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D60637?vs=195251&id=195938#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D60637/new/
https://reviews.llvm.org/D60637
Files:
lld/trunk/test/wasm/data-segment-merging.ll
lld/trunk/wasm/OutputSections.cpp
lld/trunk/wasm/Writer.cpp
Index: lld/trunk/wasm/Writer.cpp
===================================================================
--- lld/trunk/wasm/Writer.cpp
+++ lld/trunk/wasm/Writer.cpp
@@ -93,6 +93,7 @@
void createImportSection();
void createMemorySection();
void createElemSection();
+ void createDataCountSection();
void createCodeSection();
void createDataSection();
void createCustomSections();
@@ -414,6 +415,16 @@
}
}
+void Writer::createDataCountSection() {
+ if (!Segments.size() || !TargetFeatures.count("bulk-memory"))
+ return;
+
+ log("createDataCountSection");
+ SyntheticSection *Section = createSyntheticSection(WASM_SEC_DATACOUNT);
+ raw_ostream &OS = Section->getStream();
+ writeUleb128(OS, Segments.size(), "data count");
+}
+
void Writer::createCodeSection() {
if (InputFunctions.empty())
return;
@@ -865,6 +876,7 @@
createEventSection();
createExportSection();
createElemSection();
+ createDataCountSection();
createCodeSection();
createDataSection();
createCustomSections();
Index: lld/trunk/wasm/OutputSections.cpp
===================================================================
--- lld/trunk/wasm/OutputSections.cpp
+++ lld/trunk/wasm/OutputSections.cpp
@@ -51,6 +51,8 @@
return "CODE";
case WASM_SEC_DATA:
return "DATA";
+ case WASM_SEC_DATACOUNT:
+ return "DATACOUNT";
default:
fatal("invalid section type");
}
Index: lld/trunk/test/wasm/data-segment-merging.ll
===================================================================
--- lld/trunk/test/wasm/data-segment-merging.ll
+++ lld/trunk/test/wasm/data-segment-merging.ll
@@ -12,6 +12,8 @@
; RUN: wasm-ld -no-gc-sections --no-entry -o %t.merged.wasm %t.data-segment-merging.o
; RUN: obj2yaml %t.merged.wasm | FileCheck %s --check-prefix=MERGE
+
+; MERGE-NOT: DATACOUNT
; MERGE: - Type: DATA
; MERGE: Segments:
; MERGE: Content: 68656C6C6F00676F6F6462796500776861746576657200002A000000
@@ -20,6 +22,8 @@
; RUN: wasm-ld -no-gc-sections --no-entry --no-merge-data-segments -o %t.separate.wasm %t.data-segment-merging.o
; RUN: obj2yaml %t.separate.wasm | FileCheck %s --check-prefix=SEPARATE
+
+; SEPARATE-NOT: DATACOUNT
; SEPARATE: - Type: DATA
; SEPARATE: Segments:
; SEPARATE: Content: 68656C6C6F00
@@ -29,3 +33,15 @@
; SEPARATE: Content: 636F6E7374616E7400
; SEPARATE: Content: 2B
; SEPARATE-NOT: Content:
+
+; RUN: llc -filetype=obj %s -mattr=+bulk-memory -o %t.data-segment-merging.bulk-memory.o
+; RUN: wasm-ld -no-gc-sections --no-entry -o %t.merged.bulk-memory.wasm %t.data-segment-merging.bulk-memory.o
+; RUN: obj2yaml %t.merged.bulk-memory.wasm | FileCheck %s --check-prefix=BULK-MEMORY
+
+; BULK-MEMORY: - Type: DATACOUNT
+; BULK-MEMORY: Count: 2
+; BULK-MEMORY: - Type: DATA
+; BULK-MEMORY: Segments:
+; BULK-MEMORY: Content: 68656C6C6F00676F6F6462796500776861746576657200002A000000
+; BULK-MEMORY: Content: 636F6E7374616E74000000002B
+; BULK-MEMORY-NOT: Content:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60637.195938.patch
Type: text/x-patch
Size: 3148 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190419/6488f4e6/attachment.bin>
More information about the llvm-commits
mailing list