Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
llvm13
llvm-rust-mangle-for-fastcall.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File llvm-rust-mangle-for-fastcall.patch of Package llvm13
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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor