[LLVMdev] The line number range of a function in source code level

John Criswell criswell at illinois.edu
Fri Apr 12 07:26:04 PDT 2013


On 4/12/13 4:31 AM, Mingliang LIU wrote:
> Hi all,
>
> I need to know the line number range of a function. The start of the 
> function line number can be found by the definition point, which is 
> stored at the subprogram metadata: DISubprogram::getLineNumber().
>
> However, there is no API (or the metadata in the first place) to know 
> the end of the function.
>
> I have to visit all the instructions of the function and maintain the 
> /max/ line number of the instructions. I use the inst_begin(func): 
> inst_end(func) as the iterator. But I don't think it's effective to 
> iterate all the instructions from the beginning. It's supposed that we 
> can iterate the instructions reversely and the first one who has 
> attached metadata should be treated as the end of the function. 
> Unfortunately, there is no reverse iterator of a function.

Keep in mind that some transforms may move instructions, so the last 
instruction in the function with meta-data does not necessarily come 
from the last instruction in the function.

For example, there is a transform that modifies a function so that it 
only has one return instruction.  Which meta-data does the merged return 
instruction get?

I think iterating over all the instructions is more robust.  If you need 
more accuracy than that, it might be a good idea to modify the front-end 
to generate meta-data that marks the line number of the end of the function.

-- John T.


>
> Any idea?
>
> Thank you very much!
>
> -- 
> Mingliang LIU (??? in Chinese)
>
> PACMAN Group,  Dept. of Computer Science & Technology
> Tsinghua University, Beijing 100084, China
> Email: liuml07 at mails.tsinghua.edu.cn 
> <mailto:liuml07 at mails.tsinghua.edu.cn>
> Homepage: http://pacman.cs.tsinghua.edu.cn/~liuml07/ 
> <http://pacman.cs.tsinghua.edu.cn/%7Eliuml07>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130412/4372f25f/attachment.html>


More information about the llvm-dev mailing list