[lld] r326275 - [WebAssembly] Use more specific type and simplify code.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 27 16:18:34 PST 2018


Author: ruiu
Date: Tue Feb 27 16:18:34 2018
New Revision: 326275

URL: http://llvm.org/viewvc/llvm-project?rev=326275&view=rev
Log:
[WebAssembly] Use more specific type and simplify code.

Instead of {Function,Global,Data}Symbol, use Defined{Function,Global,Data}
because undefined symbol should never reach this function.

Differential Revision: https://reviews.llvm.org/D43710

Modified:
    lld/trunk/wasm/Writer.cpp

Modified: lld/trunk/wasm/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/Writer.cpp?rev=326275&r1=326274&r2=326275&view=diff
==============================================================================
--- lld/trunk/wasm/Writer.cpp (original)
+++ lld/trunk/wasm/Writer.cpp Tue Feb 27 16:18:34 2018
@@ -279,31 +279,24 @@ void Writer::createExportSection() {
 
   writeUleb128(OS, NumExports, "export count");
 
-  if (ExportMemory) {
-    WasmExport MemoryExport;
-    MemoryExport.Name = "memory";
-    MemoryExport.Kind = WASM_EXTERNAL_MEMORY;
-    MemoryExport.Index = 0;
-    writeExport(OS, MemoryExport);
-  }
+  if (ExportMemory)
+    writeExport(OS, {"memory", WASM_EXTERNAL_MEMORY, 0});
 
   unsigned FakeGlobalIndex = NumImportedGlobals + InputGlobals.size();
+
   for (const Symbol *Sym : ExportedSymbols) {
-    DEBUG(dbgs() << "Export: " << Sym->getName() << "\n");
+    StringRef Name = Sym->getName();
     WasmExport Export;
-    Export.Name = Sym->getName();
-    if (isa<FunctionSymbol>(Sym)) {
-      Export.Index = Sym->getOutputIndex();
-      Export.Kind = WASM_EXTERNAL_FUNCTION;
-    } else if (isa<GlobalSymbol>(Sym)) {
-      Export.Index = Sym->getOutputIndex();
-      Export.Kind = WASM_EXTERNAL_GLOBAL;
-    } else if (isa<DataSymbol>(Sym)) {
-      Export.Index = FakeGlobalIndex++;
-      Export.Kind = WASM_EXTERNAL_GLOBAL;
-    } else {
+    DEBUG(dbgs() << "Export: " << Name << "\n");
+
+    if (isa<DefinedFunction>(Sym))
+      Export = {Name, WASM_EXTERNAL_FUNCTION, Sym->getOutputIndex()};
+    else if (isa<DefinedGlobal>(Sym))
+      Export = {Name, WASM_EXTERNAL_GLOBAL, Sym->getOutputIndex()};
+    else if (isa<DefinedData>(Sym))
+      Export = {Name, WASM_EXTERNAL_GLOBAL, FakeGlobalIndex++};
+    else
       llvm_unreachable("unexpected symbol type");
-    }
     writeExport(OS, Export);
   }
 }




More information about the llvm-commits mailing list