================
@@ -488,6 +490,35 @@ class LLVM_EXTERNAL_VISIBILITY MachineFunction {
 
     /// Callee type id.
     ConstantInt *TypeId = nullptr;
+
+    CallSiteInfo() {}
+
+    /// Extracts the numeric type id from the CallBase's type operand bundle,
+    /// and sets TypeId. This is used as type id for the indirect call in the
+    /// call graph section.
+    CallSiteInfo(const CallBase &CB) {
+      // Call graph section needs numeric type id only for indirect calls.
+      if (!CB.isIndirectCall())
+        return;
+
+      auto Opt = CB.getOperandBundle(LLVMContext::OB_type);
+      if (!Opt.has_value())
+        return;
+
+      // Get generalized type id string
+      auto OB = Opt.value();
----------------
Prabhuk wrote:

I take it that this suggestion is based on the Opt.has_value() check in the 
previous few lines. Using Opt.value() feels like a useful future proofing to me 
against potential UB that can happen due to programming errors when compared to 
using *Opt.  

https://github.com/llvm/llvm-project/pull/87575
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to