Consistently return `Symbol *` from SymbolTable's add-family functions.
authorRui Ueyama <ruiu@google.com>
Thu, 16 May 2019 03:54:41 +0000 (03:54 +0000)
committerRui Ueyama <ruiu@google.com>
Thu, 16 May 2019 03:54:41 +0000 (03:54 +0000)
llvm-svn: 360845

lld/ELF/SymbolTable.cpp
lld/ELF/SymbolTable.h

index de3856b..102a7cf 100644 (file)
@@ -381,7 +381,7 @@ Symbol *SymbolTable::addDefined(const Defined &New) {
   return Old;
 }
 
-void SymbolTable::addShared(const SharedSymbol &New) {
+Symbol *SymbolTable::addShared(const SharedSymbol &New) {
   Symbol *Old = insert(New);
   mergeProperties(Old, New);
 
@@ -391,7 +391,7 @@ void SymbolTable::addShared(const SharedSymbol &New) {
 
   if (Old->isPlaceholder()) {
     replaceSymbol(Old, &New);
-    return;
+    return Old;
   }
 
   if (Old->Visibility == STV_DEFAULT && (Old->isUndefined() || Old->isLazy())) {
@@ -401,6 +401,7 @@ void SymbolTable::addShared(const SharedSymbol &New) {
     replaceSymbol(Old, &New);
     Old->Binding = Binding;
   }
+  return Old;
 }
 
 Symbol *SymbolTable::addBitcode(const Defined &New) {
@@ -429,17 +430,17 @@ Symbol *SymbolTable::find(StringRef Name) {
   return SymVector[It->second];
 }
 
-template <class LazyT> void SymbolTable::addLazy(const LazyT &New) {
+template <class LazyT> Symbol *SymbolTable::addLazy(const LazyT &New) {
   Symbol *Old = insert(New);
   mergeProperties(Old, New);
 
   if (Old->isPlaceholder()) {
     replaceSymbol(Old, &New);
-    return;
+    return Old;
   }
 
   if (!Old->isUndefined())
-    return;
+    return Old;
 
   // An undefined weak will not fetch archive members. See comment on Lazy in
   // Symbols.h for the details.
@@ -448,16 +449,21 @@ template <class LazyT> void SymbolTable::addLazy(const LazyT &New) {
     replaceSymbol(Old, &New);
     Old->Type = Type;
     Old->Binding = STB_WEAK;
-    return;
+    return Old;
   }
 
   if (InputFile *F = New.fetch())
     parseFile(F);
+  return Old;
 }
 
-void SymbolTable::addLazyArchive(const LazyArchive &New) { addLazy(New); }
+Symbol *SymbolTable::addLazyArchive(const LazyArchive &New) {
+  return addLazy(New);
+}
 
-void SymbolTable::addLazyObject(const LazyObject &New) { addLazy(New); }
+Symbol *SymbolTable::addLazyObject(const LazyObject &New) {
+  return addLazy(New);
+}
 
 void SymbolTable::fetchLazy(Symbol *Sym) {
   if (auto *S = dyn_cast<LazyArchive>(Sym)) {
index 878cf7d..eb5fd1f 100644 (file)
@@ -47,9 +47,9 @@ public:
 
   Symbol *addUndefined(const Undefined &New);
   Symbol *addDefined(const Defined &New);
-  void addShared(const SharedSymbol &New);
-  void addLazyArchive(const LazyArchive &New);
-  void addLazyObject(const LazyObject &New);
+  Symbol *addShared(const SharedSymbol &New);
+  Symbol *addLazyArchive(const LazyArchive &New);
+  Symbol *addLazyObject(const LazyObject &New);
   Symbol *addBitcode(const Defined &New);
   Symbol *addCommon(const CommonSymbol &New);
 
@@ -70,7 +70,7 @@ public:
   llvm::DenseMap<StringRef, SharedFile *> SoNames;
 
 private:
-  template <class LazyT> void addLazy(const LazyT &New);
+  template <class LazyT> Symbol *addLazy(const LazyT &New);
 
   std::vector<Symbol *> findByVersion(SymbolVersion Ver);
   std::vector<Symbol *> findAllByVersion(SymbolVersion Ver);