[LLVMdev] Printing Function Arguments

ivtm martinaide1 at yahoo.com
Sun Sep 27 19:37:44 PDT 2009


Another question, I need to get the "%0" below in the:

%0 = tail call i32 (...)* @__FFF (i32 8) nounwind; <i32> [#uses=1]

that is, the return register. 

I am wondering in general, where should I look in the llvm codebase for
parsing instructions ?

I am looking at existing passes and also the header files like Function.h,
etc to see what methods they have, but it takes a while to figure out the
basic methods...






ivtm wrote:
> 
> Hi Nick,
> 
> Thanks, that seemed to work.
> 
> 
> Nick Lewycky wrote:
>> 
>> ivtm wrote:
>>> I am processing the LLVM instructions and right now I am at the 'call'
>>> instruction.
>>> For now I just want to print the argument type.
>>> 
>>> For example in the following:
>>> 
>>> 	%0 = tail call i32 (...)* @__FFF (i32 8) nounwind; <i32> [#uses=1]
>>> 
>>> I need to get access to 'i32' and '8' separately.
>>> 
>>> I do:
>>> 
>>> CallInst *CI = dyn_cast<CallInst>(I);  
>>> Value *v = CI->getOperand(1)
>>> 
>>> I can get the type via v->getType() and that returns 'i32', which is
>>> good.
>>> 
>>> But I also need to get the value '8'.
>>> 
>>> I can get it via v->getValueID(), but in the documentation it says not
>>> to
>>> use that function.
>> 
>> Heh. No, getValueID() returns '8' as the "ConstantIntVal" enum, not the 
>> actual argument number.
>> 
>>> Any other ideas what is the proper way to access the value '8' ?
>> 
>> It's a ConstantInt, so cast it and retrieve the APInt then pull out the 
>> number. Here:
>> 
>>    unsigned val;
>>    if (ConstantInt *CI = dyn_cast<ConstantInt>(v)) {
>>      val = CI->getValue()->getSExtValue();
>>    }
>> 
>> Nick
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Printing-Function-Arguments-tp25638981p25639926.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list