[LLVMdev] collect end line number for scope

Pankaj Gode
Wed, 05 Oct 2011 10:48:07 -0000

Hi,

The link and the information shared was helpful.

I will make my problem definition more clear.
While I am "asm printing" target code, I also want to emit scope
related information.
Scope related information includes,
- for each scope, start line, end line, start column, end column
and
- scope heirarchy.
As scope is delimited by "{" and "}" (for an input C/C++
code), hence wanted to collect "endline" for scope.
When I went through the ".ll" emitted by llc, i could find the
"startline" in metadata.

For this I could think of 2 approaches
1. Create a pass in llvm, to collect this information from the llvm
instructions, by simply traversing them.
  Identifying line number for each instruction and checking on the lexical block
it points to. Also would maintain the parent/child lexical block relation using
metadata information.
  My "startline" is least line number associated with lexical block,
and "endline" number is max line number associated with lexical block.
2. While "asm printing", traverse through the machine instruction and
collect the information in similar way as 1.

I am not sure whether I should collect it from Clang AST nodes.

Regards,
Pankaj



________________________________
From: Devang Patel <dpatel at apple.com>
To: Pankaj Gode <godepankaj at yahoo.com>
Cc: "llvmdev at cs.uiuc.edu" <llvmdev at cs.uiuc.edu>
Sent: Tuesday, October 4, 2011 10:08 PM
Subject: Re: [LLVMdev] collect end line number for scope


Pankaj,


On Oct 3, 2011, at 4:36 AM, Pankaj Gode wrote:

Hi All,
>
>int global;
>int func( int t)
>{
>  //scope 1
>  {
>     ....
>  } <-----
>  return x;
>}
>
>For the above code, i want to collect endline (indicated by <---) for the
scope. Can we get this information from the Dwarf Information in llvm 2.9 ?
>

If there is no code generated for a source line with just "}", so you
are not going to get that line number in debug info (because there is not any
llvm instruction). You can access the line number for the last
statement/expression in the scope.
See http://llvm.org/docs/SourceLevelDebugging.html#ccxx_compile_units for a code
snippet on how to get line number from an llvm instruction.

What exactly are you trying to do? Depending on your needs, you may be able to
access clang AST nodes to get exact line and column number information for
"}" irrespective of debug info.

-
Devang
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20111005/396fc5b5/attachment.html>