[lld] aac70d6 - [LLD][COFF] Introduce Symbol::getDefined helper. (NFC) (#151253)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 31 03:58:48 PDT 2025


Author: Jacek Caban
Date: 2025-07-31T12:58:45+02:00
New Revision: aac70d69f6214629f869ab32afab591f11a13156

URL: https://github.com/llvm/llvm-project/commit/aac70d69f6214629f869ab32afab591f11a13156
DIFF: https://github.com/llvm/llvm-project/commit/aac70d69f6214629f869ab32afab591f11a13156.diff

LOG: [LLD][COFF] Introduce Symbol::getDefined helper. (NFC) (#151253)

Added: 
    

Modified: 
    lld/COFF/Driver.cpp
    lld/COFF/Symbols.cpp
    lld/COFF/Symbols.h

Removed: 
    


################################################################################
diff  --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index 570b8f9d05906..192a998229e92 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -1318,13 +1318,9 @@ void LinkerDriver::convertResources() {
 }
 
 void LinkerDriver::maybeCreateECExportThunk(StringRef name, Symbol *&sym) {
-  Defined *def;
   if (!sym)
     return;
-  if (auto undef = dyn_cast<Undefined>(sym))
-    def = undef->getDefinedWeakAlias();
-  else
-    def = dyn_cast<Defined>(sym);
+  Defined *def = sym->getDefined();
   if (!def)
     return;
 
@@ -1356,11 +1352,7 @@ void LinkerDriver::createECExportThunks() {
     Symbol *sym = ctx.symtab.find(targetName);
     if (!sym)
       continue;
-    Defined *targetSym;
-    if (auto undef = dyn_cast<Undefined>(sym))
-      targetSym = undef->getDefinedWeakAlias();
-    else
-      targetSym = dyn_cast<Defined>(sym);
+    Defined *targetSym = sym->getDefined();
     if (!targetSym)
       continue;
 

diff  --git a/lld/COFF/Symbols.cpp b/lld/COFF/Symbols.cpp
index b571ce9ce432c..ba4f95d14bc64 100644
--- a/lld/COFF/Symbols.cpp
+++ b/lld/COFF/Symbols.cpp
@@ -91,6 +91,14 @@ bool Symbol::isLive() const {
   return true;
 }
 
+Defined *Symbol::getDefined() {
+  if (auto d = dyn_cast<Defined>(this))
+    return d;
+  if (auto u = dyn_cast<Undefined>(this))
+    return u->getDefinedWeakAlias();
+  return nullptr;
+}
+
 void Symbol::replaceKeepingName(Symbol *other, size_t size) {
   StringRef origName = getName();
   memcpy(this, other, size);

diff  --git a/lld/COFF/Symbols.h b/lld/COFF/Symbols.h
index fd3d8cec8c113..c86ded860876b 100644
--- a/lld/COFF/Symbols.h
+++ b/lld/COFF/Symbols.h
@@ -95,6 +95,10 @@ class Symbol {
            symbolKind == LazyDLLSymbolKind;
   }
 
+  // Get the Defined symbol associated with this symbol, either itself or its
+  // weak alias.
+  Defined *getDefined();
+
 private:
   void computeName();
 


        


More information about the llvm-commits mailing list