Skip to content

Commit f2f3387

Browse files
committed
[CodeGen][ARM64EC] Use function symbol type for function alias symbols.
1 parent d5e57c3 commit f2f3387

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,10 @@ void AArch64AsmPrinter::emitFunctionEntryLabel() {
11681168
// For ARM64EC targets, a function definition's name is mangled differently
11691169
// from the normal symbol, emit required aliases here.
11701170
auto emitFunctionAlias = [&](MCSymbol *Src, MCSymbol *Dst) {
1171+
OutStreamer->beginCOFFSymbolDef(Src);
1172+
OutStreamer->emitCOFFSymbolType(COFF::IMAGE_SYM_DTYPE_FUNCTION
1173+
<< COFF::SCT_COMPLEX_TYPE_SHIFT);
1174+
OutStreamer->endCOFFSymbolDef();
11711175
OutStreamer->emitSymbolAttribute(Src, MCSA_WeakAntiDep);
11721176
OutStreamer->emitAssignment(
11731177
Src, MCSymbolRefExpr::create(Dst, MCSymbolRefExpr::VK_WEAKREF,
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
; RUN: llc -mtriple=arm64ec-pc-windows-msvc < %s | FileCheck %s
2+
3+
declare void @func() nounwind;
4+
5+
define void @caller() nounwind {
6+
call void @func()
7+
ret void
8+
}
9+
10+
; CHECK: .def caller;
11+
; CHECK-NEXT: .type 32;
12+
; CHECK-NEXT: .endef
13+
; CHECK-NEXT: .weak_anti_dep caller
14+
; CHECK-NEXT: .set caller, "#caller"@WEAKREF
15+
16+
; CHECK: .def func;
17+
; CHECK-NEXT: .type 32;
18+
; CHECK-NEXT: .endef
19+
; CHECK-NEXT: .weak_anti_dep func
20+
; CHECK-NEXT: .set func, "#func"@WEAKREF
21+
; CHECK-NEXT: .def "#func";
22+
; CHECK-NEXT: .type 32;
23+
; CHECK-NEXT: .endef
24+
; CHECK-NEXT: .weak_anti_dep "#func"
25+
; CHECK-NEXT: .set "#func", "#func$exit_thunk"@WEAKREF

0 commit comments

Comments
 (0)