[LLVMdev] collect end line number for scope

Pankaj Gode godepankaj at yahoo.com
Wed Oct 5 03:48:07 PDT 2011


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>


More information about the llvm-dev mailing list