[clang] bac9e46 - [NFC][CodeGen][CFI] Extract CreateMetadataIdentifierForFnType (#158189)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 12 16:15:34 PDT 2025
Author: Vitaly Buka
Date: 2025-09-12T16:15:31-07:00
New Revision: bac9e463b1f77b7354fe68c87d58be67e3294806
URL: https://github.com/llvm/llvm-project/commit/bac9e463b1f77b7354fe68c87d58be67e3294806
DIFF: https://github.com/llvm/llvm-project/commit/bac9e463b1f77b7354fe68c87d58be67e3294806.diff
LOG: [NFC][CodeGen][CFI] Extract CreateMetadataIdentifierForFnType (#158189)
For #158193
Added:
Modified:
clang/lib/CodeGen/CGExpr.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenModule.h
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index e8456a44f8367..e6e4947882544 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -6496,11 +6496,8 @@ RValue CodeGenFunction::EmitCall(QualType CalleeType,
SanitizerDebugLocation SanScope(this, {CheckOrdinal}, CheckHandler);
EmitSanitizerStatReport(llvm::SanStat_CFI_ICall);
- llvm::Metadata *MD;
- if (CGM.getCodeGenOpts().SanitizeCfiICallGeneralizePointers)
- MD = CGM.CreateMetadataIdentifierGeneralized(QualType(FnType, 0));
- else
- MD = CGM.CreateMetadataIdentifierForType(QualType(FnType, 0));
+ llvm::Metadata *MD =
+ CGM.CreateMetadataIdentifierForFnType(QualType(FnType, 0));
llvm::Value *TypeId = llvm::MetadataAsValue::get(getLLVMContext(), MD);
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index a16dfb52f4d90..d45fb823d4c35 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -7934,6 +7934,13 @@ CodeGenModule::CreateMetadataIdentifierImpl(QualType T, MetadataTypeMap &Map,
return InternalId;
}
+llvm::Metadata *CodeGenModule::CreateMetadataIdentifierForFnType(QualType T) {
+ assert(isa<FunctionType>(T));
+ if (getCodeGenOpts().SanitizeCfiICallGeneralizePointers)
+ return CreateMetadataIdentifierGeneralized(T);
+ return CreateMetadataIdentifierForType(T);
+}
+
llvm::Metadata *CodeGenModule::CreateMetadataIdentifierForType(QualType T) {
return CreateMetadataIdentifierImpl(T, MetadataIdMap, "");
}
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h
index f62350fd8d378..8b1ac2d976c5e 100644
--- a/clang/lib/CodeGen/CodeGenModule.h
+++ b/clang/lib/CodeGen/CodeGenModule.h
@@ -1623,6 +1623,9 @@ class CodeGenModule : public CodeGenTypeCache {
/// Generate a KCFI type identifier for T.
llvm::ConstantInt *CreateKCFITypeId(QualType T, StringRef Salt);
+ /// Create a metadata identifier for the given function type.
+ llvm::Metadata *CreateMetadataIdentifierForFnType(QualType T);
+
/// Create a metadata identifier for the given type. This may either be an
/// MDString (for external identifiers) or a distinct unnamed MDNode (for
/// internal identifiers).
More information about the cfe-commits
mailing list