================ @@ -0,0 +1,33 @@ +;; Test if the callee_type metadata attached to indirect call sites adhere to the expected format. + +; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s +define i32 @_Z13call_indirectPFicEc(ptr %func, i8 signext %x) !type !0 { +entry: + %func.addr = alloca ptr, align 8 + %x.addr = alloca i8, align 1 + store ptr %func, ptr %func.addr, align 8 + store i8 %x, ptr %x.addr, align 1 + %fptr = load ptr, ptr %func.addr, align 8 + %x_val = load i8, ptr %x.addr, align 1 + ; CHECK: The callee_type metadata must be a list of type metadata nodes + %call = call i32 %fptr(i8 signext %x_val), !callee_type !0 + ; CHECK: Well-formed generalized type metadata must contain exactly two operands + %call1 = call i32 %fptr(i8 signext %x_val), !callee_type !2 + ; CHECK: The first operand of type metadata for functions must be zero + %call2 = call i32 %fptr(i8 signext %x_val), !callee_type !4 + ; CHECK: The first operand of type metadata for functions must be zero + %call3 = call i32 %fptr(i8 signext %x_val), !callee_type !6 + ; CHECK: Only generalized type metadata can be part of the callee_type metadata list + %call4 = call i32 %fptr(i8 signext %x_val), !callee_type !8 + ret i32 %call +} + +!0 = !{i64 0, !"_ZTSFiPvcE.generalized"} +!1 = !{!"_ZTSFicE"} +!2 = !{!2} +!3 = !{i64 1, !"_ZTSFicE"} +!4 = !{!3} +!5 = !{!"expected_int", !"_ZTSFicE"} +!6 = !{!5} +!7 = !{i64 0, !"_ZTSFicE"} +!8 = !{!7} ---------------- Prabhuk wrote:
Done. Thank you. https://github.com/llvm/llvm-project/pull/87573 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits