[PATCH] D119794: [WebAssembly] Allow .data shorthand for .section .data.0,"",@

Wouter van Oortmerssen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 14 15:56:56 PST 2022


aardappel created this revision.
aardappel added reviewers: dschuff, sbc100.
Herald added subscribers: wingo, ecnelises, sunfish, hiraditya, jgravelle-google.
aardappel requested review of this revision.
Herald added subscribers: llvm-commits, aheejin.
Herald added a project: LLVM.

https://reviews.llvm.org/D119794

Files:
  llvm/lib/MC/MCParser/WasmAsmParser.cpp
  llvm/test/MC/WebAssembly/basic-assembly.s


Index: llvm/test/MC/WebAssembly/basic-assembly.s
===================================================================
--- llvm/test/MC/WebAssembly/basic-assembly.s
+++ llvm/test/MC/WebAssembly/basic-assembly.s
@@ -137,6 +137,9 @@
     .int32      2000000000
     .size       .L.str, 28
 
+    .data
+    .int8       73
+
     .section    .init_array.42,"",@
     .p2align    2
     .int32      test0
@@ -272,6 +275,10 @@
 # CHECK-NEXT:      .int32      2000000000
 # CHECK-NEXT:      .size       .L.str, 28
 
+# CHECK:           .section    .data.0,"",@
+# CHECK-EMPTY:
+# CHECK-NEXT:      .int8       73
+
 # CHECK:           .section    .init_array.42,"",@
 # CHECK-NEXT:      .p2align    2
 # CHECK-NEXT:      .int32      test0
Index: llvm/lib/MC/MCParser/WasmAsmParser.cpp
===================================================================
--- llvm/lib/MC/MCParser/WasmAsmParser.cpp
+++ llvm/lib/MC/MCParser/WasmAsmParser.cpp
@@ -33,6 +33,7 @@
 class WasmAsmParser : public MCAsmParserExtension {
   MCAsmParser *Parser = nullptr;
   MCAsmLexer *Lexer = nullptr;
+  size_t AnonymousDataSections = 0;
 
   template<bool (WasmAsmParser::*HandlerMethod)(StringRef, SMLoc)>
   void addDirectiveHandler(StringRef Directive) {
@@ -52,6 +53,7 @@
     this->MCAsmParserExtension::Initialize(*Parser);
 
     addDirectiveHandler<&WasmAsmParser::parseSectionDirectiveText>(".text");
+    addDirectiveHandler<&WasmAsmParser::parseSectionDirectiveData>(".data");
     addDirectiveHandler<&WasmAsmParser::parseSectionDirective>(".section");
     addDirectiveHandler<&WasmAsmParser::parseDirectiveSize>(".size");
     addDirectiveHandler<&WasmAsmParser::parseDirectiveType>(".type");
@@ -89,6 +91,14 @@
     return false;
   }
 
+  bool parseSectionDirectiveData(StringRef, SMLoc) {
+    auto Name = ".data." + std::to_string(AnonymousDataSections);
+    auto *WS = getContext().getWasmSection(
+        Name, SectionKind::getData(), 0, "", MCContext::GenericSectionID);
+    getStreamer().SwitchSection(WS);
+    return false;
+  }
+
   uint32_t parseSectionFlags(StringRef FlagStr, bool &Passive, bool &Group) {
     uint32_t flags = 0;
     for (char C : FlagStr) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119794.408661.patch
Type: text/x-patch
Size: 2159 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220214/fd71192a/attachment.bin>


More information about the llvm-commits mailing list