[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