[LLVMdev] Replacement for findStopPoint() in LLVM 2.7

Török Edwin edwintorok at gmail.com
Tue Mar 16 08:26:01 PDT 2010


On 03/16/2010 05:21 PM, John Criswell wrote:
> Török Edwin wrote:
>> On 03/16/2010 05:00 PM, John Criswell wrote:
>>  
>>> Dear LLVMers,
>>>
>>> I'm updating some code to use the new LLVM 2.7 API.  One piece of
>>> this code uses the findStopPoint() function to find the source
>>> filename and line number information of an instruction.
>>>
>>> What is the best way to do this under LLVM 2.7 now that the stop
>>> point intrinsic has been removed?  It appears that the debug
>>> information is attached as metadata, but what is the easiest way to
>>> extract the filename and line number information out of this metadata?
>>>
>>>     
>>
>> Something like this (you can of course cache TheMetadata and MDDbgKind)
>>
>> llvm::MetadataContext *TheMetadata = M->getContext().getMetadata();
>> MDDbgKind = TheMetadata->getMDKind("dbg");
>> if (MDDbgKind) {
>>   if (MDNode *Dbg = TheMetadata->getMD(MDDbgKind, I)) {
>>         DILocation Loc(Dbg);
>>     ...
>>     Loc.getDirectory()
>>     Loc.getFilename()
>>     Loc.getLineNumber()
>>         Loc.getColumnNumber()
>>     ....
>>   }
>>   
> 
> A grep through my LLVM 2.7 source tree does not find MetadataContext
> anywhere.  Is this something that was added to LLVM mainline after the
> LLVM 2.7 branch was created?

It should be there, include/llvm/Metadata.h.

> 
> I'm using the release_27 branch of LLVM, so I'm limited to facilities
> within that branch.

The example I've given is from code way older than the 2.7 branch (Dec
2009 or so).

Best regards,
--Edwin



More information about the llvm-dev mailing list