[cfe-users] Help Needed: How to get source line number from .ll file LLVM

David Blaikie via cfe-users cfe-users at lists.llvm.org
Tue Jul 12 08:37:09 PDT 2016


you would need to build with debug info (-g) or similar (there are a few
other options that enable the same source location info) to produce the
debuglocs that will tell you about that

On Mon, Jul 11, 2016 at 9:40 PM, Shail Dave via cfe-users <
cfe-users at lists.llvm.org> wrote:

> Hi,
>
> I am working with LLVM 3.4 and want to obtain the line number information
> of source file from IR. The IR is generated from simple c code with Clang. *I
> want to obtain the line number in source c file from the line in IR body.*
>
> I tried this -
>
>    1. For Instruction BI, unsigned Line = Line =
>    BI->getDebugLoc().getLine();
>    2. For Loop L, std::cout << L->getStartLoc().getLine();
>
> But, the result stored/printed is always 0. I don't know how to obtain
> line number in the source from LLVM IR.
>
> My Source C file is -
> ​#include <stdio.h>
>
> int main(){
>
>  int i;
>
>  int inbuf[100];
>  int outbuf[100];
>
>  for(i = 0; i < 100; ++i)
>         inbuf[i] ^= outbuf[i];
>
>  inbuf[1] += 402;
>  inbuf[6] += 107;
>  inbuf[97] += 231;
>
>  for(i = 0; i < 100; ++i)
>  {
>          inbuf[i] += outbuf[i];
>  }
>
>  inbuf[47] += 312;
>
>     //print-statements
>  for (i=0;i<100;i++) {
>         printf("inbuf[%d] = %d\n",i,inbuf[i]);              }return 0;
> ​}​
>
>
> *Command Used-* ~/llvm/build/Release+Asserts/bin/clang -O3
> -fno-unroll-loops -fno-vectorize -fno-slp-vectorize -S -emit-llvm sample.c
> -o sample.ll
>
> I have working pass which can detect and analyze the loops and
> instructions. I am using it inside function - runOnLoop(Loop *L,
> LPPassManager &LPM)
>
> I have also tried with -O0 and  -fstandalone-debug option in the compile
> line. But, it is still printing 0.
>
> The following is also not working out.
>
> if (MDNode *N = I->getMetadata("dbg")) {  // Here I is an LLVM instruction
>    DILocation Loc(N);                      // DILocation is in DebugInfo.h
>    unsigned Line = Loc.getLineNumber();
>  }
>
> It would be great if anybody can kindly help me for the same. Thanks!
>
> Best,
> Shail
>>
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20160712/d0622085/attachment.html>


More information about the cfe-users mailing list