[PATCH] D43534: [WebAssembly] Move lambda declaration output of loop

Sam Clegg via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 20 16:27:24 PST 2018


sbc100 created this revision.
Herald added subscribers: llvm-commits, sunfish, aheejin, jgravelle-google, dschuff, jfb.
sbc100 added a reviewer: ruiu.

This code doesn't need access to the loop variable.


Repository:
  rLLD LLVM Linker

https://reviews.llvm.org/D43534

Files:
  wasm/Writer.cpp


Index: wasm/Writer.cpp
===================================================================
--- wasm/Writer.cpp
+++ wasm/Writer.cpp
@@ -760,31 +760,33 @@
     }
   }
 
+  auto HandleRelocs = [&](InputChunk *Chunk) {
+    if (!Chunk->Live)
+      return;
+    ObjFile *File = Chunk->File;
+    ArrayRef<WasmSignature> Types = File->getWasmObj()->types();
+    for (const WasmRelocation& Reloc : Chunk->getRelocations()) {
+      if (Reloc.Type == R_WEBASSEMBLY_TABLE_INDEX_I32 ||
+          Reloc.Type == R_WEBASSEMBLY_TABLE_INDEX_SLEB) {
+        FunctionSymbol *Sym = File->getFunctionSymbol(Reloc.Index);
+        if (Sym->hasTableIndex() || !Sym->hasOutputIndex())
+          continue;
+        Sym->setTableIndex(TableIndex++);
+        IndirectFunctions.emplace_back(Sym);
+      } else if (Reloc.Type == R_WEBASSEMBLY_TYPE_INDEX_LEB) {
+        File->TypeMap[Reloc.Index] = registerType(Types[Reloc.Index]);
+        File->TypeIsUsed[Reloc.Index] = true;
+      }
+    }
+  };
+
   for (ObjFile *File : Symtab->ObjectFiles) {
     DEBUG(dbgs() << "Handle relocs: " << File->getName() << "\n");
-    auto HandleRelocs = [&](InputChunk *Chunk) {
-      if (!Chunk->Live)
-        return;
-      ArrayRef<WasmSignature> Types = File->getWasmObj()->types();
-      for (const WasmRelocation& Reloc : Chunk->getRelocations()) {
-        if (Reloc.Type == R_WEBASSEMBLY_TABLE_INDEX_I32 ||
-            Reloc.Type == R_WEBASSEMBLY_TABLE_INDEX_SLEB) {
-          FunctionSymbol *Sym = File->getFunctionSymbol(Reloc.Index);
-          if (Sym->hasTableIndex() || !Sym->hasOutputIndex())
-            continue;
-          Sym->setTableIndex(TableIndex++);
-          IndirectFunctions.emplace_back(Sym);
-        } else if (Reloc.Type == R_WEBASSEMBLY_TYPE_INDEX_LEB) {
-          Chunk->File->TypeMap[Reloc.Index] = registerType(Types[Reloc.Index]);
-          Chunk->File->TypeIsUsed[Reloc.Index] = true;
-        }
-      }
-    };
 
-    for (InputFunction* Function : File->Functions)
-      HandleRelocs(Function);
-    for (InputSegment* Segment : File->Segments)
-      HandleRelocs(Segment);
+    for (InputChunk* Chunk : File->Functions)
+      HandleRelocs(Chunk);
+    for (InputChunk* Chunk : File->Segments)
+      HandleRelocs(Chunk);
   }
 }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D43534.135167.patch
Type: text/x-patch
Size: 2255 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180221/3be6bc9a/attachment.bin>


More information about the llvm-commits mailing list