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@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users