a047e503aa
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/llvm13?expand=0&rev=20
42 lines
1.8 KiB
Diff
42 lines
1.8 KiB
Diff
From 54b909de682bfa4e3389b680b0916ab18c99952a Mon Sep 17 00:00:00 2001
|
|
From: Amanieu d'Antras <amanieu@gmail.com>
|
|
Date: Fri, 25 Feb 2022 22:06:47 +0000
|
|
Subject: [PATCH] [Mangler] Mangle aliases to fastcall/vectorcall functions
|
|
correctly
|
|
|
|
These aliases are produced by MergeFunctions and need to be mangled according to the calling convention of the function they are pointing to instead of defaulting to the C calling convention.
|
|
|
|
Reviewed By: rnk
|
|
|
|
Differential Revision: https://reviews.llvm.org/D120382
|
|
---
|
|
llvm/lib/IR/Mangler.cpp | 2 +-
|
|
llvm/test/CodeGen/X86/fastcall-correct-mangling.ll | 4 ++++
|
|
2 files changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/llvm/lib/IR/Mangler.cpp b/llvm/lib/IR/Mangler.cpp
|
|
index 2399ea27ee9d4..b8e3e40e4c1d5 100644
|
|
--- a/llvm/lib/IR/Mangler.cpp
|
|
+++ b/llvm/lib/IR/Mangler.cpp
|
|
@@ -144,7 +144,7 @@ void Mangler::getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV,
|
|
|
|
// Mangle functions with Microsoft calling conventions specially. Only do
|
|
// this mangling for x86_64 vectorcall and 32-bit x86.
|
|
- const Function *MSFunc = dyn_cast<Function>(GV);
|
|
+ const Function *MSFunc = dyn_cast_or_null<Function>(GV->getBaseObject());
|
|
|
|
// Don't add byte count suffixes when '\01' or '?' are in the first
|
|
// character.
|
|
diff --git a/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll b/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll
|
|
index 00dc44e75e8f5..dd8ce0f0ef505 100644
|
|
--- a/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll
|
|
+++ b/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll
|
|
@@ -31,3 +31,7 @@ define private x86_fastcallcc void @dontCrash() {
|
|
; CHECK64-LABEL: {{^}}.LdontCrash:
|
|
ret void
|
|
}
|
|
+
|
|
+@alias = alias void(i64, i8, i8, i16), void(i64, i8, i8, i16)* @func
|
|
+; CHECK32-LABEL: {{^}}.set @alias@20, @func@20
|
|
+; CHECK64-LABEL: {{^}}.set alias, func
|