Author: Vitaly Buka Date: 2025-09-12T23:38:21Z New Revision: 8ac67aa8a9ef0012a619e1395a23a04cbea3abe9
URL: https://github.com/llvm/llvm-project/commit/8ac67aa8a9ef0012a619e1395a23a04cbea3abe9 DIFF: https://github.com/llvm/llvm-project/commit/8ac67aa8a9ef0012a619e1395a23a04cbea3abe9.diff LOG: [NFC][CFI][CodeGen] Move GeneralizeFunctionType out of CreateMetadataIdentifierGeneralized (#158190) For #158193 Added: Modified: clang/lib/CodeGen/CodeGenModule.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index d45fb823d4c35..a650f27f977c9 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -3041,9 +3041,12 @@ 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())); + + QualType GenPtrFnType = GeneralizeFunctionType(getContext(), FD->getType()); + F->addTypeMetadata(0, CreateMetadataIdentifierGeneralized(GenPtrFnType)); // Emit a hash-based bit set entry for cross-DSO calls. if (CodeGenOpts.SanitizeCfiCrossDso) @@ -7936,8 +7939,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 +7956,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. _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
