[LLVMdev] reference to non-static member function must be called

Jin Huang 54jin.huang at gmail.com
Wed Jan 8 18:44:22 PST 2014


Sorry ,I forgot to give the definition. I define the print in the
doInitialization(Module &M); and it seems in the InstVisitor(), this can
not be identified .
What I really want to do is to get every load/store instructions's operand
address in runtime and print it out when the program is running. I wrote a
function to do the print work and make it into a dynamic library, so in the
functionPass , I define the print functiono like this :

  bool doInitialization(Module &M)
{
//Get the refference of the types
IntegerType* Int8Type  = IntegerType::getInt8Ty(M.getContext());
IntegerType* Int32Type = IntegerType::getInt32Ty(M.getContext());
IntegerType* Int64Type = IntegerType::getInt64Ty(M.getContext());
PointerType* VoidPtrType = PointerType::getUnqual(Int8Type);
Type* VoidType = Type::getVoidTy(M.getContext());
 //Get the function we needed in runtime
    Function *print = cast<Function>(M.getOrInsertFunction("my_print",
 VoidType,
 Int32Type,
 VoidPtrType
));
};
I thought if I define the function here ,then in the InstVisitor, I can use
it directly,without define it in every specific InstVisitor
function()(eg:visitStoreInst() visitLoadInst(),etc).But I was wrong.
I redefine the function in the visitStoreInst(), and it works.

Is there any easy way to use the function I wrote myself in the
instVisitor?

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140109/266f8d44/attachment.html>


More information about the llvm-dev mailing list