Checking if one type is assignable to the other

Hi all,

I'm working on a clang-tidy check which I'm testing on the LLVM code
base. Here I run into the issue that my substitution sometimes causes
an assignment between incompatible types.

My particular situation involves two arguments to a function which I
know to be pointers (say of type a and b) and I want to check whether
I can assign *a to *b. Can anybody tell me how to perform this check
or maybe where to look in the clang source code for an example?

Any help is greatly appreciated!

Cheers,
Jonas