[llvm-commits] [llvm] r90788 - in /llvm/trunk: include/llvm/Analysis/DebugInfo.h include/llvm/IntrinsicInst.h include/llvm/Intrinsics.td lib/Analysis/DebugInfo.cpp
Victor Hernandez
vhernandez at apple.com
Mon Jan 11 14:57:47 PST 2010
Fixed in r93203 and r93149.
Victor
On Jan 8, 2010, at 11:25 PM, Chris Lattner wrote:
> On Dec 7, 2009, at 11:36 AM, Victor Hernandez wrote:
>> Date: Mon Dec 7 13:36:34 2009
>> New Revision: 90788
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=90788&view=rev
>> Log:
>> Introduce the "@llvm.dbg.value" debug intrinsic.
>>
>> The semantics of llvm.dbg.value are that starting from where it is executed, an offset into the specified user source variable is specified to get a new value.
>>
>> An example:
>> call void @llvm.dbg.value(metadata !{ i32 7 }, i64 0, metadata !2)
>> Here the user source variable associated with metadata #2 gets the value "i32 7" at offset 0.
>
> Hi Victor,
>
> Sorry just getting to this old patch. First comment is that you need to document this intrinsic in the debug info doc, presumably right after llvm.declare:
> http://llvm.org/docs/SourceLevelDebugging.html#format_common_intrinsics
>
>
>> +++ llvm/trunk/include/llvm/Analysis/DebugInfo.h Mon Dec 7 13:36:34 2009
>> @@ -639,6 +640,13 @@
>> Instruction *InsertDeclare(llvm::Value *Storage, DIVariable D,
>> Instruction *InsertBefore);
>>
>> + /// InsertValue - Insert a new llvm.dbg.value intrinsic call.
>> + Instruction *InsertValue(llvm::Value *V, llvm::Value *Offset,
>> + DIVariable D, BasicBlock *InsertAtEnd);
>> +
>> + /// InsertValue - Insert a new llvm.dbg.value intrinsic call.
>> + Instruction *InsertValue(llvm::Value *V, llvm::Value *Offset,
>> + DIVariable D, Instruction *InsertBefore);
>
> Thank you for renaming these to InsertDbgValueIntrinsic as Devang suggested. Also, please change the 'Offset' argument to be a uint64_t instead of Value*. It is not allowed to be a variable.
>
>> +++ llvm/trunk/include/llvm/IntrinsicInst.h Mon Dec 7 13:36:34 2009
>> @@ -171,6 +172,25 @@
>> }
>> };
>>
>> + /// DbgValueInst - This represents the llvm.dbg.value instruction.
>> + ///
>> + struct DbgValueInst : public DbgInfoIntrinsic {
>> + Value *getValue() const {
>> + return cast<MDNode>(getOperand(1))->getElement(0);
>> + }
>> + Value *getOffset() const { return getOperand(2); }
>
> This should return the offset as a uint64_t instead of a Value*.
>
>> + MDNode *getVariable() const { return cast<MDNode>(getOperand(3)); }
>
> This should be two methods to get the constness right:
>> + const MDNode *getVariable() const { return cast<MDNode>(getOperand(3)); }
>> + MDNode *getVariable() { return cast<MDNode>(getOperand(3)); }
>
> Likewise for getValue().
>
> -Chris
More information about the llvm-commits
mailing list