[clang] [llvm] [KCFI][NFC] Rename the !kcfi_type Function metadata to !cfi_type (PR #109080)

via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 17 20:44:13 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64

@llvm/pr-subscribers-backend-x86

Author: Ming-Yi Lai (mylai-mtk)

<details>
<summary>Changes</summary>

According to the comments in <https://reviews.llvm.org/D119296>, which introduces the KCFI sanitizer, the data structures of KCFI should avoid embedding the term "kcfi" in their names so that later/new CFI mechanisms can make use of the data structures, however, those "kcfi" were not removed completely. This patch further removes those "kcfi" terms from the Function metadata !kcfi_type so that the RISC-V Zicfilp extension code generation can reuse the same data path as the KCFI sanitizer to pass function-specific CFI labels.

---

Patch is 28.96 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109080.diff


28 Files Affected:

- (modified) clang/lib/CodeGen/CodeGenModule.cpp (+8-8) 
- (modified) clang/lib/CodeGen/CodeGenModule.h (+3-3) 
- (modified) clang/test/CodeGen/kcfi-normalize.c (+3-3) 
- (modified) clang/test/CodeGen/kcfi.c (+10-10) 
- (modified) llvm/docs/LangRef.rst (+6-6) 
- (modified) llvm/include/llvm/IR/FixedMetadataKinds.def (+1-1) 
- (modified) llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (+1-1) 
- (modified) llvm/lib/CodeGen/MachineFunction.cpp (+2-1) 
- (modified) llvm/lib/IR/Verifier.cpp (+11-12) 
- (modified) llvm/lib/Target/X86/X86AsmPrinter.cpp (+1-1) 
- (modified) llvm/lib/Transforms/IPO/MergeFunctions.cpp (+2-2) 
- (modified) llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp (+2-2) 
- (modified) llvm/lib/Transforms/Utils/ModuleUtils.cpp (+1-1) 
- (modified) llvm/test/CodeGen/AArch64/kcfi-bti.ll (+2-2) 
- (modified) llvm/test/CodeGen/AArch64/kcfi-patchable-function-prefix.ll (+2-2) 
- (modified) llvm/test/CodeGen/AArch64/kcfi.ll (+1-1) 
- (modified) llvm/test/CodeGen/ARM/kcfi.ll (+1-1) 
- (modified) llvm/test/CodeGen/RISCV/kcfi-isel-mir.ll (+1-1) 
- (modified) llvm/test/CodeGen/RISCV/kcfi-mir.ll (+1-1) 
- (modified) llvm/test/CodeGen/RISCV/kcfi-patchable-function-prefix.ll (+2-2) 
- (modified) llvm/test/CodeGen/RISCV/kcfi.ll (+1-1) 
- (modified) llvm/test/CodeGen/X86/kcfi-patchable-function-prefix.ll (+2-2) 
- (modified) llvm/test/CodeGen/X86/kcfi.ll (+3-3) 
- (modified) llvm/test/Instrumentation/AddressSanitizer/kcfi-offset.ll (+1-1) 
- (modified) llvm/test/Instrumentation/AddressSanitizer/kcfi.ll (+2-2) 
- (modified) llvm/test/Transforms/GCOVProfiling/kcfi-normalize.ll (+4-4) 
- (modified) llvm/test/Transforms/GCOVProfiling/kcfi.ll (+4-4) 
- (modified) llvm/test/Verifier/metadata-function-kcfi-type.ll (+11-11) 


``````````diff
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 17b82b205063d4..561673ab960b31 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -910,7 +910,7 @@ void CodeGenModule::Release() {
     CodeGenFunction(*this).EmitCfiCheckStub();
   }
   if (LangOpts.Sanitize.has(SanitizerKind::KCFI))
-    finalizeKCFITypes();
+    finalizeCFITypes();
   emitAtAvailableLinkGuard();
   if (Context.getTargetInfo().getTriple().isWasm())
     EmitMainVoidAlias();
@@ -2818,10 +2818,10 @@ void CodeGenModule::CreateFunctionTypeMetadataForIcall(const FunctionDecl *FD,
       F->addTypeMetadata(0, llvm::ConstantAsMetadata::get(CrossDsoTypeId));
 }
 
-void CodeGenModule::setKCFIType(const FunctionDecl *FD, llvm::Function *F) {
+void CodeGenModule::setCFIType(const FunctionDecl *FD, llvm::Function *F) {
   llvm::LLVMContext &Ctx = F->getContext();
   llvm::MDBuilder MDB(Ctx);
-  F->setMetadata(llvm::LLVMContext::MD_kcfi_type,
+  F->setMetadata(llvm::LLVMContext::MD_cfi_type,
                  llvm::MDNode::get(
                      Ctx, MDB.createConstant(CreateKCFITypeId(FD->getType()))));
 }
@@ -2835,13 +2835,13 @@ static bool allowKCFIIdentifier(StringRef Name) {
   });
 }
 
-void CodeGenModule::finalizeKCFITypes() {
+void CodeGenModule::finalizeCFITypes() {
   llvm::Module &M = getModule();
   for (auto &F : M.functions()) {
-    // Remove KCFI type metadata from non-address-taken local functions.
+    // Remove CFI type metadata from non-address-taken local functions.
     bool AddressTaken = F.hasAddressTaken();
     if (!AddressTaken && F.hasLocalLinkage())
-      F.eraseMetadata(llvm::LLVMContext::MD_kcfi_type);
+      F.eraseMetadata(llvm::LLVMContext::MD_cfi_type);
 
     // Generate a constant with the expected KCFI type identifier for all
     // address-taken function declarations to support annotating indirectly
@@ -2850,7 +2850,7 @@ void CodeGenModule::finalizeKCFITypes() {
       continue;
 
     const llvm::ConstantInt *Type;
-    if (const llvm::MDNode *MD = F.getMetadata(llvm::LLVMContext::MD_kcfi_type))
+    if (const llvm::MDNode *MD = F.getMetadata(llvm::LLVMContext::MD_cfi_type))
       Type = llvm::mdconst::extract<llvm::ConstantInt>(MD->getOperand(0));
     else
       continue;
@@ -2949,7 +2949,7 @@ void CodeGenModule::SetFunctionAttributes(GlobalDecl GD, llvm::Function *F,
     CreateFunctionTypeMetadataForIcall(FD, F);
 
   if (LangOpts.Sanitize.has(SanitizerKind::KCFI))
-    setKCFIType(FD, F);
+    setCFIType(FD, F);
 
   if (getLangOpts().OpenMP && FD->hasAttr<OMPDeclareSimdDeclAttr>())
     getOpenMPRuntime().emitDeclareSimdFunction(FD, F);
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h
index c58bb88035ca8a..0ebcf7dfba6b28 100644
--- a/clang/lib/CodeGen/CodeGenModule.h
+++ b/clang/lib/CodeGen/CodeGenModule.h
@@ -1554,10 +1554,10 @@ class CodeGenModule : public CodeGenTypeCache {
                                           llvm::Function *F);
 
   /// Set type metadata to the given function.
-  void setKCFIType(const FunctionDecl *FD, llvm::Function *F);
+  void setCFIType(const FunctionDecl *FD, llvm::Function *F);
 
-  /// Emit KCFI type identifier constants and remove unused identifiers.
-  void finalizeKCFITypes();
+  /// Emit CFI type identifier constants and remove unused identifiers.
+  void finalizeCFITypes();
 
   /// Whether this function's return type has no side effects, and thus may
   /// be trivially discarded if it is unused.
diff --git a/clang/test/CodeGen/kcfi-normalize.c b/clang/test/CodeGen/kcfi-normalize.c
index b9150e88f6ab5f..5fa0732c72eb26 100644
--- a/clang/test/CodeGen/kcfi-normalize.c
+++ b/clang/test/CodeGen/kcfi-normalize.c
@@ -9,21 +9,21 @@
 
 void foo(void (*fn)(int), int arg) {
     // CHECK-LABEL: define{{.*}}foo
-    // CHECK-SAME: {{.*}}!kcfi_type ![[TYPE1:[0-9]+]]
+    // CHECK-SAME: {{.*}}!cfi_type ![[TYPE1:[0-9]+]]
     // CHECK: call void %0(i32 noundef %1){{.*}}[ "kcfi"(i32 1162514891) ]
     fn(arg);
 }
 
 void bar(void (*fn)(int, int), int arg1, int arg2) {
     // CHECK-LABEL: define{{.*}}bar
-    // CHECK-SAME: {{.*}}!kcfi_type ![[TYPE2:[0-9]+]]
+    // CHECK-SAME: {{.*}}!cfi_type ![[TYPE2:[0-9]+]]
     // CHECK: call void %0(i32 noundef %1, i32 noundef %2){{.*}}[ "kcfi"(i32 448046469) ]
     fn(arg1, arg2);
 }
 
 void baz(void (*fn)(int, int, int), int arg1, int arg2, int arg3) {
     // CHECK-LABEL: define{{.*}}baz
-    // CHECK-SAME: {{.*}}!kcfi_type ![[TYPE3:[0-9]+]]
+    // CHECK-SAME: {{.*}}!cfi_type ![[TYPE3:[0-9]+]]
     // CHECK: call void %0(i32 noundef %1, i32 noundef %2, i32 noundef %3){{.*}}[ "kcfi"(i32 -2049681433) ]
     fn(arg1, arg2, arg3);
 }
diff --git a/clang/test/CodeGen/kcfi.c b/clang/test/CodeGen/kcfi.c
index 622843cedba50f..e5c7a49b0665b7 100644
--- a/clang/test/CodeGen/kcfi.c
+++ b/clang/test/CodeGen/kcfi.c
@@ -15,10 +15,10 @@
 // C: @ifunc2 = ifunc i64 (i64), ptr @resolver2
 typedef int (*fn_t)(void);
 
-// CHECK: define dso_local{{.*}} i32 @{{f1|_Z2f1v}}(){{.*}} !kcfi_type ![[#TYPE:]]
+// CHECK: define dso_local{{.*}} i32 @{{f1|_Z2f1v}}(){{.*}} !cfi_type ![[#TYPE:]]
 int f1(void) { return 0; }
 
-// CHECK: define dso_local{{.*}} i32 @{{f2|_Z2f2v}}(){{.*}} !kcfi_type ![[#TYPE2:]]
+// CHECK: define dso_local{{.*}} i32 @{{f2|_Z2f2v}}(){{.*}} !cfi_type ![[#TYPE2:]]
 unsigned int f2(void) { return 2; }
 
 // CHECK-LABEL: define dso_local{{.*}} i32 @{{__call|_Z6__callPFivE}}(ptr{{.*}} %f)
@@ -33,27 +33,27 @@ int call(fn_t f) {
   return f();
 }
 
-// CHECK-DAG: define internal{{.*}} i32 @{{f3|_ZL2f3v}}(){{.*}} !kcfi_type ![[#TYPE]]
+// CHECK-DAG: define internal{{.*}} i32 @{{f3|_ZL2f3v}}(){{.*}} !cfi_type ![[#TYPE]]
 static int f3(void) { return 1; }
 
-// CHECK-DAG: declare !kcfi_type ![[#TYPE]]{{.*}} i32 @[[F4]]()
+// CHECK-DAG: declare !cfi_type ![[#TYPE]]{{.*}} i32 @[[F4]]()
 extern int f4(void);
 
-/// Must not emit !kcfi_type for non-address-taken local functions
+/// Must not emit !cfi_type for non-address-taken local functions
 // CHECK: define internal{{.*}} i32 @{{f5|_ZL2f5v}}()
-// CHECK-NOT: !kcfi_type
+// CHECK-NOT: !cfi_type
 // CHECK-SAME: {
 static int f5(void) { return 2; }
 
-// CHECK-DAG: declare !kcfi_type ![[#TYPE]]{{.*}} i32 @{{f6|_Z2f6v}}()
+// CHECK-DAG: declare !cfi_type ![[#TYPE]]{{.*}} i32 @{{f6|_Z2f6v}}()
 extern int f6(void);
 
 #ifndef __cplusplus
-// C: define internal ptr @resolver1() #[[#]] !kcfi_type ![[#]] {
+// C: define internal ptr @resolver1() #[[#]] !cfi_type ![[#]] {
 int ifunc1(int) __attribute__((ifunc("resolver1")));
 static void *resolver1(void) { return 0; }
 
-// C: define internal ptr @resolver2() #[[#]] !kcfi_type ![[#]] {
+// C: define internal ptr @resolver2() #[[#]] !cfi_type ![[#]] {
 static void *resolver2(void) { return 0; }
 long ifunc2(long) __attribute__((ifunc("resolver2")));
 #endif
@@ -69,7 +69,7 @@ int test(void) {
 
 #ifdef __cplusplus
 struct A {
-  // MEMBER-DAG: define{{.*}} void @_ZN1A1fEv(ptr{{.*}} %this){{.*}} !kcfi_type ![[#TYPE3:]]
+  // MEMBER-DAG: define{{.*}} void @_ZN1A1fEv(ptr{{.*}} %this){{.*}} !cfi_type ![[#TYPE3:]]
   void f() {}
 };
 
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst
index 144b4497ca63ce..3077329eda33da 100644
--- a/llvm/docs/LangRef.rst
+++ b/llvm/docs/LangRef.rst
@@ -2960,7 +2960,7 @@ KCFI Operand Bundles
 
 A ``"kcfi"`` operand bundle on an indirect call indicates that the call will
 be preceded by a runtime type check, which validates that the call target is
-prefixed with a :ref:`type identifier<md_kcfi_type>` that matches the operand
+prefixed with a :ref:`type identifier<md_cfi_type>` that matches the operand
 bundle attribute. For example:
 
 .. code-block:: llvm
@@ -7932,12 +7932,12 @@ Example:
     }
     !0 = !{i32 846595819, ptr @__llvm_rtti_proxy}
 
-.. _md_kcfi_type:
+.. _md_cfi_type:
 
-'``kcfi_type``' Metadata
+'``cfi_type``' Metadata
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
-The ``kcfi_type`` metadata can be used to attach a type identifier to
+The ``cfi_type`` metadata can be used to attach a type identifier to
 functions that can be called indirectly. The type data is emitted before the
 function entry in the assembly. Indirect calls with the :ref:`kcfi operand
 bundle<ob_kcfi>` will emit a check that compares the type identifier to the
@@ -7947,12 +7947,12 @@ Example:
 
 .. code-block:: text
 
-    define dso_local i32 @f() !kcfi_type !0 {
+    define dso_local i32 @f() !cfi_type !0 {
       ret i32 0
     }
     !0 = !{i32 12345678}
 
-Clang emits ``kcfi_type`` metadata nodes for address-taken functions with
+Clang emits ``cfi_type`` metadata nodes for address-taken functions with
 ``-fsanitize=kcfi``.
 
 .. _md_memprof:
diff --git a/llvm/include/llvm/IR/FixedMetadataKinds.def b/llvm/include/llvm/IR/FixedMetadataKinds.def
index 5f4cc230a0f5ff..007cf9a38ccc80 100644
--- a/llvm/include/llvm/IR/FixedMetadataKinds.def
+++ b/llvm/include/llvm/IR/FixedMetadataKinds.def
@@ -47,7 +47,7 @@ LLVM_FIXED_MD_KIND(MD_func_sanitize, "func_sanitize", 32)
 LLVM_FIXED_MD_KIND(MD_exclude, "exclude", 33)
 LLVM_FIXED_MD_KIND(MD_memprof, "memprof", 34)
 LLVM_FIXED_MD_KIND(MD_callsite, "callsite", 35)
-LLVM_FIXED_MD_KIND(MD_kcfi_type, "kcfi_type", 36)
+LLVM_FIXED_MD_KIND(MD_cfi_type, "cfi_type", 36)
 LLVM_FIXED_MD_KIND(MD_pcsections, "pcsections", 37)
 LLVM_FIXED_MD_KIND(MD_DIAssignID, "DIAssignID", 38)
 LLVM_FIXED_MD_KIND(MD_coro_outside_frame, "coro.outside.frame", 39)
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index db7adfd3b21e5f..a51c859f665af5 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1512,7 +1512,7 @@ void AsmPrinter::emitKCFITrapEntry(const MachineFunction &MF,
 
 void AsmPrinter::emitKCFITypeId(const MachineFunction &MF) {
   const Function &F = MF.getFunction();
-  if (const MDNode *MD = F.getMetadata(LLVMContext::MD_kcfi_type))
+  if (const MDNode *MD = F.getMetadata(LLVMContext::MD_cfi_type))
     emitGlobalConstant(F.getDataLayout(),
                        mdconst::extract<ConstantInt>(MD->getOperand(0)));
 }
diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
index ab45663436cedc..4193ce5730c28f 100644
--- a/llvm/lib/CodeGen/MachineFunction.cpp
+++ b/llvm/lib/CodeGen/MachineFunction.cpp
@@ -225,7 +225,8 @@ void MachineFunction::init() {
   // by a least 4 to avoid unaligned access, which is especially important for
   // -mno-unaligned-access.
   if (F.hasMetadata(LLVMContext::MD_func_sanitize) ||
-      F.getMetadata(LLVMContext::MD_kcfi_type))
+      (F.getParent()->getModuleFlag("kcfi") &&
+       F.getMetadata(LLVMContext::MD_cfi_type)))
     Alignment = std::max(Alignment, Align(4));
 
   if (AlignAllFunctions)
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 06a67346fbf959..1c0ceb9e12fbfc 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -2413,19 +2413,19 @@ void Verifier::verifyFunctionMetadata(
             MD);
       Check(isa<ConstantAsMetadata>(MD->getOperand(1)),
             "expected integer argument to function_entry_count", MD);
-    } else if (Pair.first == LLVMContext::MD_kcfi_type) {
+    } else if (Pair.first == LLVMContext::MD_cfi_type) {
       MDNode *MD = Pair.second;
       Check(MD->getNumOperands() == 1,
-            "!kcfi_type must have exactly one operand", MD);
-      Check(MD->getOperand(0) != nullptr, "!kcfi_type operand must not be null",
+            "!cfi_type must have exactly one operand", MD);
+      Check(MD->getOperand(0) != nullptr, "!cfi_type operand must not be null",
             MD);
       Check(isa<ConstantAsMetadata>(MD->getOperand(0)),
-            "expected a constant operand for !kcfi_type", MD);
+            "expected a constant operand for !cfi_type", MD);
       Constant *C = cast<ConstantAsMetadata>(MD->getOperand(0))->getValue();
       Check(isa<ConstantInt>(C) && isa<IntegerType>(C->getType()),
-            "expected a constant integer operand for !kcfi_type", MD);
+            "expected a constant integer operand for !cfi_type", MD);
       Check(cast<ConstantInt>(C)->getBitWidth() == 32,
-            "expected a 32-bit integer constant operand for !kcfi_type", MD);
+            "expected a 32-bit integer constant operand for !cfi_type", MD);
     }
   }
 }
@@ -2927,7 +2927,7 @@ void Verifier::visitFunction(const Function &F) {
     }
 
     unsigned NumDebugAttachments = 0, NumProfAttachments = 0,
-             NumKCFIAttachments = 0;
+             NumCFIAttachments = 0;
     // Visit metadata attachments.
     for (const auto &I : MDs) {
       // Verify that the attachment is legal.
@@ -2958,11 +2958,10 @@ void Verifier::visitFunction(const Function &F) {
         Check(NumProfAttachments == 1,
               "function must have a single !prof attachment", &F, I.second);
         break;
-      case LLVMContext::MD_kcfi_type:
-        ++NumKCFIAttachments;
-        Check(NumKCFIAttachments == 1,
-              "function must have a single !kcfi_type attachment", &F,
-              I.second);
+      case LLVMContext::MD_cfi_type:
+        ++NumCFIAttachments;
+        Check(NumCFIAttachments == 1,
+              "function must have a single !cfi_type attachment", &F, I.second);
         break;
       }
 
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index 957eb21cf4f8c3..83979f28844921 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -158,7 +158,7 @@ void X86AsmPrinter::emitKCFITypeId(const MachineFunction &MF) {
     return;
 
   ConstantInt *Type = nullptr;
-  if (const MDNode *MD = F.getMetadata(LLVMContext::MD_kcfi_type))
+  if (const MDNode *MD = F.getMetadata(LLVMContext::MD_cfi_type))
     Type = mdconst::extract<ConstantInt>(MD->getOperand(0));
 
   // If we don't have a type to emit, just emit padding if needed to maintain
diff --git a/llvm/lib/Transforms/IPO/MergeFunctions.cpp b/llvm/lib/Transforms/IPO/MergeFunctions.cpp
index b50a700e09038f..a396b70ca29c50 100644
--- a/llvm/lib/Transforms/IPO/MergeFunctions.cpp
+++ b/llvm/lib/Transforms/IPO/MergeFunctions.cpp
@@ -803,7 +803,7 @@ void MergeFunctions::writeThunk(Function *F, Function *G) {
     NewG->takeName(G);
     // Ensure CFI type metadata is propagated to the new function.
     copyMetadataIfPresent(G, NewG, "type");
-    copyMetadataIfPresent(G, NewG, "kcfi_type");
+    copyMetadataIfPresent(G, NewG, "cfi_type");
     removeUsers(G);
     G->replaceAllUsesWith(NewG);
     G->eraseFromParent();
@@ -882,7 +882,7 @@ void MergeFunctions::mergeTwoFunctions(Function *F, Function *G) {
     NewF->IsNewDbgInfoFormat = F->IsNewDbgInfoFormat;
     // Ensure CFI type metadata is propagated to the new function.
     copyMetadataIfPresent(F, NewF, "type");
-    copyMetadataIfPresent(F, NewF, "kcfi_type");
+    copyMetadataIfPresent(F, NewF, "cfi_type");
     removeUsers(F);
     F->replaceAllUsesWith(NewF);
 
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
index 61011d55227e7b..86abd753cd7d0e 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
@@ -3982,13 +3982,13 @@ Instruction *InstCombinerImpl::visitCallBase(CallBase &Call) {
         ConstantInt *FunctionType = nullptr;
         ConstantInt *ExpectedType = cast<ConstantInt>(Bundle->Inputs[0]);
 
-        if (MDNode *MD = CalleeF->getMetadata(LLVMContext::MD_kcfi_type))
+        if (MDNode *MD = CalleeF->getMetadata(LLVMContext::MD_cfi_type))
           FunctionType = mdconst::extract<ConstantInt>(MD->getOperand(0));
 
         if (FunctionType &&
             FunctionType->getZExtValue() != ExpectedType->getZExtValue())
           dbgs() << Call.getModule()->getName()
-                 << ": warning: kcfi: " << Call.getCaller()->getName()
+                 << ": warning: cfi: " << Call.getCaller()->getName()
                  << ": call to " << CalleeF->getName()
                  << " using a mismatching function pointer type\n";
       }
diff --git a/llvm/lib/Transforms/Utils/ModuleUtils.cpp b/llvm/lib/Transforms/Utils/ModuleUtils.cpp
index 7249571f344938..93fcec091d640e 100644
--- a/llvm/lib/Transforms/Utils/ModuleUtils.cpp
+++ b/llvm/lib/Transforms/Utils/ModuleUtils.cpp
@@ -208,7 +208,7 @@ void llvm::setKCFIType(Module &M, Function &F, StringRef MangledType) {
   std::string Type = MangledType.str();
   if (M.getModuleFlag("cfi-normalize-integers"))
     Type += ".normalized";
-  F.setMetadata(LLVMContext::MD_kcfi_type,
+  F.setMetadata(LLVMContext::MD_cfi_type,
                 MDNode::get(Ctx, MDB.createConstant(ConstantInt::get(
                                      Type::getInt32Ty(Ctx),
                                      static_cast<uint32_t>(xxHash64(Type))))));
diff --git a/llvm/test/CodeGen/AArch64/kcfi-bti.ll b/llvm/test/CodeGen/AArch64/kcfi-bti.ll
index 1ac894fa09015b..a6e29ba3651b7f 100644
--- a/llvm/test/CodeGen/AArch64/kcfi-bti.ll
+++ b/llvm/test/CodeGen/AArch64/kcfi-bti.ll
@@ -3,7 +3,7 @@
 ; RUN: llc -mtriple=aarch64-- -verify-machineinstrs -stop-after=kcfi < %s | FileCheck %s --check-prefixes=MIR,KCFI
 
 ; ASM:       .word 12345678
-define void @f1(ptr noundef %x) #1 !kcfi_type !2 {
+define void @f1(ptr noundef %x) #1 !cfi_type !2 {
 ; ASM-LABEL: f1:
 ; ASM:       // %bb.0:
 ; ASM:         ldur w16, [x0, #-4]
@@ -30,7 +30,7 @@ define void @f1(ptr noundef %x) #1 !kcfi_type !2 {
 }
 
 ; ASM:       .word 12345678
-define void @f2(ptr noundef %x)  #1 !kcfi_type !2 {
+define void @f2(ptr noundef %x)  #1 !cfi_type !2 {
 ; ASM-LABEL: f2:
 ; ASM:       // %bb.0:
 ; ASM:         ldur w16, [x0, #-4]
diff --git a/llvm/test/CodeGen/AArch64/kcfi-patchable-function-prefix.ll b/llvm/test/CodeGen/AArch64/kcfi-patchable-function-prefix.ll
index e5cf0d6200475c..6f10436832882b 100644
--- a/llvm/test/CodeGen/AArch64/kcfi-patchable-function-prefix.ll
+++ b/llvm/test/CodeGen/AArch64/kcfi-patchable-function-prefix.ll
@@ -4,7 +4,7 @@
 ; CHECK-NOT:        nop
 ; CHECK:          .word   12345678
 ; CHECK-LABEL:    f1:
-define void @f1(ptr noundef %x) !kcfi_type !1 {
+define void @f1(ptr noundef %x) !cfi_type !1 {
 ; CHECK:            ldur    w16, [x0, #-4]
   call void %x() [ "kcfi"(i32 12345678) ]
   ret void
@@ -24,7 +24,7 @@ define void @f2(ptr noundef %x) {
 ; CHECK:          .word   12345678
 ; CHECK-COUNT-11:   nop
 ; CHECK-LABEL:    f3:
-define void @f3(ptr noundef %x) #0 !kcfi_type !1 {
+define void @f3(ptr noundef %x) #0 !cfi_type !1 {
 ; CHECK:            ldur    w16, [x0, #-48]
   call void %x() [ "kcfi"(i32 12345678) ]
   ret void
diff --git a/llvm/test/CodeGen/AArch64/kcfi.ll b/llvm/test/CodeGen/AArch64/kcfi.ll
index 7c824c19ee69ad..62ac11c884c286 100644
--- a/llvm/test/CodeGen/AArch64/kcfi.ll
+++ b/llvm/test/CodeGen/AArch64/kcfi.ll
@@ -11,7 +11,7 @@
 ; RUN: llc -mtriple=aarch64-- -verify-machineinstrs -mattr=harden-sls-blr -stop-after=kcfi < %s | FileCheck %s --check-prefixes=MIR,KCFI-SLS
 
 ; ASM:       .word 12345678
-define void @f1(ptr noundef %x) !kcfi_type !1 {
+define void @f1(ptr noundef %x) !cfi_type !1 {
 ; ASM-LABEL: f1:
 ; ASM:       // %bb.0:
 ; ASM:         ldur w16, [x0, #-4]
diff --git a/llvm/test/CodeGen/ARM/kcfi.ll b/llvm/test/CodeGen/ARM/kcfi.ll
index 9e16468c9347b9..6897bf968917e7 100644
--- a/llvm/test/CodeGen/ARM/kcfi.ll
+++ b/llvm/test/CodeGen/ARM/kcfi.ll
@@ -19,7 +19,7 @@ define dso_local void @nosan() nounwind {
 ; CHECK-NEXT:  .code 16
 ; CHECK-NEXT:  .thumb_func
 ; CHECK-NEXT:  f1:
-define void @f1(ptr noundef %x) !kcfi_type !1 {
+define void @f1(ptr noundef %x) !cfi_type !1 {
   ret void
 }
 
diff --git a/llvm/test/CodeGen/RISCV/kcfi-isel-mir.ll b/llvm/test/CodeGen/RISCV/kcfi-isel-mir.ll
index 4c47b5f741fa67..0bc4085a7da206 100644
--- a/llvm/test/CodeGen/RISCV/kcfi-isel-mir.ll
+++ b/llvm/test/CodeGen/RISCV/kcfi-isel-mir.ll
@@ -1,6 +1,6 @@
 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
 ; RUN: llc -mtriple=riscv64 -stop-after=finalize-isel -verify-machineinstrs -o - %s | FileCheck %s
-define void @f1(ptr noundef %x) !kcfi_type !1 {
+define void @f1(ptr noundef %x) !cfi_type !1 {
   ; CHECK-LABEL: name: f1
   ; CHECK: bb.0 (%ir-block.0):
   ; CHECK-NEXT:   liveins: $x10
diff --git a/llvm/test/CodeGen/RISCV/kcfi-mir.ll b/llvm/test/CodeGen/RISCV/kcfi-mir.ll
index 9d8475e2171eaa..9a1a5d6df4b74f 100644
--...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/109080


More information about the cfe-commits mailing list