[llvm-branch-commits] [NFC][CFI][CodeGen] Move GeneralizeFunctionType out of CreateMetadataIdentifierGeneralized (PR #158190)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Sep 11 21:46:17 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-codegen
Author: Vitaly Buka (vitalybuka)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/158190.diff
1 Files Affected:
- (modified) clang/lib/CodeGen/CodeGenModule.cpp (+9-5)
``````````diff
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index d45fb823d4c35..acd77c5aca89c 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3041,9 +3041,11 @@ void CodeGenModule::createFunctionTypeMetadataForIcall(const FunctionDecl *FD,
if (isa<CXXMethodDecl>(FD) && !cast<CXXMethodDecl>(FD)->isStatic())
return;
- llvm::Metadata *MD = CreateMetadataIdentifierForType(FD->getType());
+ QualType FnType = FD->getType();
+ llvm::Metadata *MD = CreateMetadataIdentifierForType(FnType);
F->addTypeMetadata(0, MD);
- F->addTypeMetadata(0, CreateMetadataIdentifierGeneralized(FD->getType()));
+ FnType = GeneralizeFunctionType(getContext(), FnType);
+ F->addTypeMetadata(0, CreateMetadataIdentifierGeneralized(FnType));
// Emit a hash-based bit set entry for cross-DSO calls.
if (CodeGenOpts.SanitizeCfiCrossDso)
@@ -7936,8 +7938,10 @@ CodeGenModule::CreateMetadataIdentifierImpl(QualType T, MetadataTypeMap &Map,
llvm::Metadata *CodeGenModule::CreateMetadataIdentifierForFnType(QualType T) {
assert(isa<FunctionType>(T));
- if (getCodeGenOpts().SanitizeCfiICallGeneralizePointers)
+ if (getCodeGenOpts().SanitizeCfiICallGeneralizePointers) {
+ T = GeneralizeFunctionType(getContext(), T);
return CreateMetadataIdentifierGeneralized(T);
+ }
return CreateMetadataIdentifierForType(T);
}
@@ -7951,8 +7955,8 @@ CodeGenModule::CreateMetadataIdentifierForVirtualMemPtrType(QualType T) {
}
llvm::Metadata *CodeGenModule::CreateMetadataIdentifierGeneralized(QualType T) {
- return CreateMetadataIdentifierImpl(GeneralizeFunctionType(getContext(), T),
- GeneralizedMetadataIdMap, ".generalized");
+ return CreateMetadataIdentifierImpl(T, GeneralizedMetadataIdMap,
+ ".generalized");
}
/// Returns whether this module needs the "all-vtables" type identifier.
``````````
</details>
https://github.com/llvm/llvm-project/pull/158190
More information about the llvm-branch-commits
mailing list