<div>Hi,</div><div>   Following is my piece of code:</div><div>   </div><div>   Instruction * ins = /* something */;</div><div>   CallInst * callInst = NULL;</div><div>   if(callInst = dyn_cast<CallInst>(ins)) {</div><div>           // non-related code omitted</div><div>   }</div><div><br></div><div>   </div><div>   What the code try to do is interpreting LLVM IR and do some operation. </div><div>   dyn_cast returns the expected pointer to CallInst for function calling instruction like strcpy. </div><div>   However, it returns NULL when the instruction calls memset, memcpy or memmove.</div><div>   I know LLVM has its own intrinsic for memmove, memset and memcpy, in format like, llvm.memcpy.*.</div><div><br></div><div>   My question is: doesn`t dyn_cast works for calling instructions for memmove, memset? Or should I</div><div>   invoke some other API in LLVM to obtain a pointer to CallInst type?</div><div><br></div><div>Thanks,</div><div><span style="line-height: 1.5;">Yongchao</span></div><div></div>