Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-27 Thread David Blaikie via cfe-users
from the llvm::Function you can get a DISubprogram (Function's getSubprogram), from there you could get the DISubprogram's type (getType) and then poke around at the elements of the type, I guess. On Tue, Jan 26, 2021 at 10:39 PM Bella V wrote: > Thank you for the clarification. How do we access

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-26 Thread Bella V via cfe-users
Thank you for the clarification. How do we access DICompositeType: line numbers from Function &F or Module &M. On Tue, Jan 26, 2021 at 9:43 PM David Blaikie wrote: > the location of composite types isn't stored in a DILocation - it's stored > in the 'file'/'line' attributes of the DICompositeTyp

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-26 Thread David Blaikie via cfe-users
the location of composite types isn't stored in a DILocation - it's stored in the 'file'/'line' attributes of the DICompositeType (similarly, the members have a 'file' and 'line' attribute). See for instance line 39 of the LLVM IR in https://godbolt.org/z/o3oce5 : !12 = distinct !DICompositeType(

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-26 Thread Bella V via cfe-users
Thanks for the answer. struct Foo {int x;}; Void bar() { struct Foo f; f.x = 1; } I'm trying to access the DILocation for DICompositeType (Foo), that is the Source Location for struct Foo and struct members. Any pointers. Regards. On Sun, Jan 17, 2021 at 11:20 AM David Blaikie wrote: > Not su

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-17 Thread David Blaikie via cfe-users
Not sure I understand the question - llvm.dbg.declare can be queried/examined/etc through the usual LLVM IR APIs, yes - it's an intrinsic call, with operands, etc. It's a DbgVariableIntrinsic ( https://llvm.org/doxygen/classllvm_1_1DbgVariableIntrinsic.html ) you can interrogate for information. O

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-15 Thread Bella V via cfe-users
Thank you. Also Is there a pragmatically way to access the metadata info for local variables within the llvm.dbg.declare. ( llvm::Value does not have local variables). On Tue, Jan 12, 2021 at 1:55 PM David Blaikie wrote: > You'd have to get IR from somewhere that has attached debug info - such a

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-12 Thread David Blaikie via cfe-users
You'd have to get IR from somewhere that has attached debug info - such as clang -g On Tue, Jan 12, 2021 at 1:22 PM Bella V wrote: > Do we have to initially attach some metadata to the Value? Because in > function pass, when I do F.getAllMetadata(MDs), i do not see any metadata > appending to MD

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-12 Thread Bella V via cfe-users
Do we have to initially attach some metadata to the Value? Because in function pass, when I do F.getAllMetadata(MDs), i do not see any metadata appending to MDS. F.hasMetadata() also returns false. What would be the way to get debugLoc in these scenario? Thanks and Regards. On Mon, Jan 11, 2021 a

Re: [cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-11 Thread David Blaikie via cfe-users
On Mon, Jan 11, 2021 at 4:33 PM Ayush Mittal via cfe-users < cfe-users@lists.llvm.org> wrote: > Hello Cfe Users, > > Could you please point to an effective way to get Source Location details > from an IR code. > From the documentation, I think this could be a way: > Function Pass-> LLVM Value-> MD

[cfe-users] Get Source Location details from IR code (Function Pass)

2021-01-11 Thread Ayush Mittal via cfe-users
Hello Cfe Users, Could you please point to an effective way to get Source Location details from an IR code. >From the documentation, I think this could be a way: Function Pass-> LLVM Value-> MDN->DILocation-> Source Location. Please include any example if the above approach is correct too. Thanks