================
@@ -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
+}
+
----------------
Prabhuk wrote:

!callee_type metadata will not be emitted for direct calls. If an indirect call 
is promoted to a direct call and ends up with a callee_type metadata, we drop 
the metadata in inlining and instcombine passes. If we still end up with a 
direct call with a callee_type metadata somehow it will simply be ignored. 

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