[llvm] r212050 - Debug info: split out complex DIVariable address expressions into a
David Blaikie
dblaikie at gmail.com
Mon Jun 30 10:55:37 PDT 2014
On Mon, Jun 30, 2014 at 10:52 AM, Adrian Prantl <aprantl at apple.com> wrote:
>
>> On Jun 30, 2014, at 10:36 AM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>> On Mon, Jun 30, 2014 at 10:17 AM, Adrian Prantl <aprantl at apple.com> wrote:
>>> Author: adrian
>>> Date: Mon Jun 30 12:17:35 2014
>>> New Revision: 212050
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=212050&view=rev
>>> Log:
>>> Debug info: split out complex DIVariable address expressions into a
>>> separate MDNode so they can be uniqued via folding set magic. To conserve
>>> space, DIVariable nodes are still variable-length, with the last two
>>> fields being optional.
>>
>> While your change doesn't create this problem (actually if anything it
>> makes it a little easier to fix) - it'd be nice to re-pivot this so
>> that the addressing stuff is part of the dbg.value/decla/etc, rathert
>> han the DIVariable - that way we don't have to create duplicate
>> DIVariables to describe different locations of the same variable. It'd
>> be nice to remove that DIVariable duplication one day, it's really
>> weird/awkward/inefficient.
>
> I absolutely agree! My current plan is to attack this right after D3373.
Right - sorry we've been slacking on that one. Please ping it
regularly (every week, if it's convenient for you) to annoy me an
Eric.
- David
>
> -- adrian
>
>>
>> - David
>>
>>>
>>> No functional change.
>>> http://reviews.llvm.org/D3526
>>>
>>> Modified:
>>> llvm/trunk/docs/SourceLevelDebugging.rst
>>> llvm/trunk/include/llvm/IR/DebugInfo.h
>>> llvm/trunk/lib/IR/DIBuilder.cpp
>>> llvm/trunk/lib/IR/DebugInfo.cpp
>>> llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll
>>> llvm/trunk/test/DebugInfo/X86/block-capture.ll
>>> llvm/trunk/test/DebugInfo/X86/dbg_value_direct.ll
>>> llvm/trunk/test/DebugInfo/X86/debug-info-block-captured-self.ll
>>> llvm/trunk/test/DebugInfo/X86/debug-info-blocks.ll
>>> llvm/trunk/test/DebugInfo/X86/debug-loc-asan.ll
>>> llvm/trunk/test/DebugInfo/X86/op_deref.ll
>>> llvm/trunk/test/Instrumentation/AddressSanitizer/debug_info.ll
>>>
>>> Modified: llvm/trunk/docs/SourceLevelDebugging.rst
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/SourceLevelDebugging.rst?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/docs/SourceLevelDebugging.rst (original)
>>> +++ llvm/trunk/docs/SourceLevelDebugging.rst Mon Jun 30 12:17:35 2014
>>> @@ -570,6 +570,7 @@ Local variables
>>> metadata, ;; Reference to the type descriptor
>>> i32, ;; flags
>>> metadata ;; (optional) Reference to inline location
>>> + metadata ;; (optional) Reference to a complex expression (see below)
>>> }
>>>
>>> These descriptors are used to define variables local to a sub program. The
>>>
>>> Modified: llvm/trunk/include/llvm/IR/DebugInfo.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugInfo.h?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/IR/DebugInfo.h (original)
>>> +++ llvm/trunk/include/llvm/IR/DebugInfo.h Mon Jun 30 12:17:35 2014
>>> @@ -690,12 +690,17 @@ public:
>>> /// HasComplexAddr - Return true if the variable has a complex address.
>>> bool hasComplexAddress() const { return getNumAddrElements() > 0; }
>>>
>>> - unsigned getNumAddrElements() const;
>>> -
>>> - uint64_t getAddrElement(unsigned Idx) const {
>>> - return getUInt64Field(Idx + 8);
>>> + /// \brief Return the size of this variable's complex address or
>>> + /// zero if there is none.
>>> + unsigned getNumAddrElements() const {
>>> + if (DbgNode->getNumOperands() < 9)
>>> + return 0;
>>> + return getDescriptorField(8)->getNumOperands();
>>> }
>>>
>>> + /// \brief return the Idx'th complex address element.
>>> + uint64_t getAddrElement(unsigned Idx) const;
>>> +
>>> /// isBlockByrefVariable - Return true if the variable was declared as
>>> /// a "__block" variable (Apple Blocks).
>>> bool isBlockByrefVariable(const DITypeIdentifierMap &Map) const {
>>>
>>> Modified: llvm/trunk/lib/IR/DIBuilder.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/IR/DIBuilder.cpp (original)
>>> +++ llvm/trunk/lib/IR/DIBuilder.cpp Mon Jun 30 12:17:35 2014
>>> @@ -1075,18 +1075,19 @@ DIVariable DIBuilder::createComplexVaria
>>> DITypeRef Ty,
>>> ArrayRef<Value *> Addr,
>>> unsigned ArgNo) {
>>> - SmallVector<Value *, 15> Elts;
>>> - Elts.push_back(GetTagConstant(VMContext, Tag));
>>> - Elts.push_back(getNonCompileUnitScope(Scope)),
>>> - Elts.push_back(MDString::get(VMContext, Name));
>>> - Elts.push_back(F);
>>> - Elts.push_back(ConstantInt::get(Type::getInt32Ty(VMContext),
>>> - (LineNo | (ArgNo << 24))));
>>> - Elts.push_back(Ty);
>>> - Elts.push_back(Constant::getNullValue(Type::getInt32Ty(VMContext)));
>>> - Elts.push_back(Constant::getNullValue(Type::getInt32Ty(VMContext)));
>>> - Elts.append(Addr.begin(), Addr.end());
>>> -
>>> + assert(Addr.size() > 0 && "complex address is empty");
>>> + Value *Elts[] = {
>>> + GetTagConstant(VMContext, Tag),
>>> + getNonCompileUnitScope(Scope),
>>> + MDString::get(VMContext, Name),
>>> + F,
>>> + ConstantInt::get(Type::getInt32Ty(VMContext),
>>> + (LineNo | (ArgNo << 24))),
>>> + Ty,
>>> + Constant::getNullValue(Type::getInt32Ty(VMContext)),
>>> + Constant::getNullValue(Type::getInt32Ty(VMContext)),
>>> + MDNode::get(VMContext, Addr)
>>> + };
>>> return DIVariable(MDNode::get(VMContext, Elts));
>>> }
>>>
>>>
>>> Modified: llvm/trunk/lib/IR/DebugInfo.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/IR/DebugInfo.cpp (original)
>>> +++ llvm/trunk/lib/IR/DebugInfo.cpp Mon Jun 30 12:17:35 2014
>>> @@ -138,8 +138,14 @@ void DIDescriptor::replaceFunctionField(
>>> }
>>> }
>>>
>>> -unsigned DIVariable::getNumAddrElements() const {
>>> - return DbgNode->getNumOperands() - 8;
>>> +uint64_t DIVariable::getAddrElement(unsigned Idx) const {
>>> + DIDescriptor ComplexExpr = getDescriptorField(8);
>>> + if (Idx < ComplexExpr->getNumOperands())
>>> + if (auto *CI = dyn_cast_or_null<ConstantInt>(ComplexExpr->getOperand(Idx)))
>>> + return CI->getZExtValue();
>>> +
>>> + assert(false && "non-existing complex address element requested");
>>> + return 0;
>>> }
>>>
>>> /// getInlinedAt - If this variable is inlined then return inline location.
>>> @@ -566,7 +572,13 @@ bool DIVariable::Verify() const {
>>> // Make sure that type @ field 5 is a DITypeRef.
>>> if (!fieldIsTypeRef(DbgNode, 5))
>>> return false;
>>> - return DbgNode->getNumOperands() >= 8;
>>> +
>>> + // Variable without a complex expression.
>>> + if (DbgNode->getNumOperands() == 8)
>>> + return true;
>>> +
>>> + // Make sure the complex expression is an MDNode.
>>> + return (DbgNode->getNumOperands() == 9 && fieldIsMDNode(DbgNode, 8));
>>> }
>>>
>>> /// Verify - Verify that a location descriptor is well formed.
>>>
>>> Modified: llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll (original)
>>> +++ llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll Mon Jun 30 12:17:35 2014
>>> @@ -231,10 +231,10 @@ define hidden void @foobar_func_block_in
>>> !133 = metadata !{i32 609, i32 175, metadata !23, null}
>>> !134 = metadata !{i32 786689, metadata !23, metadata !"data", metadata !24, i32 67109473, metadata !108, i32 0, null} ; [ DW_TAG_arg_variable ]
>>> !135 = metadata !{i32 609, i32 190, metadata !23, null}
>>> -!136 = metadata !{i32 786688, metadata !23, metadata !"mydata", metadata !24, i32 604, metadata !50, i32 0, null, i64 1, i64 20, i64 2, i64 1, i64 4, i64 2, i64 1, i64 24} ; [ DW_TAG_auto_variable ]
>>> +!136 = metadata !{i32 786688, metadata !23, metadata !"mydata", metadata !24, i32 604, metadata !50, i32 0, null, metadata !163} ; [ DW_TAG_auto_variable ]
>>> !137 = metadata !{i32 604, i32 49, metadata !23, null}
>>> -!138 = metadata !{i32 786688, metadata !23, metadata !"self", metadata !40, i32 604, metadata !90, i32 0, null, i64 1, i64 24} ; [ DW_TAG_auto_variable ]
>>> -!139 = metadata !{i32 786688, metadata !23, metadata !"semi", metadata !24, i32 607, metadata !125, i32 0, null, i64 1, i64 28} ; [ DW_TAG_auto_variable ]
>>> +!138 = metadata !{i32 786688, metadata !23, metadata !"self", metadata !40, i32 604, metadata !90, i32 0, null, metadata !164} ; [ DW_TAG_auto_variable ]
>>> +!139 = metadata !{i32 786688, metadata !23, metadata !"semi", metadata !24, i32 607, metadata !125, i32 0, null, metadata !165} ; [ DW_TAG_auto_variable ]
>>> !140 = metadata !{i32 607, i32 30, metadata !23, null}
>>> !141 = metadata !{i32 610, i32 17, metadata !142, null}
>>> !142 = metadata !{i32 786443, metadata !152, metadata !23, i32 609, i32 200, i32 94} ; [ DW_TAG_lexical_block ]
>>> @@ -258,3 +258,6 @@ define hidden void @foobar_func_block_in
>>> !160 = metadata !{metadata !"header.h", metadata !"/Volumes/Sandbox/llvm"}
>>> !161 = metadata !{metadata !"header2.h", metadata !"/Volumes/Sandbox/llvm"}
>>> !162 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>>> +!163 = metadata !{i64 1, i64 20, i64 2, i64 1, i64 4, i64 2, i64 1, i64 24}
>>> +!164 = metadata !{i64 1, i64 24}
>>> +!165 = metadata !{i64 1, i64 28}
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/block-capture.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/block-capture.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/block-capture.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/block-capture.ll Mon Jun 30 12:17:35 2014
>>> @@ -118,7 +118,7 @@ declare i32 @__objc_personality_v0(...)
>>> !50 = metadata !{i32 786445, metadata !63, metadata !6, metadata !"block", i32 7, i64 64, i64 64, i64 256, i32 0, metadata !9} ; [ DW_TAG_member ]
>>> !51 = metadata !{i32 7, i32 18, metadata !28, null}
>>> !52 = metadata !{i32 7, i32 19, metadata !28, null}
>>> -!53 = metadata !{i32 786688, metadata !28, metadata !"block", metadata !6, i32 5, metadata !9, i32 0, i32 0, i64 1, i64 32} ; [ DW_TAG_auto_variable ]
>>> +!53 = metadata !{i32 786688, metadata !28, metadata !"block", metadata !6, i32 5, metadata !9, i32 0, i32 0, metadata !65} ; [ DW_TAG_auto_variable ]
>>> !54 = metadata !{i32 5, i32 27, metadata !28, null}
>>> !55 = metadata !{i32 8, i32 22, metadata !56, null}
>>> !56 = metadata !{i32 786443, metadata !6, metadata !57, i32 7, i32 26, i32 2} ; [ DW_TAG_lexical_block ]
>>> @@ -130,3 +130,4 @@ declare i32 @__objc_personality_v0(...)
>>> !62 = metadata !{i32 9, i32 20, metadata !56, null}
>>> !63 = metadata !{metadata !"foo.m", metadata !"/Users/echristo"}
>>> !64 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>>> +!65 = metadata !{i64 1, i64 32}
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/dbg_value_direct.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dbg_value_direct.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/dbg_value_direct.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/dbg_value_direct.ll Mon Jun 30 12:17:35 2014
>>> @@ -170,8 +170,9 @@ attributes #2 = { "less-precise-fpmad"="
>>> !20 = metadata !{i32 786468}
>>> !21 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
>>> !22 = metadata !{i32 2, metadata !"Dwarf Version", i32 3}
>>> -!23 = metadata !{i32 786689, metadata !4, metadata !"", metadata !5, i32 16777222, metadata !21, i32 0, i32 0, i64 2} ; [ DW_TAG_arg_variable ] [line 6]
>>> +!23 = metadata !{i32 786689, metadata !4, metadata !"", metadata !5, i32 16777222, metadata !21, i32 0, i32 0, metadata !28} ; [ DW_TAG_arg_variable ] [line 6]
>>> !24 = metadata !{i32 786688, metadata !4, metadata !"a", metadata !5, i32 7, metadata !8, i32 8192, i32 0} ; [ DW_TAG_auto_variable ] [a] [line 7]
>>> !25 = metadata !{i32 7, i32 0, metadata !4, null}
>>> !26 = metadata !{i32 8, i32 0, metadata !4, null} ; [ DW_TAG_imported_declaration ]
>>> !27 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>>> +!28 = metadata !{i64 2}
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/debug-info-block-captured-self.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-info-block-captured-self.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/debug-info-block-captured-self.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/debug-info-block-captured-self.ll Mon Jun 30 12:17:35 2014
>>> @@ -101,10 +101,12 @@ define internal void @"__24-[Main initWi
>>> !41 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, null} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from ]
>>> !42 = metadata !{i32 786478, metadata !1, metadata !1, metadata !"__24-[Main initWithContext:]_block_invoke_2", metadata !"__24-[Main initWithContext:]_block_invoke_2", metadata !"", i32 35, metadata !39, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i8*, i8*)* @"__24-[Main initWithContext:]_block_invoke_2", null, null, metadata !15, i32 35} ; [ DW_TAG_subprogram ] [line 35] [local] [def] [__24-[Main initWithContext:]_block_invoke_2]
>>> !84 = metadata !{i32 33, i32 0, metadata !38, null}
>>> -!86 = metadata !{i32 786688, metadata !38, metadata !"self", metadata !1, i32 41, metadata !34, i32 0, i32 0, i64 1, i64 32} ; [ DW_TAG_auto_variable ] [self] [line 41]
>>> +!86 = metadata !{i32 786688, metadata !38, metadata !"self", metadata !1, i32 41, metadata !34, i32 0, i32 0, metadata !110} ; [ DW_TAG_auto_variable ] [self] [line 41]
>>> !87 = metadata !{i32 41, i32 0, metadata !38, null}
>>> !103 = metadata !{i32 35, i32 0, metadata !42, null}
>>> -!105 = metadata !{i32 786688, metadata !42, metadata !"self", metadata !1, i32 40, metadata !34, i32 0, i32 0, i64 1, i64 32} ; [ DW_TAG_auto_variable ] [self] [line 40]
>>> +!105 = metadata !{i32 786688, metadata !42, metadata !"self", metadata !1, i32 40, metadata !34, i32 0, i32 0, metadata !109} ; [ DW_TAG_auto_variable ] [self] [line 40]
>>> !106 = metadata !{i32 40, i32 0, metadata !42, null}
>>> !107 = metadata !{metadata !"llvm/tools/clang/test/CodeGenObjC/debug-info-block-captured-self.m", metadata !""}
>>> !108 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>>> +!109 = metadata !{i64 1, i64 32}
>>> +!110 = metadata !{i64 1, i64 32}
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/debug-info-blocks.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-info-blocks.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/debug-info-blocks.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/debug-info-blocks.ll Mon Jun 30 12:17:35 2014
>>> @@ -359,7 +359,7 @@ attributes #3 = { nounwind }
>>> !86 = metadata !{i32 786451, metadata !1, null, metadata !"__block_descriptor_withcopydispose", i32 49, i64 0, i64 0, i32 0, i32 4, null, null, i32 0, null, null, null} ; [ DW_TAG_structure_type ] [__block_descriptor_withcopydispose] [line 49, size 0, align 0, offset 0] [decl] [from ]
>>> !87 = metadata !{i32 786445, metadata !5, metadata !6, metadata !"self", i32 49, i64 64, i64 64, i64 256, i32 0, metadata !61} ; [ DW_TAG_member ] [self] [line 49, size 64, align 64, offset 256] [from ]
>>> !88 = metadata !{i32 49, i32 0, metadata !27, null}
>>> -!89 = metadata !{i32 786688, metadata !27, metadata !"self", metadata !32, i32 52, metadata !23, i32 0, i32 0, i64 2, i64 1, i64 32} ; [ DW_TAG_auto_variable ] [self] [line 52]
>>> +!89 = metadata !{i32 786688, metadata !27, metadata !"self", metadata !32, i32 52, metadata !23, i32 0, i32 0, metadata !111} ; [ DW_TAG_auto_variable ] [self] [line 52]
>>> !90 = metadata !{i32 52, i32 0, metadata !27, null}
>>> !91 = metadata !{i32 786688, metadata !92, metadata !"d", metadata !6, i32 50, metadata !93, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [d] [line 50]
>>> !92 = metadata !{i32 786443, metadata !5, metadata !27, i32 49, i32 0, i32 2} ; [ DW_TAG_lexical_block ] [llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m]
>>> @@ -381,3 +381,4 @@ attributes #3 = { nounwind }
>>> !108 = metadata !{i32 61, i32 0, metadata !36, null}
>>> !109 = metadata !{i32 62, i32 0, metadata !36, null}
>>> !110 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>>> +!111 = metadata !{i64 2, i64 1, i64 32}
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/debug-loc-asan.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-loc-asan.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/debug-loc-asan.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/debug-loc-asan.ll Mon Jun 30 12:17:35 2014
>>> @@ -181,6 +181,6 @@ attributes #1 = { nounwind readnone }
>>> !9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
>>> !10 = metadata !{i32 2, metadata !"Debug Info Version", i32 1}
>>> !11 = metadata !{metadata !"clang version 3.5.0 (209308)"}
>>> -!12 = metadata !{i32 786689, metadata !4, metadata !"y", metadata !5, i32 16777217, metadata !8, i32 0, i32 0, i64 2} ; [ DW_TAG_arg_variable ] [y] [line 1]
>>> +!12 = metadata !{i32 786689, metadata !4, metadata !"y", metadata !5, i32 16777217, metadata !8, i32 0, i32 0, metadata !14} ; [ DW_TAG_arg_variable ] [y] [line 1]
>>> !13 = metadata !{i32 2, i32 0, metadata !4, null}
>>> -
>>> +!14 = metadata !{i64 2}
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/op_deref.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/op_deref.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/op_deref.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/op_deref.ll Mon Jun 30 12:17:35 2014
>>> @@ -89,7 +89,7 @@ declare void @llvm.stackrestore(i8*) nou
>>> !11 = metadata !{i32 1, i32 26, metadata !5, null}
>>> !12 = metadata !{i32 3, i32 13, metadata !13, null}
>>> !13 = metadata !{i32 786443, metadata !28, metadata !5, i32 2, i32 1, i32 0} ; [ DW_TAG_lexical_block ]
>>> -!14 = metadata !{i32 786688, metadata !13, metadata !"vla", metadata !6, i32 3, metadata !15, i32 8192, i32 0, i64 2} ; [ DW_TAG_auto_variable ]
>>> +!14 = metadata !{i32 786688, metadata !13, metadata !"vla", metadata !6, i32 3, metadata !15, i32 8192, i32 0, metadata !30} ; [ DW_TAG_auto_variable ]
>>> !15 = metadata !{i32 786433, null, null, metadata !"", i32 0, i64 0, i64 32, i32 0, i32 0, metadata !9, metadata !16, i32 0, null, null, null} ; [ DW_TAG_array_type ] [line 0, size 0, align 32, offset 0] [from int]
>>> !16 = metadata !{metadata !17}
>>> !17 = metadata !{i32 786465, i64 0, i64 -1} ; [ DW_TAG_subrange_type ]
>>> @@ -105,3 +105,4 @@ declare void @llvm.stackrestore(i8*) nou
>>> !27 = metadata !{i32 8, i32 1, metadata !13, null}
>>> !28 = metadata !{metadata !"bar.c", metadata !"/Users/echristo/tmp"}
>>> !29 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>>> +!30 = metadata !{i64 2}
>>>
>>> Modified: llvm/trunk/test/Instrumentation/AddressSanitizer/debug_info.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/AddressSanitizer/debug_info.ll?rev=212050&r1=212049&r2=212050&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/Instrumentation/AddressSanitizer/debug_info.ll (original)
>>> +++ llvm/trunk/test/Instrumentation/AddressSanitizer/debug_info.ll Mon Jun 30 12:17:35 2014
>>> @@ -47,8 +47,9 @@ declare void @llvm.dbg.declare(metadata,
>>>
>>> ; Verify that debug descriptors for argument and local variable will be replaced
>>> ; with descriptors that end with OpDeref (encoded as 2).
>>> -; CHECK: ![[ARG_ID]] = metadata {{.*}} i64 2} ; [ DW_TAG_arg_variable ] [p] [line 1]
>>> -; CHECK: ![[VAR_ID]] = metadata {{.*}} i64 2} ; [ DW_TAG_auto_variable ] [r] [line 2]
>>> +; CHECK: ![[ARG_ID]] = {{.*}}metadata ![[OPDEREF:[0-9]+]]} ; [ DW_TAG_arg_variable ] [p] [line 1]
>>> +; CHECK: ![[OPDEREF]] = metadata !{i64 2}
>>> +; CHECK: ![[VAR_ID]] = {{.*}}metadata ![[OPDEREF]]} ; [ DW_TAG_auto_variable ] [r] [line 2]
>>> ; Verify that there are no more variable descriptors.
>>> ; CHECK-NOT: DW_TAG_arg_variable
>>> ; CHECK-NOT: DW_TAG_auto_variable
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list