[PATCH] D88305: [COFF] Aliases resolve directly to defined external targets

Eric Astor via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 25 07:36:53 PDT 2020


epastor created this revision.
epastor added a reviewer: mstorsjo.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
epastor requested review of this revision.

Avoid introducing unnecessary indirection for weak-external references.

We only need to introduce ".weak.<SYMBOL>.default" when referencing a
symbol that is defined, but not external.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D88305

Files:
  llvm/lib/MC/WinCOFFObjectWriter.cpp
  llvm/test/MC/COFF/weak.s


Index: llvm/test/MC/COFF/weak.s
===================================================================
--- llvm/test/MC/COFF/weak.s
+++ llvm/test/MC/COFF/weak.s
@@ -77,17 +77,7 @@
 // CHECK-NEXT:   StorageClass:   WeakExternal
 // CHECK-NEXT:   AuxSymbolCount: 1
 // CHECK-NEXT:   AuxWeakExternal {
-// CHECK-NEXT:     Linked: .weak._test_weak_alias.default
+// CHECK-NEXT:     Linked: _main
 // CHECK-NEXT:      Search: Alias
 // CHECK-NEXT:   }
 // CHECK-NEXT: }
-
-// CHECK:      Symbol {
-// CHECK:        Name: .weak._test_weak_alias.default._main
-// CHECK-NEXT:   Value: 0
-// CHECK-NEXT:   Section: .text
-// CHECK-NEXT:   BaseType: Null
-// CHECK-NEXT:   ComplexType: Null
-// CHECK-NEXT:   StorageClass: External
-// CHECK-NEXT:   AuxSymbolCount: 0
-// CHECK-NEXT: }
Index: llvm/lib/MC/WinCOFFObjectWriter.cpp
===================================================================
--- llvm/lib/MC/WinCOFFObjectWriter.cpp
+++ llvm/lib/MC/WinCOFFObjectWriter.cpp
@@ -353,9 +353,10 @@
     return nullptr;
 
   const MCSymbol &Aliasee = SymRef->getSymbol();
-  if (!Aliasee.isUndefined())
+  if (Aliasee.isUndefined() || Aliasee.isExternal())
+    return GetOrCreateCOFFSymbol(&Aliasee);
+  else
     return nullptr;
-  return GetOrCreateCOFFSymbol(&Aliasee);
 }
 
 /// This function takes a symbol data object from the assembler


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88305.294306.patch
Type: text/x-patch
Size: 1331 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200925/858dae79/attachment.bin>


More information about the llvm-commits mailing list