Enforcing that an intrinsic takes a struct

Hi there – new to LLVM development. I’m trying to define an intrinsic function that takes a pointer to an LLVM struct type (e.g., MyStruct*).

def int_mynewintrinsic : Intrinsic<, [llvm_ptr_ty]>

From what I can see in Intrinsics.td, it’s only possible to specify that it takes some pointer, whose responsibility is it to enforce / how can I enforce that the pointer points to a struct of the desired type?

Related question: Intrinsic has the signature below, but nearly all of the functions do not define name “” – why do some do it and some don’t? (e.g., llvm.va_copy does)

class Intrinsic<list ret_types,
list param_types = ,
list properties = ,
string name = “”> :


You might want to take a look at the Semantic Checker. (tools/clang/lib/Sema/SemaChecking.cpp).

I believe the intrinsic name defaults to intrinsic var name (ie int_sqrt defaults to llvm.sqrt… since Intrinsic is llvm::Intrinsic).