[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