[clang] [CodeGen] Create IFUNCs in the program address space, not hard-coded 0 (PR #105726)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 22 13:28:58 PDT 2024
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff 2c12c1e755a1bf453b246027b450b3b8e30fb016 4be2b44f7e400b417e228766169b15f1a20d4602 --extensions cpp,c -- clang/lib/CodeGen/CodeGenModule.cpp clang/test/CodeGen/ifunc.c
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index ce681dd878..3fbadda5bd 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -4448,8 +4448,8 @@ void CodeGenModule::emitCPUDispatchDefinition(GlobalDecl GD) {
// Fix up function declarations that were created for cpu_specific before
// cpu_dispatch was known
if (!isa<llvm::GlobalIFunc>(IFunc)) {
- auto *GI = llvm::GlobalIFunc::create(DeclTy, AS, Linkage, "", ResolverFunc,
- &getModule());
+ auto *GI = llvm::GlobalIFunc::create(DeclTy, AS, Linkage, "",
+ ResolverFunc, &getModule());
replaceDeclarationWith(IFunc, GI);
IFunc = GI;
}
@@ -4532,9 +4532,8 @@ llvm::Constant *CodeGenModule::GetOrCreateMultiVersionResolver(GlobalDecl GD) {
// cpu_dispatch will be emitted in this translation unit.
if (getTarget().supportsIFunc() && !FD->isCPUSpecificMultiVersion()) {
unsigned AS = getTypes().getTargetAddressSpace(FD->getType());
- llvm::Type *ResolverType = llvm::FunctionType::get(
- llvm::PointerType::get(DeclTy, AS),
- false);
+ llvm::Type *ResolverType =
+ llvm::FunctionType::get(llvm::PointerType::get(DeclTy, AS), false);
llvm::Constant *Resolver = GetOrCreateLLVMFunction(
MangledName + ".resolver", ResolverType, GlobalDecl{},
/*ForVTable=*/false);
@@ -6146,9 +6145,8 @@ void CodeGenModule::emitIFuncDefinition(GlobalDecl GD) {
/*ForVTable=*/false);
llvm::Type *DeclTy = getTypes().ConvertTypeForMem(D->getType());
unsigned AS = getTypes().getTargetAddressSpace(D->getType());
- llvm::GlobalIFunc *GIF =
- llvm::GlobalIFunc::create(DeclTy, AS, llvm::Function::ExternalLinkage,
- "", Resolver, &getModule());
+ llvm::GlobalIFunc *GIF = llvm::GlobalIFunc::create(
+ DeclTy, AS, llvm::Function::ExternalLinkage, "", Resolver, &getModule());
if (Entry) {
if (GIF->getResolver() == Entry) {
Diags.Report(IFA->getLocation(), diag::err_cyclic_alias) << 1;
``````````
</details>
https://github.com/llvm/llvm-project/pull/105726
More information about the cfe-commits
mailing list