<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><div><span style="font-family: 'Helvetica'; font-size: 16px;">Hi,<br><br></span></div><span style="font-family: 'Helvetica'; font-size: 16px;">I
 am trying to get arguments of call functions in instructions 
such as these: call @func(i32 %arg1, i32 %arg2). I want to get the 
declared variable names for arg1 and arg2. Most of these arguments are 
arrays, and I need to get the index of the array as well.<br>
<br></span></div><span style="font-family:'Helvetica';font-size:medium"></span><div><span style="font-family: 'Helvetica'; font-size: 16px;">Currently,
 I read arguments of the called function using getArgOperands(), and 
backtrace the Value* until I find an alloca instruction to get the 
variable name. For the array index, I backtrace until I find a 
getelementptr instruction.<br>
<br></span></div><div><span style="font-family: 'Helvetica'; font-size: 16px;">I am wondering if the 
information I need is captured in the metadata. I see explicit calls to 
llvm.dbg.value and llvm.dbg.declare when I compile with the -g option, but I can't figure out how to  
retrieve the metadata for the arguments of the call@func instruction.<br>
<br></span></div>Here is a sample LLVM IR excerpt:<br><div><span style="font-family: 'Helvetica'; font-size: 16px;">
%<b>a</b> = alloca [4 x i32], align 2<br>%<b>arrayid</b>x = getelementptr inbounds i32* %<b>a</b>, i64 <b>2</b>, !dbg !42<br>%<b>0</b> = load i32* %<b>arrayid</b>x, align 2, !dbg !42<br>call void @func(i32 %<b>0</b>), !dbg !42<br>
<br></span></div>Thank you!!<br><div><span style="font-family: 'Helvetica'; font-size: 16px;">
<br></span></div><span style="font-family: 'Helvetica'; font-size: 16px;">Regards,<br>shruti</span></div></body></html>