[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