[PATCH] D19752: ELF: New symbol table design.

Rafael Ávila de Espíndola via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 30 12:44:27 PDT 2016


rafael added a comment.

I really like where this is going. I can also reproduce the speed improvements:

chromium

  master 5.024864816
  patch  4.623026768 0.92003007788

chromium fast

  master 1.79596235
  patch  1.674374543 0.932299356387

the gold plugin

  master 0.380117134
  patch  0.35906784 0.9446241905

clang

  master 0.661575233
  patch  0.623685952 0.942728688878

llvm-as

  master 0.036052227
  patch  0.034932404 0.968938867494

the gold plugin fsds

  master 0.407010562
  patch  0.384177885 0.943901512315

clang fsds

  master 0.74843173
  patch  0.704943104 0.941893663434

llvm-as fsds

  master 0.032178185
  patch  0.031151157 0.968083097291

scylla

  master 4.159922688
  patch  4.089454365 0.983060184459


================
Comment at: ELF/InputFiles.h:212
@@ -211,3 +212,1 @@
 
-  llvm::MutableArrayRef<LazyArchive> getLazySymbols() { return LazySymbols; }
-
----------------
I am really happy to see these temporary vectors go. We now only have object local vector of symbols when something refers to them by index (relocations) :-)

================
Comment at: ELF/Symbols.h:427
@@ +426,3 @@
+      DefinedSynthetic<llvm::object::ELF64LE>, Undefined,
+      SharedSymbol<llvm::object::ELF64LE>, LazyArchive, LazyObject>
+      Body;
----------------
Using ELF64LE is here is problematic as the SharedSymbol has a pointer to Elf_Sym. As silly as it  sounds I think you need to include the various ELFTs in the "union".

And can this be just a plain union?


http://reviews.llvm.org/D19752





More information about the llvm-commits mailing list