Questions about debug info in LLVM 2.8


I'm currently porting some code from LLVM 2.6 to 2.8 and need to be able
to extract the debug info produced by LLVM-GCC and stored in the
compiled .bc file. However I admit I'm slightly confused about how
exactly to do that, the documentation doesn't seem to be very clear
about this, it mainly describes how to *generate* debug info.
Specifically I'm wondering about the following points:

1) It seems that the various DIDescriptors contain the information I'd
need, but they can only be constructed from a MDNode How do I retrieve
the MDNode at the first place? Does MDNode::get() actually retrieve all
the debug metadata from Module, or does it merely initialise a fresh MDNode?

2) DebugLoc has a getAsMDNode() method, but apparently it's only
available for Instructions?

3) How can I retrieve a DIType instance? I can't find a way to obtain a
MDNode for a Type... ?

Many thanks if somebody can shed some light on this.

Best regards,

See DebugInfoFinder interface in Analysis/DebugInfo.h

Thanks Devang, however this doesn’t seem to let me access local variables, do you know how I can get at them?


Scan llvm.dbg.declare intrinsic for arguments and local variables.