[LLVMdev] Printing Function Arguments

Nick Lewycky nicholas at mxc.ca
Sun Sep 27 20:38:15 PDT 2009


ivtm wrote:
> 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 ?

The parser is in lib/AsmParser/.

Nick

> 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
>>>
>>>
>>
> 




More information about the llvm-dev mailing list