[llvm-branch-commits] [llvm] [llvm] Extract and propagate indirect call type id (PR #87575)

Matt Arsenault via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue May 13 11:34:00 PDT 2025


================
@@ -0,0 +1,19 @@
+;; Tests that call site callee type ids can be extracted and set from
+;; callee_type metadata for indirect tail calls.
+
+;; Verify the exact calleeTypeId value to ensure it is not garbage but the value
+;; computed as the type id from the callee_type metadata.
+; RUN: llc --call-graph-section -mtriple aarch64-linux-gnu < %s -stop-after=finalize-isel -o - | FileCheck %s
+
+define i32 @_Z13call_indirectPFicEc(ptr %func, i8 %x) local_unnamed_addr !type !0 {
+entry:
+  ; CHECK: callSites:
+  ; CHECK-NEXT: - { bb: {{.*}}, offset: {{.*}}, fwdArgRegs: [], calleeTypeIds:
+  ; CHECK-NEXT: [ 3498816979441845844 ] }
+  %call = tail call noundef i32 %func(i8 noundef signext %x), !callee_type !1
+  ret i32 %call
+}
+
----------------
arsenm wrote:

A "direct" call with a mismatched callsite type is treated as an indirect call, and is a frequently broken edge case you should test 

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


More information about the llvm-branch-commits mailing list