llvm.org GIT mirror llvm / a8a13bc
[DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. In order to set breakpoints on labels and list source code around labels, we need collect debug information for labels, i.e., label name, the function label belong, line number in the file, and the address label located. In order to keep these information in LLVM IR and to allow backend to generate debug information correctly. We create a new kind of metadata for labels, DILabel. The format of DILabel is !DILabel(scope: !1, name: "foo", file: !2, line: 3) We hope to keep debug information as much as possible even the code is optimized. So, we create a new kind of intrinsic for label metadata to avoid the metadata is eliminated with basic block. The intrinsic will keep existing if we keep it from optimized out. The format of the intrinsic is llvm.dbg.label(metadata !1) It has only one argument, that is the DILabel metadata. The intrinsic will follow the label immediately. Backend could get the label metadata through the intrinsic's parameter. We also create DIBuilder API for labels to be used by Frontend. Frontend could use createLabel() to allocate DILabel objects, and use insertLabel() to insert llvm.dbg.label intrinsic in LLVM IR. Differential Revision: https://reviews.llvm.org/D45024 Patch by Hsiangkai Wang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331841 91177308-0d34-0410-b5e6-96231b3b80d8 Shiva Chen 1 year, 4 months ago
753 changed file(s) with 1699 addition(s) and 1294 deletion(s). Raw diff Collapse all Expand all
0 # binary files
11 test/Object/Inputs/*.a-* binary
2 test/tools/dsymutil/Inputs/* binary
2 test/tools/dsymutil/Inputs/*.o binary
3 test/tools/dsymutil/Inputs/*.a binary
4 test/tools/dsymutil/Inputs/*.i386 binary
5 test/tools/dsymutil/Inputs/*.x86_64 binary
6 test/tools/dsymutil/Inputs/*.armv7m binary
7 test/tools/dsymutil/Inputs/*.dylib binary
38 test/tools/llvm-ar/Inputs/*.lib binary
49 test/tools/llvm-objdump/Inputs/*.a binary
510 test/tools/llvm-rc/Inputs/* binary
154154 case Intrinsic::sideeffect:
155155 case Intrinsic::dbg_declare:
156156 case Intrinsic::dbg_value:
157 case Intrinsic::dbg_label:
157158 case Intrinsic::invariant_start:
158159 case Intrinsic::invariant_end:
159160 case Intrinsic::lifetime_start:
309309 METADATA_GLOBAL_VAR_EXPR = 37, // [distinct, var, expr]
310310 METADATA_INDEX_OFFSET = 38, // [offset]
311311 METADATA_INDEX = 39, // [bitpos]
312 METADATA_LABEL = 40, // [distinct, scope, name, file, line]
312313 };
313314
314315 // The constants block (CONSTANTS_BLOCK_ID) describes emission for each
4545 DICompileUnit *CUNode; ///< The one compile unit created by this DIBuiler.
4646 Function *DeclareFn; ///< llvm.dbg.declare
4747 Function *ValueFn; ///< llvm.dbg.value
48 Function *LabelFn; ///< llvm.dbg.label
4849
4950 SmallVector AllEnumTypes;
5051 /// Track the RetainTypes, since they can be updated later on.
6869 /// copy.
6970 DenseMap> PreservedVariables;
7071
72 /// Each subprogram's preserved labels.
73 DenseMap> PreservedLabels;
74
7175 /// Create a temporary.
7276 ///
7377 /// Create an \a temporary node and track it in \a UnresolvedNodes.
7781 Instruction *insertDeclare(llvm::Value *Storage, DILocalVariable *VarInfo,
7882 DIExpression *Expr, const DILocation *DL,
7983 BasicBlock *InsertBB, Instruction *InsertBefore);
84
85 /// Internal helper for insertLabel.
86 Instruction *insertLabel(DILabel *LabelInfo, const DILocation *DL,
87 BasicBlock *InsertBB, Instruction *InsertBefore);
8088
8189 /// Internal helper for insertDbgValueIntrinsic.
8290 Instruction *
590598 DINode::DIFlags Flags = DINode::FlagZero,
591599 uint32_t AlignInBits = 0);
592600
601 /// Create a new descriptor for an label.
602 ///
603 /// \c Scope must be a \a DILocalScope, and thus its scope chain eventually
604 /// leads to a \a DISubprogram.
605 DILabel *
606 createLabel(DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNo,
607 bool AlwaysPreserve = false);
608
593609 /// Create a new descriptor for a parameter variable.
594610 ///
595611 /// \c Scope must be a \a DILocalScope, and thus its scope chain eventually
781797 DIExpression *Expr, const DILocation *DL,
782798 Instruction *InsertBefore);
783799
800 /// Insert a new llvm.dbg.label intrinsic call.
801 /// \param LabelInfo Label's debug info descriptor.
802 /// \param DL Debug info location.
803 /// \param InsertBefore Location for the new intrinsic.
804 Instruction *insertLabel(DILabel *LabelInfo, const DILocation *DL,
805 Instruction *InsertBefore);
806
807 /// Insert a new llvm.dbg.label intrinsic call.
808 /// \param LabelInfo Label's debug info descriptor.
809 /// \param DL Debug info location.
810 /// \param InsertAtEnd Location for the new intrinsic.
811 Instruction *insertLabel(DILabel *LabelInfo, const DILocation *DL,
812 BasicBlock *InsertAtEnd);
813
784814 /// Insert a new llvm.dbg.value intrinsic call.
785815 /// \param Val llvm::Value of the variable
786816 /// \param VarInfo Variable's debug info descriptor.
231231 case DITemplateValueParameterKind:
232232 case DIGlobalVariableKind:
233233 case DILocalVariableKind:
234 case DILabelKind:
234235 case DIObjCPropertyKind:
235236 case DIImportedEntityKind:
236237 case DIModuleKind:
16081609 unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
16091610 bool IsOptimized, DICompileUnit *Unit,
16101611 DITemplateParameterArray TemplateParams, DISubprogram *Declaration,
1611 DILocalVariableArray Variables, DITypeArray ThrownTypes,
1612 DINodeArray RetainedNodes, DITypeArray ThrownTypes,
16121613 StorageType Storage, bool ShouldCreate = true) {
16131614 return getImpl(Context, Scope, getCanonicalMDString(Context, Name),
16141615 getCanonicalMDString(Context, LinkageName), File, Line, Type,
16151616 IsLocalToUnit, IsDefinition, ScopeLine, ContainingType,
16161617 Virtuality, VirtualIndex, ThisAdjustment, Flags, IsOptimized,
1617 Unit, TemplateParams.get(), Declaration, Variables.get(),
1618 Unit, TemplateParams.get(), Declaration, RetainedNodes.get(),
16181619 ThrownTypes.get(), Storage, ShouldCreate);
16191620 }
16201621 static DISubprogram *
16231624 bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
16241625 Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
16251626 int ThisAdjustment, DIFlags Flags, bool IsOptimized, Metadata *Unit,
1626 Metadata *TemplateParams, Metadata *Declaration, Metadata *Variables,
1627 Metadata *TemplateParams, Metadata *Declaration, Metadata *RetainedNodes,
16271628 Metadata *ThrownTypes, StorageType Storage, bool ShouldCreate = true);
16281629
16291630 TempDISubprogram cloneImpl() const {
16321633 isDefinition(), getScopeLine(), getContainingType(),
16331634 getVirtuality(), getVirtualIndex(), getThisAdjustment(),
16341635 getFlags(), isOptimized(), getUnit(),
1635 getTemplateParams(), getDeclaration(), getVariables(),
1636 getTemplateParams(), getDeclaration(), getRetainedNodes(),
16361637 getThrownTypes());
16371638 }
16381639
16461647 bool IsOptimized, DICompileUnit *Unit,
16471648 DITemplateParameterArray TemplateParams = nullptr,
16481649 DISubprogram *Declaration = nullptr,
1649 DILocalVariableArray Variables = nullptr,
1650 DINodeArray RetainedNodes = nullptr,
16501651 DITypeArray ThrownTypes = nullptr),
16511652 (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
16521653 IsDefinition, ScopeLine, ContainingType, Virtuality,
16531654 VirtualIndex, ThisAdjustment, Flags, IsOptimized, Unit,
1654 TemplateParams, Declaration, Variables, ThrownTypes))
1655 TemplateParams, Declaration, RetainedNodes, ThrownTypes))
16551656 DEFINE_MDNODE_GET(
16561657 DISubprogram,
16571658 (Metadata * Scope, MDString *Name, MDString *LinkageName, Metadata *File,
16591660 unsigned ScopeLine, Metadata *ContainingType, unsigned Virtuality,
16601661 unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
16611662 bool IsOptimized, Metadata *Unit, Metadata *TemplateParams = nullptr,
1662 Metadata *Declaration = nullptr, Metadata *Variables = nullptr,
1663 Metadata *Declaration = nullptr, Metadata *RetainedNodes = nullptr,
16631664 Metadata *ThrownTypes = nullptr),
16641665 (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition,
16651666 ScopeLine, ContainingType, Virtuality, VirtualIndex, ThisAdjustment,
1666 Flags, IsOptimized, Unit, TemplateParams, Declaration, Variables,
1667 Flags, IsOptimized, Unit, TemplateParams, Declaration, RetainedNodes,
16671668 ThrownTypes))
16681669
16691670 TempDISubprogram clone() const { return cloneImpl(); }
17371738 DISubprogram *getDeclaration() const {
17381739 return cast_or_null(getRawDeclaration());
17391740 }
1740 DILocalVariableArray getVariables() const {
1741 return cast_or_null(getRawVariables());
1741 DINodeArray getRetainedNodes() const {
1742 return cast_or_null(getRawRetainedNodes());
17421743 }
17431744 DITypeArray getThrownTypes() const {
17441745 return cast_or_null(getRawThrownTypes());
17501751 Metadata *getRawType() const { return getOperand(4); }
17511752 Metadata *getRawUnit() const { return getOperand(5); }
17521753 Metadata *getRawDeclaration() const { return getOperand(6); }
1753 Metadata *getRawVariables() const { return getOperand(7); }
1754 Metadata *getRawRetainedNodes() const { return getOperand(7); }
17541755 Metadata *getRawContainingType() const {
17551756 return getNumOperands() > 8 ? getOperandAs(8) : nullptr;
17561757 }
26062607 }
26072608 };
26082609
2610 /// Label.
2611 ///
2612 class DILabel : public DINode {
2613 friend class LLVMContextImpl;
2614 friend class MDNode;
2615
2616 unsigned Line;
2617
2618 DILabel(LLVMContext &C, StorageType Storage, unsigned Line,
2619 ArrayRef Ops)
2620 : DINode(C, DILabelKind, Storage, dwarf::DW_TAG_label, Ops), Line(Line) {}
2621 ~DILabel() = default;
2622
2623 static DILabel *getImpl(LLVMContext &Context, DIScope *Scope,
2624 StringRef Name, DIFile *File, unsigned Line,
2625 StorageType Storage,
2626 bool ShouldCreate = true) {
2627 return getImpl(Context, Scope, getCanonicalMDString(Context, Name), File,
2628 Line, Storage, ShouldCreate);
2629 }
2630 static DILabel *getImpl(LLVMContext &Context, Metadata *Scope,
2631 MDString *Name, Metadata *File, unsigned Line,
2632 StorageType Storage,
2633 bool ShouldCreate = true);
2634
2635 TempDILabel cloneImpl() const {
2636 return getTemporary(getContext(), getScope(), getName(), getFile(),
2637 getLine());
2638 }
2639
2640 public:
2641 DEFINE_MDNODE_GET(DILabel,
2642 (DILocalScope * Scope, StringRef Name, DIFile *File,
2643 unsigned Line),
2644 (Scope, Name, File, Line))
2645 DEFINE_MDNODE_GET(DILabel,
2646 (Metadata * Scope, MDString *Name, Metadata *File,
2647 unsigned Line),
2648 (Scope, Name, File, Line))
2649
2650 TempDILabel clone() const { return cloneImpl(); }
2651
2652 /// Get the local scope for this label.
2653 ///
2654 /// Labels must be defined in a local scope.
2655 DILocalScope *getScope() const {
2656 return cast_or_null(getRawScope());
2657 }
2658 unsigned getLine() const { return Line; }
2659 StringRef getName() const { return getStringOperand(1); }
2660 DIFile *getFile() const { return cast_or_null(getRawFile()); }
2661
2662 Metadata *getRawScope() const { return getOperand(0); }
2663 MDString *getRawName() const { return getOperandAs(1); }
2664 Metadata *getRawFile() const { return getOperand(2); }
2665
2666 /// Check that a location is valid for this label.
2667 ///
2668 /// Check that \c DL exists, is in the same subprogram, and has the same
2669 /// inlined-at location as \c this. (Otherwise, it's not a valid attachment
2670 /// to a \a DbgInfoIntrinsic.)
2671 bool isValidLocationForIntrinsic(const DILocation *DL) const {
2672 return DL && getScope()->getSubprogram() == DL->getScope()->getSubprogram();
2673 }
2674
2675 static bool classof(const Metadata *MD) {
2676 return MD->getMetadataID() == DILabelKind;
2677 }
2678 };
2679
26092680 class DIObjCProperty : public DINode {
26102681 friend class LLVMContextImpl;
26112682 friend class MDNode;
212212 // Handle the special instrinsic instruction classes.
213213 RetTy visitDbgDeclareInst(DbgDeclareInst &I) { DELEGATE(DbgInfoIntrinsic);}
214214 RetTy visitDbgValueInst(DbgValueInst &I) { DELEGATE(DbgInfoIntrinsic);}
215 RetTy visitDbgLabelInst(DbgLabelInst &I) { DELEGATE(DbgInfoIntrinsic);}
215216 RetTy visitDbgInfoIntrinsic(DbgInfoIntrinsic &I) { DELEGATE(IntrinsicInst); }
216217 RetTy visitMemSetInst(MemSetInst &I) { DELEGATE(MemIntrinsic); }
217218 RetTy visitMemCpyInst(MemCpyInst &I) { DELEGATE(MemTransferInst); }
271272 default: DELEGATE(IntrinsicInst);
272273 case Intrinsic::dbg_declare: DELEGATE(DbgDeclareInst);
273274 case Intrinsic::dbg_value: DELEGATE(DbgValueInst);
275 case Intrinsic::dbg_label: DELEGATE(DbgLabelInst);
274276 case Intrinsic::memcpy: DELEGATE(MemCpyInst);
275277 case Intrinsic::memmove: DELEGATE(MemMoveInst);
276278 case Intrinsic::memset: DELEGATE(MemSetInst);
9999 case Intrinsic::dbg_declare:
100100 case Intrinsic::dbg_value:
101101 case Intrinsic::dbg_addr:
102 case Intrinsic::dbg_label:
102103 return true;
103104 default: return false;
104105 }
151152 /// @{
152153 static bool classof(const IntrinsicInst *I) {
153154 return I->getIntrinsicID() == Intrinsic::dbg_value;
155 }
156 static bool classof(const Value *V) {
157 return isa(V) && classof(cast(V));
158 }
159 /// @}
160 };
161
162 /// This represents the llvm.dbg.label instruction.
163 class DbgLabelInst : public DbgInfoIntrinsic {
164 public:
165 DILabel *getLabel() const {
166 return cast(getRawVariable());
167 }
168
169 Metadata *getRawVariable() const {
170 return cast(getArgOperand(0))->getMetadata();
171 }
172
173 Metadata *getRawExpression() const {
174 return nullptr;
175 }
176
177 /// Methods for support type inquiry through isa, cast, and dyn_cast:
178 /// @{
179 static bool classof(const IntrinsicInst *I) {
180 return I->getIntrinsicID() == Intrinsic::dbg_label;
154181 }
155182 static bool classof(const Value *V) {
156183 return isa(V) && classof(cast(V));
598598 [llvm_metadata_ty,
599599 llvm_metadata_ty,
600600 llvm_metadata_ty]>;
601 def int_dbg_label : Intrinsic<[],
602 [llvm_metadata_ty]>;
601603 }
602604
603605 //===------------------ Exception Handling Intrinsics----------------------===//
107107 HANDLE_SPECIALIZED_MDNODE_BRANCH(DIVariable)
108108 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariable)
109109 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocalVariable)
110 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILabel)
110111 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIObjCProperty)
111112 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIImportedEntity)
112113 HANDLE_SPECIALIZED_MDNODE_BRANCH(DIMacroNode)
208208 // Don't let dbg info affect our results.
209209 case Intrinsic::dbg_declare:
210210 case Intrinsic::dbg_value:
211 case Intrinsic::dbg_label:
211212 // Short cut: Some intrinsics obviously don't use ObjC pointers.
212213 return true;
213214 default:
500500 case Intrinsic::sideeffect:
501501 case Intrinsic::dbg_declare:
502502 case Intrinsic::dbg_value:
503 case Intrinsic::dbg_label:
503504 case Intrinsic::invariant_start:
504505 case Intrinsic::invariant_end:
505506 case Intrinsic::lifetime_start:
43464346 /// virtuality: DW_VIRTUALTIY_pure_virtual,
43474347 /// virtualIndex: 10, thisAdjustment: 4, flags: 11,
43484348 /// isOptimized: false, templateParams: !4, declaration: !5,
4349 /// variables: !6, thrownTypes: !7)
4349 /// retainedNodes: !6, thrownTypes: !7)
43504350 bool LLParser::ParseDISubprogram(MDNode *&Result, bool IsDistinct) {
43514351 auto Loc = Lex.getLoc();
43524352 #define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
43684368 OPTIONAL(unit, MDField, ); \
43694369 OPTIONAL(templateParams, MDField, ); \
43704370 OPTIONAL(declaration, MDField, ); \
4371 OPTIONAL(variables, MDField, ); \
4371 OPTIONAL(retainedNodes, MDField, ); \
43724372 OPTIONAL(thrownTypes, MDField, );
43734373 PARSE_MD_FIELDS();
43744374 #undef VISIT_MD_FIELDS
43844384 type.Val, isLocal.Val, isDefinition.Val, scopeLine.Val,
43854385 containingType.Val, virtuality.Val, virtualIndex.Val, thisAdjustment.Val,
43864386 flags.Val, isOptimized.Val, unit.Val, templateParams.Val,
4387 declaration.Val, variables.Val, thrownTypes.Val));
4387 declaration.Val, retainedNodes.Val, thrownTypes.Val));
43884388 return false;
43894389 }
43904390
45644564 Result = GET_OR_DISTINCT(DILocalVariable,
45654565 (Context, scope.Val, name.Val, file.Val, line.Val,
45664566 type.Val, arg.Val, flags.Val, align.Val));
4567 return false;
4568 }
4569
4570 /// ParseDILabel:
4571 /// ::= !DILabel(scope: !0, name: "foo", file: !1, line: 7)
4572 bool LLParser::ParseDILabel(MDNode *&Result, bool IsDistinct) {
4573 #define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
4574 REQUIRED(scope, MDField, (/* AllowNull */ false)); \
4575 REQUIRED(name, MDStringField, ); \
4576 REQUIRED(file, MDField, ); \
4577 REQUIRED(line, LineField, );
4578 PARSE_MD_FIELDS();
4579 #undef VISIT_MD_FIELDS
4580
4581 Result = GET_OR_DISTINCT(DILabel,
4582 (Context, scope.Val, name.Val, file.Val, line.Val));
45674583 return false;
45684584 }
45694585
821821 case bitc::METADATA_TEMPLATE_VALUE:
822822 case bitc::METADATA_GLOBAL_VAR:
823823 case bitc::METADATA_LOCAL_VAR:
824 case bitc::METADATA_LABEL:
824825 case bitc::METADATA_EXPRESSION:
825826 case bitc::METADATA_OBJC_PROPERTY:
826827 case bitc::METADATA_IMPORTED_ENTITY:
14371438 HasUnit ? CUorFn : nullptr, // unit
14381439 getMDOrNull(Record[15 + Offset]), // templateParams
14391440 getMDOrNull(Record[16 + Offset]), // declaration
1440 getMDOrNull(Record[17 + Offset]), // variables
1441 getMDOrNull(Record[17 + Offset]), // retainedNodes
14411442 HasThrownTypes ? getMDOrNull(Record[20]) : nullptr // thrownTypes
14421443 ));
14431444 MetadataList.assignValue(SP, NextMetadataNo);
16461647 NextMetadataNo++;
16471648 break;
16481649 }
1650 case bitc::METADATA_LABEL: {
1651 if (Record.size() != 5)
1652 return error("Invalid record");
1653
1654 IsDistinct = Record[0] & 1;
1655 MetadataList.assignValue(
1656 GET_OR_DISTINCT(DILabel,
1657 (Context, getMDOrNull(Record[1]),
1658 getMDString(Record[2]),
1659 getMDOrNull(Record[3]), Record[4])),
1660 NextMetadataNo);
1661 NextMetadataNo++;
1662 break;
1663 }
16491664 case bitc::METADATA_EXPRESSION: {
16501665 if (Record.size() < 1)
16511666 return error("Invalid record");
334334 unsigned Abbrev);
335335 void writeDILocalVariable(const DILocalVariable *N,
336336 SmallVectorImpl &Record, unsigned Abbrev);
337 void writeDILabel(const DILabel *N,
338 SmallVectorImpl &Record, unsigned Abbrev);
337339 void writeDIExpression(const DIExpression *N,
338340 SmallVectorImpl &Record, unsigned Abbrev);
339341 void writeDIGlobalVariableExpression(const DIGlobalVariableExpression *N,
16271629 Record.push_back(VE.getMetadataOrNullID(N->getRawUnit()));
16281630 Record.push_back(VE.getMetadataOrNullID(N->getTemplateParams().get()));
16291631 Record.push_back(VE.getMetadataOrNullID(N->getDeclaration()));
1630 Record.push_back(VE.getMetadataOrNullID(N->getVariables().get()));
1632 Record.push_back(VE.getMetadataOrNullID(N->getRetainedNodes().get()));
16311633 Record.push_back(N->getThisAdjustment());
16321634 Record.push_back(VE.getMetadataOrNullID(N->getThrownTypes().get()));
16331635
17811783 Record.push_back(N->getAlignInBits());
17821784
17831785 Stream.EmitRecord(bitc::METADATA_LOCAL_VAR, Record, Abbrev);
1786 Record.clear();
1787 }
1788
1789 void ModuleBitcodeWriter::writeDILabel(
1790 const DILabel *N, SmallVectorImpl &Record,
1791 unsigned Abbrev) {
1792 Record.push_back((uint64_t)N->isDistinct());
1793 Record.push_back(VE.getMetadataOrNullID(N->getScope()));
1794 Record.push_back(VE.getMetadataOrNullID(N->getRawName()));
1795 Record.push_back(VE.getMetadataOrNullID(N->getFile()));
1796 Record.push_back(N->getLine());
1797
1798 Stream.EmitRecord(bitc::METADATA_LABEL, Record, Abbrev);
17841799 Record.clear();
17851800 }
17861801
12011201 }
12021202
12031203 // Collect info for variables that were optimized out.
1204 for (const DILocalVariable *DV : SP->getVariables()) {
1205 if (Processed.insert(InlinedVariable(DV, nullptr)).second)
1206 if (LexicalScope *Scope = LScopes.findLexicalScope(DV->getScope()))
1207 createConcreteVariable(TheCU, *Scope, InlinedVariable(DV, nullptr));
1204 for (const DINode *DN : SP->getRetainedNodes()) {
1205 if (auto *DV = dyn_cast(DN)) {
1206 if (Processed.insert(InlinedVariable(DV, nullptr)).second)
1207 if (LexicalScope *Scope = LScopes.findLexicalScope(DV->getScope()))
1208 createConcreteVariable(TheCU, *Scope, InlinedVariable(DV, nullptr));
1209 }
12081210 }
12091211 }
12101212
13851387 // Construct abstract scopes.
13861388 for (LexicalScope *AScope : LScopes.getAbstractScopesList()) {
13871389 auto *SP = cast(AScope->getScopeNode());
1388 // Collect info for variables that were optimized out.
1389 for (const DILocalVariable *DV : SP->getVariables()) {
1390 if (!ProcessedVars.insert(InlinedVariable(DV, nullptr)).second)
1391 continue;
1392 ensureAbstractVariableIsCreated(TheCU, InlinedVariable(DV, nullptr),
1393 DV->getScope());
1394 assert(LScopes.getAbstractScopesList().size() == NumAbstractScopes
1395 && "ensureAbstractVariableIsCreated inserted abstract scopes");
1390 for (const DINode *DN : SP->getRetainedNodes()) {
1391 if (auto *DV = dyn_cast(DN)) {
1392 // Collect info for variables that were optimized out.
1393 if (!ProcessedVars.insert(InlinedVariable(DV, nullptr)).second)
1394 continue;
1395 ensureAbstractVariableIsCreated(TheCU, InlinedVariable(DV, nullptr),
1396 DV->getScope());
1397 assert(LScopes.getAbstractScopesList().size() == NumAbstractScopes
1398 && "ensureAbstractVariableIsCreated inserted abstract scopes");
1399 }
13961400 }
13971401 constructAbstractSubprogramScopeDIE(TheCU, AScope);
13981402 }
455455 }
456456
457457 case Intrinsic::dbg_declare:
458 case Intrinsic::dbg_label:
458459 break; // Simply strip out debugging intrinsics
459460
460461 case Intrinsic::eh_typeid_for:
18301830 Printer.printMetadata("unit", N->getRawUnit());
18311831 Printer.printMetadata("templateParams", N->getRawTemplateParams());
18321832 Printer.printMetadata("declaration", N->getRawDeclaration());
1833 Printer.printMetadata("variables", N->getRawVariables());
1833 Printer.printMetadata("retainedNodes", N->getRawRetainedNodes());
18341834 Printer.printMetadata("thrownTypes", N->getRawThrownTypes());
18351835 Out << ")";
18361836 }
19671967 Printer.printMetadata("type", N->getRawType());
19681968 Printer.printDIFlags("flags", N->getFlags());
19691969 Printer.printInt("align", N->getAlignInBits());
1970 Out << ")";
1971 }
1972
1973 static void writeDILabel(raw_ostream &Out, const DILabel *N,
1974 TypePrinting *TypePrinter,
1975 SlotTracker *Machine, const Module *Context) {
1976 Out << "!DILabel(";
1977 MDFieldPrinter Printer(Out, TypePrinter, Machine, Context);
1978 Printer.printMetadata("scope", N->getRawScope(), /* ShouldSkipNull */ false);
1979 Printer.printString("name", N->getName());
1980 Printer.printMetadata("file", N->getRawFile());
1981 Printer.printInt("line", N->getLine());
19701982 Out << ")";
19711983 }
19721984
3232
3333 DIBuilder::DIBuilder(Module &m, bool AllowUnresolvedNodes, DICompileUnit *CU)
3434 : M(m), VMContext(M.getContext()), CUNode(CU),
35 DeclareFn(nullptr), ValueFn(nullptr),
35 DeclareFn(nullptr), ValueFn(nullptr), LabelFn(nullptr),
3636 AllowUnresolvedNodes(AllowUnresolvedNodes) {}
3737
3838 void DIBuilder::trackIfUnresolved(MDNode *N) {
4646 }
4747
4848 void DIBuilder::finalizeSubprogram(DISubprogram *SP) {
49 MDTuple *Temp = SP->getVariables().get();
49 MDTuple *Temp = SP->getRetainedNodes().get();
5050 if (!Temp || !Temp->isTemporary())
5151 return;
5252
53 SmallVector4> Variables;
53 SmallVector16> RetainedNodes;
5454
5555 auto PV = PreservedVariables.find(SP);
5656 if (PV != PreservedVariables.end())
57 Variables.append(PV->second.begin(), PV->second.end());
58
59 DINodeArray AV = getOrCreateArray(Variables);
60 TempMDTuple(Temp)->replaceAllUsesWith(AV.get());
57 RetainedNodes.append(PV->second.begin(), PV->second.end());
58
59 auto PL = PreservedLabels.find(SP);
60 if (PL != PreservedLabels.end())
61 RetainedNodes.append(PL->second.begin(), PL->second.end());
62
63 DINodeArray Node = getOrCreateArray(RetainedNodes);
64
65 TempMDTuple(Temp)->replaceAllUsesWith(Node.get());
6166 }
6267
6368 void DIBuilder::finalize() {
696701 return createLocalVariable(VMContext, PreservedVariables, Scope, Name, ArgNo,
697702 File, LineNo, Ty, AlwaysPreserve, Flags,
698703 /* AlignInBits */0);
704 }
705
706 DILabel *DIBuilder::createLabel(
707 DIScope *Scope, StringRef Name, DIFile *File,
708 unsigned LineNo, bool AlwaysPreserve) {
709 DIScope *Context = getNonCompileUnitScope(Scope);
710
711 auto *Node =
712 DILabel::get(VMContext, cast_or_null(Context), Name,
713 File, LineNo);
714
715 if (AlwaysPreserve) {
716 /// The optimizer may remove labels. If there is an interest
717 /// to preserve label info in such situation then append it to
718 /// the list of retained nodes of the DISubprogram.
719 DISubprogram *Fn = getDISubprogram(Scope);
720 assert(Fn && "Missing subprogram for label");
721 PreservedLabels[Fn].emplace_back(Node);
722 }
723 return Node;
699724 }
700725
701726 DIExpression *DIBuilder::createExpression(ArrayRef Addr) {
820845 return insertDeclare(Storage, VarInfo, Expr, DL, InsertAtEnd, InsertBefore);
821846 }
822847
848 Instruction *DIBuilder::insertLabel(DILabel *LabelInfo, const DILocation *DL,
849 Instruction *InsertBefore) {
850 return insertLabel(
851 LabelInfo, DL, InsertBefore ? InsertBefore->getParent() : nullptr,
852 InsertBefore);
853 }
854
855 Instruction *DIBuilder::insertLabel(DILabel *LabelInfo, const DILocation *DL,
856 BasicBlock *InsertAtEnd) {
857 return insertLabel(LabelInfo, DL, InsertAtEnd, nullptr);
858 }
859
823860 Instruction *DIBuilder::insertDbgValueIntrinsic(Value *V,
824861 DILocalVariable *VarInfo,
825862 DIExpression *Expr,
905942 return B.CreateCall(ValueFn, Args);
906943 }
907944
945 Instruction *DIBuilder::insertLabel(
946 DILabel *LabelInfo, const DILocation *DL,
947 BasicBlock *InsertBB, Instruction *InsertBefore) {
948 assert(LabelInfo && "empty or invalid DILabel* passed to dbg.label");
949 assert(DL && "Expected debug loc");
950 assert(DL->getScope()->getSubprogram() ==
951 LabelInfo->getScope()->getSubprogram() &&
952 "Expected matching subprograms");
953 if (!LabelFn)
954 LabelFn = Intrinsic::getDeclaration(&M, Intrinsic::dbg_label);
955
956 trackIfUnresolved(LabelInfo);
957 Value *Args[] = {MetadataAsValue::get(VMContext, LabelInfo)};
958
959 IRBuilder<> B = getIRBForDbgInsertion(DL, InsertBB, InsertBefore);
960 return B.CreateCall(LabelFn, Args);
961 }
962
908963 void DIBuilder::replaceVTableHolder(DICompositeType *&T,
909964 DIType *VTableHolder) {
910965 {
567567 // parts of the graph.
568568 auto prune = [](MDNode *Parent, MDNode *Child) {
569569 if (auto *MDS = dyn_cast(Parent))
570 return Child == MDS->getVariables().get();
570 return Child == MDS->getRetainedNodes().get();
571571 return false;
572572 };
573573
488488 bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
489489 Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
490490 int ThisAdjustment, DIFlags Flags, bool IsOptimized, Metadata *Unit,
491 Metadata *TemplateParams, Metadata *Declaration, Metadata *Variables,
491 Metadata *TemplateParams, Metadata *Declaration, Metadata *RetainedNodes,
492492 Metadata *ThrownTypes, StorageType Storage, bool ShouldCreate) {
493493 assert(isCanonical(Name) && "Expected canonical MDString");
494494 assert(isCanonical(LinkageName) && "Expected canonical MDString");
496496 DISubprogram, (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
497497 IsDefinition, ScopeLine, ContainingType, Virtuality,
498498 VirtualIndex, ThisAdjustment, Flags, IsOptimized, Unit,
499 TemplateParams, Declaration, Variables, ThrownTypes));
499 TemplateParams, Declaration, RetainedNodes, ThrownTypes));
500500 SmallVector Ops = {
501 File, Scope, Name, LinkageName, Type, Unit,
502 Declaration, Variables, ContainingType, TemplateParams, ThrownTypes};
501 File, Scope, Name, LinkageName, Type, Unit,
502 Declaration, RetainedNodes, ContainingType, TemplateParams, ThrownTypes};
503503 if (!ThrownTypes) {
504504 Ops.pop_back();
505505 if (!TemplateParams) {
650650
651651 // Fail gracefully.
652652 return None;
653 }
654
655 DILabel *DILabel::getImpl(LLVMContext &Context, Metadata *Scope,
656 MDString *Name, Metadata *File, unsigned Line,
657 StorageType Storage,
658 bool ShouldCreate) {
659 assert(Scope && "Expected scope");
660 assert(isCanonical(Name) && "Expected canonical MDString");
661 DEFINE_GETIMPL_LOOKUP(DILabel,
662 (Scope, Name, File, Line));
663 Metadata *Ops[] = {Scope, Name, File};
664 DEFINE_GETIMPL_STORE(DILabel, (Line), Ops);
653665 }
654666
655667 DIExpression *DIExpression::getImpl(LLVMContext &Context,
618618 Metadata *Unit;
619619 Metadata *TemplateParams;
620620 Metadata *Declaration;
621 Metadata *Variables;
621 Metadata *RetainedNodes;
622622 Metadata *ThrownTypes;
623623
624624 MDNodeKeyImpl(Metadata *Scope, MDString *Name, MDString *LinkageName,
627627 Metadata *ContainingType, unsigned Virtuality,
628628 unsigned VirtualIndex, int ThisAdjustment, unsigned Flags,
629629 bool IsOptimized, Metadata *Unit, Metadata *TemplateParams,
630 Metadata *Declaration, Metadata *Variables,
630 Metadata *Declaration, Metadata *RetainedNodes,
631631 Metadata *ThrownTypes)
632632 : Scope(Scope), Name(Name), LinkageName(LinkageName), File(File),
633633 Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit),
636636 VirtualIndex(VirtualIndex), ThisAdjustment(ThisAdjustment),
637637 Flags(Flags), IsOptimized(IsOptimized), Unit(Unit),
638638 TemplateParams(TemplateParams), Declaration(Declaration),
639 Variables(Variables), ThrownTypes(ThrownTypes) {}
639 RetainedNodes(RetainedNodes), ThrownTypes(ThrownTypes) {}
640640 MDNodeKeyImpl(const DISubprogram *N)
641641 : Scope(N->getRawScope()), Name(N->getRawName()),
642642 LinkageName(N->getRawLinkageName()), File(N->getRawFile()),
647647 ThisAdjustment(N->getThisAdjustment()), Flags(N->getFlags()),
648648 IsOptimized(N->isOptimized()), Unit(N->getRawUnit()),
649649 TemplateParams(N->getRawTemplateParams()),
650 Declaration(N->getRawDeclaration()), Variables(N->getRawVariables()),
650 Declaration(N->getRawDeclaration()), RetainedNodes(N->getRawRetainedNodes()),
651651 ThrownTypes(N->getRawThrownTypes()) {}
652652
653653 bool isKeyOf(const DISubprogram *RHS) const {
665665 Unit == RHS->getUnit() &&
666666 TemplateParams == RHS->getRawTemplateParams() &&
667667 Declaration == RHS->getRawDeclaration() &&
668 Variables == RHS->getRawVariables() &&
668 RetainedNodes == RHS->getRawRetainedNodes() &&
669669 ThrownTypes == RHS->getRawThrownTypes();
670670 }
671671
947947 }
948948 };
949949
950 template <> struct MDNodeKeyImpl {
951 Metadata *Scope;
952 MDString *Name;
953 Metadata *File;
954 unsigned Line;
955
956 MDNodeKeyImpl(Metadata *Scope, MDString *Name, Metadata *File, unsigned Line)
957 : Scope(Scope), Name(Name), File(File), Line(Line) {}
958 MDNodeKeyImpl(const DILabel *N)
959 : Scope(N->getRawScope()), Name(N->getRawName()), File(N->getRawFile()),
960 Line(N->getLine()) {}
961
962 bool isKeyOf(const DILabel *RHS) const {
963 return Scope == RHS->getRawScope() && Name == RHS->getRawName() &&
964 File == RHS->getRawFile() && Line == RHS->getLine();
965 }
966
967 /// Using name and line to get hash value. It should already be mostly unique.
968 unsigned getHashValue() const {
969 return hash_combine(Scope, Name, Line);
970 }
971 };
972
950973 template <> struct MDNodeKeyImpl {
951974 ArrayRef Elements;
952975
466466 void visitIntrinsicCallSite(Intrinsic::ID ID, CallSite CS);
467467 void visitConstrainedFPIntrinsic(ConstrainedFPIntrinsic &FPI);
468468 void visitDbgIntrinsic(StringRef Kind, DbgInfoIntrinsic &DII);
469 void visitDbgLabelIntrinsic(StringRef Kind, DbgLabelInst &DLI);
469470 void visitAtomicCmpXchgInst(AtomicCmpXchgInst &CXI);
470471 void visitAtomicRMWInst(AtomicRMWInst &RMWI);
471472 void visitFenceInst(FenceInst &FI);
10841085 if (auto *S = N.getRawDeclaration())
10851086 AssertDI(isa(S) && !cast(S)->isDefinition(),
10861087 "invalid subprogram declaration", &N, S);
1087 if (auto *RawVars = N.getRawVariables()) {
1088 auto *Vars = dyn_cast(RawVars);
1089 AssertDI(Vars, "invalid variable list", &N, RawVars);
1090 for (Metadata *Op : Vars->operands()) {
1091 AssertDI(Op && isa(Op), "invalid local variable", &N,
1092 Vars, Op);
1088 if (auto *RawNode = N.getRawRetainedNodes()) {
1089 auto *Node = dyn_cast(RawNode);
1090 AssertDI(Node, "invalid retained nodes list", &N, RawNode);
1091 for (Metadata *Op : Node->operands()) {
1092 AssertDI(Op && (isa(Op) || isa(Op)),
1093 "invalid retained nodes, expected DILocalVariable or DILabel",
1094 &N, Node, Op);
10931095 }
10941096 }
10951097 AssertDI(!hasConflictingReferenceFlags(N.getFlags()),
12191221 AssertDI(N.getTag() == dwarf::DW_TAG_variable, "invalid tag", &N);
12201222 AssertDI(N.getRawScope() && isa(N.getRawScope()),
12211223 "local variable requires a valid scope", &N, N.getRawScope());
1224 }
1225
1226 void Verifier::visitDILabel(const DILabel &N) {
1227 if (auto *S = N.getRawScope())
1228 AssertDI(isa(S), "invalid scope", &N, S);
1229 if (auto *F = N.getRawFile())
1230 AssertDI(isa(F), "invalid file", &N, F);
1231
1232 AssertDI(N.getTag() == dwarf::DW_TAG_label, "invalid tag", &N);
1233 AssertDI(N.getRawScope() && isa(N.getRawScope()),
1234 "label requires a valid scope", &N, N.getRawScope());
12221235 }
12231236
12241237 void Verifier::visitDIExpression(const DIExpression &N) {
40644077 case Intrinsic::dbg_value: // llvm.dbg.value
40654078 visitDbgIntrinsic("value", cast(*CS.getInstruction()));
40664079 break;
4080 case Intrinsic::dbg_label: // llvm.dbg.label
4081 visitDbgLabelIntrinsic("label", cast(*CS.getInstruction()));
4082 break;
40674083 case Intrinsic::memcpy:
40684084 case Intrinsic::memmove:
40694085 case Intrinsic::memset: {
44934509 verifyFnArgs(DII);
44944510 }
44954511
4512 void Verifier::visitDbgLabelIntrinsic(StringRef Kind, DbgLabelInst &DLI) {
4513 AssertDI(isa(DLI.getRawVariable()),
4514 "invalid llvm.dbg." + Kind + " intrinsic variable", &DLI,
4515 DLI.getRawVariable());
4516
4517 // Ignore broken !dbg attachments; they're checked elsewhere.
4518 if (MDNode *N = DLI.getDebugLoc().getAsMDNode())
4519 if (!isa(N))
4520 return;
4521
4522 BasicBlock *BB = DLI.getParent();
4523 Function *F = BB ? BB->getParent() : nullptr;
4524
4525 // The scopes for variables and !dbg attachments must agree.
4526 DILabel *Label = DLI.getLabel();
4527 DILocation *Loc = DLI.getDebugLoc();
4528 Assert(Loc, "llvm.dbg." + Kind + " intrinsic requires a !dbg attachment",
4529 &DLI, BB, F);
4530
4531 DISubprogram *LabelSP = getSubprogram(Label->getRawScope());
4532 DISubprogram *LocSP = getSubprogram(Loc->getRawScope());
4533 if (!LabelSP || !LocSP)
4534 return;
4535
4536 AssertDI(LabelSP == LocSP, "mismatched subprogram between llvm.dbg." + Kind +
4537 " label and !dbg attachment",
4538 &DLI, BB, F, Label, Label->getScope()->getSubprogram(), Loc,
4539 Loc->getScope()->getSubprogram());
4540 }
4541
44964542 void Verifier::verifyFragmentExpression(const DbgInfoIntrinsic &I) {
4543 if (dyn_cast(&I))
4544 return;
4545
44974546 DILocalVariable *V = dyn_cast_or_null(I.getRawVariable());
44984547 DIExpression *E = dyn_cast_or_null(I.getRawExpression());
44994548
371371 return false;
372372 return true;
373373 }
374 if (DbgLabelInst *DLI = dyn_cast(I)) {
375 if (DLI->getLabel())
376 return false;
377 return true;
378 }
374379
375380 if (!I->mayHaveSideEffects())
376381 return true;
38953895 switch (IntrinsicID) {
38963896 case Intrinsic::dbg_declare:
38973897 case Intrinsic::dbg_value:
3898 case Intrinsic::dbg_label:
38983899 case Intrinsic::lifetime_end:
38993900 break;
39003901 default:
3939 !8 = !{i32 2, !"Dwarf Version", i32 4}
4040 !9 = !{i32 2, !"Debug Info Version", i32 3}
4141 !10 = !{!"My Compiler"}
42 !11 = distinct !DISubprogram(name: "func_5", scope: !0, file: !0, line: 117, type: !12, isLocal: true, isDefinition: true, scopeLine: 118, isOptimized: false, unit: !5, variables: !6)
42 !11 = distinct !DISubprogram(name: "func_5", scope: !0, file: !0, line: 117, type: !12, isLocal: true, isDefinition: true, scopeLine: 118, isOptimized: false, unit: !5, retainedNodes: !6)
4343 !12 = !DISubroutineType(types: !13)
4444 !13 = !{}
4545 !14 = !DILocalVariable(name: "p_6", arg: 1, scope: !11, line: 117, type: !1)
5151 !4 = !{i32 2, !"Debug Info Version", i32 3}
5252 !5 = !{i32 1, !"PIC Level", i32 2}
5353 !6 = !{!"clang version 3.9.0 (llvm/trunk 271857)"}
54 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
54 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5555 !8 = !DISubroutineType(types: !9)
5656 !9 = !{null, !10, !11}
5757 !10 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
0 ; Test bitcode writer/reader for DILabel metadata.
1 ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
2 ; RUN: verify-uselistorder %s
3 ;
4 ; CHECK: top:
5 ; CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:![0-9]+]])
6 ; CHECK: distinct !DISubprogram(name: "foo", {{.*}}, retainedNodes: [[ELEMENTS:![0-9]+]])
7 ; CHECK: [[ELEMENTS]] = !{[[LABEL_METADATA]]}
8 ; CHECK: [[LABEL_METADATA]] = !DILabel({{.*}}, name: "top", {{.*}}, line: 4)
9
10 source_filename = "debug-label-bitcode.c"
11
12 ; Function Attrs: noinline nounwind optnone
13 define i32 @foo(i32 signext %a, i32 signext %b) !dbg !4 {
14 entry:
15 %a.addr = alloca i32, align 4
16 %b.addr = alloca i32, align 4
17 %sum = alloca i32, align 4
18 store i32 %a, i32* %a.addr, align 4
19 store i32 %b, i32* %b.addr, align 4
20 br label %top
21
22 top: ; preds = %entry
23 call void @llvm.dbg.label(metadata !9), !dbg !10
24 %0 = load i32, i32* %a.addr, align 4
25 %1 = load i32, i32* %b.addr, align 4
26 %add = add nsw i32 %0, %1
27 store i32 %add, i32* %sum, align 4
28 br label %done
29
30 done: ; preds = %top
31 call void @llvm.dbg.label(metadata !11), !dbg !12
32 %2 = load i32, i32* %sum, align 4
33 ret i32 %2
34 }
35
36 ; Function Attrs: nounwind readnone speculatable
37 declare void @llvm.dbg.label(metadata)
38
39 !llvm.dbg.cu = !{!0}
40 !llvm.module.flags = !{!3}
41
42 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang 6.0.0", isOptimized: false, emissionKind: FullDebug, enums: !2)
43 !1 = !DIFile(filename: "debug-label-bitcode.c", directory: "./")
44 !2 = !{}
45 !3 = !{i32 2, !"Debug Info Version", i32 3}
46 !4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, retainedNodes: !5)
47 !5 = !{!9}
48 !6 = !DISubroutineType(types: !7)
49 !7 = !{!8, !8, !8}
50 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
51 !9 = !DILabel(scope: !4, name: "top", file: !1, line: 4)
52 !10 = !DILocation(line: 4, column: 1, scope: !4)
53 !11 = !DILabel(scope: !4, name: "done", file: !1, line: 7)
54 !12 = !DILocation(line: 7, column: 1, scope: !4)
2727 ; CHECK: !9 = !DISubprogram(scope: null, isLocal: false, isDefinition: false, isOptimized: false)
2828 !9 = !DISubprogram(isDefinition: false)
2929
30 ; CHECK: !10 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1, file: !2, line: 7, type: !3, isLocal: true, isDefinition: true, scopeLine: 8, containingType: !4, virtuality: DW_VIRTUALITY_pure_virtual, virtualIndex: 10, thisAdjustment: 3, flags: DIFlagPrototyped | DIFlagNoReturn, isOptimized: true, unit: !8, templateParams: !5, declaration: !9, variables: !6)
30 ; CHECK: !10 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1, file: !2, line: 7, type: !3, isLocal: true, isDefinition: true, scopeLine: 8, containingType: !4, virtuality: DW_VIRTUALITY_pure_virtual, virtualIndex: 10, thisAdjustment: 3, flags: DIFlagPrototyped | DIFlagNoReturn, isOptimized: true, unit: !8, templateParams: !5, declaration: !9, retainedNodes: !6)
3131 !10 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1,
3232 file: !2, line: 7, type: !3, isLocal: true,
3333 isDefinition: true, scopeLine: 8,
3535 virtuality: DW_VIRTUALITY_pure_virtual,
3636 virtualIndex: 10, thisAdjustment: 3, flags: DIFlagPrototyped | DIFlagNoReturn,
3737 isOptimized: true, unit: !8, templateParams: !5,
38 declaration: !9, variables: !6)
38 declaration: !9, retainedNodes: !6)
3939
4040 ; CHECK: !11 = distinct !DISubprogram
4141 ; CHECK-SAME: virtualIndex: 0,
4747 virtualIndex: 0,
4848 flags: DIFlagPrototyped, isOptimized: true,
4949 unit: !8, templateParams: !5, declaration: !9,
50 variables: !6)
50 retainedNodes: !6)
5151
5252 ; CHECK: !12 = distinct !DISubprogram
5353 ; CHECK-NOT: virtualIndex
5858 virtuality: DW_VIRTUALITY_none,
5959 flags: DIFlagPrototyped, isOptimized: true,
6060 unit: !8,
61 templateParams: !5, declaration: !9, variables: !6)
61 templateParams: !5, declaration: !9, retainedNodes: !6)
6262
6363 !13 = !{!4}
6464 ; CHECK: !13 = !{!4}
1414 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 (trunk 195495) (llvm/trunk 195495:195504M)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
1515 !1 = !DIFile(filename: "../llvm/tools/clang/test/CodeGen/debug-info-version.c", directory: "/Users/manmanren/llvm_gmail/release")
1616 !2 = !{i32 0}
17 !4 = distinct !DISubprogram(name: "main", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
17 !4 = distinct !DISubprogram(name: "main", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !5, type: !6, retainedNodes: !2)
1818 !5 = !DIFile(filename: "../llvm/tools/clang/test/CodeGen/debug-info-version.c", directory: "/Users/manmanren/llvm_gmail/release")
1919 !6 = !DISubroutineType(types: !7)
2020 !7 = !{!8}
3333 ; CHECK-NEXT: !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "MyStruct", scope: !14, file: !1, size: 192, elements: !15, runtimeLang: DW_LANG_C89, identifier: "MyStruct")
3434 ; CHECK-NEXT: !14 = !DINamespace(name: "NameSpace", scope: !6)
3535 ; CHECK-NEXT: !15 = !{!7, !7, !7}
36 ; CHECK-NEXT: !16 = distinct !DISubprogram(name: "foo", linkageName: "foo", scope: !1, file: !1, line: 42, type: !17, isLocal: true, isDefinition: true, scopeLine: 42, isOptimized: false, unit: !0, variables: !22)
36 ; CHECK-NEXT: !16 = distinct !DISubprogram(name: "foo", linkageName: "foo", scope: !1, file: !1, line: 42, type: !17, isLocal: true, isDefinition: true, scopeLine: 42, isOptimized: false, unit: !0, retainedNodes: !22)
3737 ; CHECK-NEXT: !17 = !DISubroutineType(types: !18)
3838 ; CHECK-NEXT: !18 = !{!7, !7, !19}
3939 ; CHECK-NEXT: !19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 640, flags: DIFlagVector, elements: !20)
22 ;
33 ; RUN: llvm-dis < %s.bc -o - | llvm-as | llvm-dis | FileCheck %s
44
5 ; CHECK: ![[SP:[0-9]+]] = distinct !DISubprogram(name: "foo",{{.*}} variables: ![[VARS:[0-9]+]]
5 ; CHECK: ![[SP:[0-9]+]] = distinct !DISubprogram(name: "foo",{{.*}} retainedNodes: ![[VARS:[0-9]+]]
66 ; CHECK: ![[VARS]] = !{![[PARAM:[0-9]+]], ![[AUTO:[0-9]+]]}
77 ; CHECK: ![[PARAM]] = !DILocalVariable(name: "param", arg: 1, scope: ![[SP]])
88 ; CHECK: ![[AUTO]] = !DILocalVariable(name: "auto", scope: ![[SP]])
1212 !llvm.module.flags = !{!6}
1313 !llvm.dbg.cu = !{!4}
1414
15 !0 = distinct !DISubprogram(name: "foo", scope: null, isLocal: false, isDefinition: true, isOptimized: false, variables: !1)
15 !0 = distinct !DISubprogram(name: "foo", scope: null, isLocal: false, isDefinition: true, isOptimized: false, retainedNodes: !1)
1616 !1 = !{!2, !3}
1717 !2 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "param", arg: 1, scope: !0)
1818 !3 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "auto", scope: !0)
1212 !3 = !{i32 2, !"Dwarf Version", i32 4}
1313 !4 = !{i32 2, !"Debug Info Version", i32 3}
1414 !5 = !{!"clang version 3.9.1 (http://llvm.org/git/clang.git c3709e72d22432f53f8e2f14354def31a96734fe)"}
15 !6 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, variables: !2)
15 !6 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, retainedNodes: !2)
1616 !7 = !DISubroutineType(types: !8)
1717 !8 = !{null}
1818 !9 = !DILocalVariable(name: "i", scope: !6, file: !1, line: 1, type: !10)
2121 !4 = !{i32 2, !"Debug Info Version", i32 3}
2222 !5 = !{i32 1, !"wchar_size", i32 4}
2323 !6 = !{!"clang version 5.0.1"}
24 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 20, type: !8, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !11)
24 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 20, type: !8, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !11)
2525 !8 = !DISubroutineType(types: !9)
2626 !9 = !{null, !10}
2727 !10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
2222 !4 = !{i32 2, !"Debug Info Version", i32 3}
2323 !5 = !{i32 1, !"wchar_size", i32 4}
2424 !6 = !{!"clang version 5.0.1"}
25 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 20, type: !8, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !11)
25 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 20, type: !8, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !11)
2626 !8 = !DISubroutineType(types: !9)
2727 !9 = !{null, !10}
2828 !10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
2121 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "llc r309174", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
2222 !1 = !DIFile(filename: "a.c", directory: "/")
2323 !2 = !{i32 1, !"Debug Info Version", i32 3}
24 !3 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !4, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !7)
24 !3 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !4, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, retainedNodes: !7)
2525 !4 = !DISubroutineType(types: !5)
2626 !5 = !{!6}
2727 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2323 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
2424 !2 = !{}
2525 !4 = !{i32 2, !"Debug Info Version", i32 3}
26 !7 = distinct !DISubprogram(name: "f", linkageName: "\01?f@@YAXXZ", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
26 !7 = distinct !DISubprogram(name: "f", linkageName: "\01?f@@YAXXZ", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2727 !8 = !DISubroutineType(types: !9)
2828 !9 = !{null}
2929 !10 = !DILocation(line: 1, column: 11, scope: !7)
5757 !4 = !{i32 2, !"Debug Info Version", i32 3}
5858 !5 = !{i32 1, !"PIC Level", i32 2}
5959 !6 = !{!"clang version 4.0.0 (trunk 289075) (llvm/trunk 289080)"}
60 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
60 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6161 !8 = !DISubroutineType(types: !9)
6262 !9 = !{null, !10}
6363 !10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
6464 !11 = !DILocalVariable(name: "in", arg: 1, scope: !7, file: !1, line: 1, type: !10)
6565 !12 = !DILocation(line: 1, column: 14, scope: !7)
66 !13 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
66 !13 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6767 !14 = !DILocalVariable(name: "in", arg: 1, scope: !13, file: !1, line: 1, type: !10)
6868 !15 = !DILocation(line: 1, column: 14, scope: !13)
69 !16 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
69 !16 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
7070 !17 = !DILocalVariable(name: "in", arg: 1, scope: !16, file: !1, line: 1, type: !10)
7171 !18 = !DILocation(line: 1, column: 14, scope: !16)
1818 !2 = !{}
1919 !3 = !{i32 2, !"Dwarf Version", i32 4}
2020 !4 = !{i32 2, !"Debug Info Version", i32 3}
21 !5 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
21 !5 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2222 !6 = !DISubroutineType(types: !2)
2323 !7 = !DILocalVariable(name: "in", arg: 1, scope: !5, file: !1, line: 1, type: !8)
2424 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
2424 !2 = !{}
2525 !3 = !{i32 2, !"Dwarf Version", i32 4}
2626 !4 = !{i32 2, !"Debug Info Version", i32 3}
27 !5 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
27 !5 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2828 !6 = !DISubroutineType(types: !2)
2929 !7 = !DILocalVariable(name: "in", arg: 1, scope: !5, file: !1, line: 1, type: !8)
3030 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
3131 !9 = !DILocation(line: 1, column: 1, scope: !5)
32 !10 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
32 !10 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
3333 !11 = !DILocalVariable(name: "in", arg: 1, scope: !10, file: !1, line: 1, type: !8)
3434 !12 = !DILocation(line: 1, column: 1, scope: !10)
3535 ...
4646 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 ", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
4747 !1 = !DIFile(filename: "test.c", directory: "")
4848 !2 = !{}
49 !4 = distinct !DISubprogram(name: "", line: 140, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 141, file: !1, scope: !1, type: !6, variables: !12)
49 !4 = distinct !DISubprogram(name: "", line: 140, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 141, file: !1, scope: !1, type: !6, retainedNodes: !12)
5050 !6 = !DISubroutineType(types: !7)
5151 !7 = !{null, !8}
5252 !8 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !9)
5252 !3 = !{i32 2, !"Debug Info Version", i32 3}
5353 !4 = !{i32 1, !"PIC Level", i32 2}
5454 !5 = !{!"clang version 3.9.0 "}
55 !6 = distinct !DISubprogram(name: "success", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
55 !6 = distinct !DISubprogram(name: "success", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
5656 !7 = !DISubroutineType(types: !2)
5757 !8 = !DILocation(line: 1, column: 20, scope: !6)
5858 !9 = !DILocation(line: 2, column: 20, scope: !6)
134134 !3 = !{i32 2, !"Debug Info Version", i32 3}
135135 !4 = !{i32 1, !"PIC Level", i32 2}
136136 !5 = !{!"clang version 3.9.0 "}
137 !6 = distinct !DISubprogram(name: "success", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
137 !6 = distinct !DISubprogram(name: "success", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
138138 !7 = !DISubroutineType(types: !2)
139139 !8 = !DILocation(line: 1, column: 20, scope: !6)
140140 !9 = !DILocation(line: 2, column: 20, scope: !6)
108108 !5 = !{i32 1, !"wchar_size", i32 4}
109109 !6 = !{i32 7, !"PIC Level", i32 2}
110110 !7 = !{!""}
111 !8 = distinct !DISubprogram(name: "dog", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
111 !8 = distinct !DISubprogram(name: "dog", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
112112 !9 = !DISubroutineType(types: !10)
113113 !10 = !{null}
114114 !12 = !DILocation(line: 5, column: 9, scope: !8)
115 !14 = distinct !DISubprogram(name: "cat", scope: !1, file: !1, line: 10, type: !9, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
115 !14 = distinct !DISubprogram(name: "cat", scope: !1, file: !1, line: 10, type: !9, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
116116 !16 = !DILocation(line: 13, column: 9, scope: !14)
117 !18 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 26, type: !9, isLocal: false, isDefinition: true, scopeLine: 26, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
117 !18 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 26, type: !9, isLocal: false, isDefinition: true, scopeLine: 26, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
118118 !24 = !DILocation(line: 27, column: 9, scope: !18)
119119 !26 = !DILocation(line: 29, column: 9, scope: !18)
120 !27 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 35, type: !9, isLocal: false, isDefinition: true, scopeLine: 35, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
120 !27 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 35, type: !9, isLocal: false, isDefinition: true, scopeLine: 35, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
121121 !33 = !DILocation(line: 36, column: 1, scope: !27)
122122 !35 = !DILocation(line: 38, column: 1, scope: !27)
5656 !5 = !{i32 1, !"wchar_size", i32 4}
5757 !6 = !{i32 1, !"min_enum_size", i32 4}
5858 !7 = !{!"clang"}
59 !8 = distinct !DISubprogram(name: "func", scope: !1, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
59 !8 = distinct !DISubprogram(name: "func", scope: !1, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6060 !9 = !DISubroutineType(types: !10)
6161 !10 = !{!11, !11}
6262 !11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
387387 !107 = !{i32 2, i32 0}
388388 !108 = !{!"clang version 7.0.0 (https://github.com/llvm-mirror/clang.git 3edc9a6d1f98fec61a944167cb5c36c40104918a) (https://github.com/llvm-mirror/llvm.git 90eddc791688f226397e600c287c043d9b0e35fa)"}
389389 !109 = !{!"clang version 4.0 "}
390 !110 = distinct !DISubprogram(name: "Scene_transformT", scope: !4, file: !4, line: 2182, type: !111, isLocal: false, isDefinition: true, scopeLine: 2183, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !116)
390 !110 = distinct !DISubprogram(name: "Scene_transformT", scope: !4, file: !4, line: 2182, type: !111, isLocal: false, isDefinition: true, scopeLine: 2183, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !116)
391391 !111 = !DISubroutineType(types: !112)
392392 !112 = !{!77, !83, !77, !80, !113, !115}
393393 !113 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !114, size: 64)
6363 !9 = !{i32 2, !"Dwarf Version", i32 2}
6464 !10 = !{i32 2, !"Debug Info Version", i32 3}
6565 !11 = !{!"clang version 3.9.0 (trunk 269772)"}
66 !12 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
66 !12 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6767 !13 = !DISubroutineType(types: !14)
6868 !14 = !{null, !15}
6969 !15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64, align: 32)
6262 !9 = !{i32 2, !"Dwarf Version", i32 2}
6363 !10 = !{i32 2, !"Debug Info Version", i32 3}
6464 !11 = !{!"clang version 3.9.0 (trunk 268929)"}
65 !12 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
65 !12 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6666 !13 = !DISubroutineType(types: !14)
6767 !14 = !{null, !15}
6868 !15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64, align: 32)
4646 !9 = !{i32 2, !"Dwarf Version", i32 2}
4747 !10 = !{i32 2, !"Debug Info Version", i32 3}
4848 !11 = !{!"clang version 3.9.0 (trunk 268929)"}
49 !12 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
49 !12 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5050 !13 = !DISubroutineType(types: !14)
5151 !14 = !{null, !15}
5252 !15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64, align: 32)
4949 !4 = !{i32 2, !"Dwarf Version", i32 2}
5050 !5 = !{i32 2, !"Debug Info Version", i32 3}
5151 !6 = !{!"clang version 5.0.0"}
52 !7 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
52 !7 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5353 !8 = !DISubroutineType(types: !9)
5454 !9 = !{null, !10}
5555 !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)
3333 !3 = !{i32 2, !"Dwarf Version", i32 2}
3434 !4 = !{i32 2, !"Debug Info Version", i32 3}
3535 !5 = !DILocalVariable(name: "A", arg: 1, scope: !6, file: !1, line: 1, type: !9)
36 !6 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
36 !6 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
3737 !7 = !DISubroutineType(types: !8)
3838 !8 = !{null, !9}
3939 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64, align: 32)
4141 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 244715) (llvm/trunk 244718)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
4242 !1 = !DIFile(filename: "/tmp/test_debug_value.cl", directory: "/Users/matt/src/llvm/build_debug")
4343 !2 = !{}
44 !4 = distinct !DISubprogram(name: "test_debug_value", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !9)
44 !4 = distinct !DISubprogram(name: "test_debug_value", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9)
4545 !5 = !DISubroutineType(types: !6)
4646 !6 = !{null, !7}
4747 !7 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !8, size: 64, align: 32)
1111
1212 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !4, producer: "llvm", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !4)
1313 !1 = !DILocalVariable(name: "a", scope: !2, file: !4, line: 126, type: !6)
14 !2 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 1, type: !3, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !5)
14 !2 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 1, type: !3, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !5)
1515 !3 = !DISubroutineType(types: !4)
1616 !4 = !{null}
1717 !5 = !{!1}
811811 !2 = !{}
812812 !3 = !{i32 2, !"Dwarf Version", i32 2}
813813 !4 = !{i32 2, !"Debug Info Version", i32 3}
814 !5 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
814 !5 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
815815 !6 = !DISubroutineType(types: !7)
816816 !7 = !{null, !8}
817817 !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64)
9898 !13 = !{}
9999 !14 = !{!0, !4, !6, !8, !10}
100100 !15 = !{i32 1, !"Debug Info Version", i32 3}
101 !16 = distinct !DISubprogram(name: "get1", linkageName: "get1", scope: !2, file: !2, line: 4, type: !17, isLocal: false, isDefinition: true, scopeLine: 4, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, variables: !19)
101 !16 = distinct !DISubprogram(name: "get1", linkageName: "get1", scope: !2, file: !2, line: 4, type: !17, isLocal: false, isDefinition: true, scopeLine: 4, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, retainedNodes: !19)
102102 !17 = !DISubroutineType(types: !18)
103103 !18 = !{!3, !3}
104104 !19 = !{!20, !21}
108108 !23 = !DIExpression()
109109 !24 = !DILocation(line: 4, scope: !16)
110110 !25 = !DILocation(line: 4, scope: !22)
111 !26 = distinct !DISubprogram(name: "get2", linkageName: "get2", scope: !2, file: !2, line: 7, type: !17, isLocal: false, isDefinition: true, scopeLine: 7, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, variables: !27)
111 !26 = distinct !DISubprogram(name: "get2", linkageName: "get2", scope: !2, file: !2, line: 7, type: !17, isLocal: false, isDefinition: true, scopeLine: 7, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, retainedNodes: !27)
112112 !27 = !{!28, !29}
113113 !28 = !DILocalVariable(name: "a", arg: 1, scope: !26, file: !2, line: 7, type: !3)
114114 !29 = !DILocalVariable(name: "b", scope: !30, file: !2, line: 7, type: !3)
115115 !30 = distinct !DILexicalBlock(scope: !26, file: !2, line: 7)
116116 !31 = !DILocation(line: 7, scope: !26)
117117 !32 = !DILocation(line: 7, scope: !30)
118 !33 = distinct !DISubprogram(name: "get3", linkageName: "get3", scope: !2, file: !2, line: 10, type: !17, isLocal: false, isDefinition: true, scopeLine: 10, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, variables: !34)
118 !33 = distinct !DISubprogram(name: "get3", linkageName: "get3", scope: !2, file: !2, line: 10, type: !17, isLocal: false, isDefinition: true, scopeLine: 10, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, retainedNodes: !34)
119119 !34 = !{!35, !36}
120120 !35 = !DILocalVariable(name: "a", arg: 1, scope: !33, file: !2, line: 10, type: !3)
121121 !36 = !DILocalVariable(name: "b", scope: !37, file: !2, line: 10, type: !3)
122122 !37 = distinct !DILexicalBlock(scope: !33, file: !2, line: 10)
123123 !38 = !DILocation(line: 10, scope: !33)
124124 !39 = !DILocation(line: 10, scope: !37)
125 !40 = distinct !DISubprogram(name: "get4", linkageName: "get4", scope: !2, file: !2, line: 13, type: !17, isLocal: false, isDefinition: true, scopeLine: 13, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, variables: !41)
125 !40 = distinct !DISubprogram(name: "get4", linkageName: "get4", scope: !2, file: !2, line: 13, type: !17, isLocal: false, isDefinition: true, scopeLine: 13, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, retainedNodes: !41)
126126 !41 = !{!42, !43}
127127 !42 = !DILocalVariable(name: "a", arg: 1, scope: !40, file: !2, line: 13, type: !3)
128128 !43 = !DILocalVariable(name: "b", scope: !44, file: !2, line: 13, type: !3)
129129 !44 = distinct !DILexicalBlock(scope: !40, file: !2, line: 13)
130130 !45 = !DILocation(line: 13, scope: !40)
131131 !46 = !DILocation(line: 13, scope: !44)
132 !47 = distinct !DISubprogram(name: "get5", linkageName: "get5", scope: !2, file: !2, line: 16, type: !17, isLocal: false, isDefinition: true, scopeLine: 16, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, variables: !48)
132 !47 = distinct !DISubprogram(name: "get5", linkageName: "get5", scope: !2, file: !2, line: 16, type: !17, isLocal: false, isDefinition: true, scopeLine: 16, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !12, retainedNodes: !48)
133133 !48 = !{!49, !50}
134134 !49 = !DILocalVariable(name: "a", arg: 1, scope: !47, file: !2, line: 16, type: !3)
135135 !50 = !DILocalVariable(name: "b", scope: !51, file: !2, line: 16, type: !3)
8989 !7 = !DIGlobalVariable(name: "x2", scope: !2, file: !3, line: 7, type: !8, isLocal: true, isDefinition: true)
9090 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
9191 !9 = !{i32 1, !"Debug Info Version", i32 3}
92 !10 = distinct !DISubprogram(name: "get1", scope: !3, file: !3, line: 5, type: !11, isLocal: false, isDefinition: true, scopeLine: 5, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !13)
92 !10 = distinct !DISubprogram(name: "get1", scope: !3, file: !3, line: 5, type: !11, isLocal: false, isDefinition: true, scopeLine: 5, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !13)
9393 !11 = !DISubroutineType(types: !12)
9494 !12 = !{!8}
9595 !13 = !{!14, !15}
9999 !17 = !DIExpression()
100100 !18 = !DILocation(line: 5, column: 16, scope: !10)
101101 !19 = !DILocation(line: 5, column: 32, scope: !16)
102 !20 = distinct !DISubprogram(name: "get2", scope: !3, file: !3, line: 8, type: !11, isLocal: false, isDefinition: true, scopeLine: 8, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !21)
102 !20 = distinct !DISubprogram(name: "get2", scope: !3, file: !3, line: 8, type: !11, isLocal: false, isDefinition: true, scopeLine: 8, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !21)
103103 !21 = !{!22, !23}
104104 !22 = !DILocalVariable(name: "a", arg: 1, scope: !20, file: !3, line: 8, type: !8)
105105 !23 = !DILocalVariable(name: "b", scope: !24, file: !3, line: 8, type: !8)
106106 !24 = distinct !DILexicalBlock(scope: !20, file: !3, line: 8, column: 17)
107107 !25 = !DILocation(line: 8, column: 14, scope: !20)
108108 !26 = !DILocation(line: 8, column: 29, scope: !24)
109 !27 = distinct !DISubprogram(name: "get3", scope: !3, file: !3, line: 11, type: !11, isLocal: false, isDefinition: true, scopeLine: 11, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !28)
109 !27 = distinct !DISubprogram(name: "get3", scope: !3, file: !3, line: 11, type: !11, isLocal: false, isDefinition: true, scopeLine: 11, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !28)
110110 !28 = !{!29, !30}
111111 !29 = !DILocalVariable(name: "a", arg: 1, scope: !27, file: !3, line: 11, type: !8)
112112 !30 = !DILocalVariable(name: "b", scope: !31, file: !3, line: 11, type: !8)
113113 !31 = distinct !DILexicalBlock(scope: !27, file: !3, line: 11, column: 19)
114114 !32 = !DILocation(line: 11, column: 16, scope: !27)
115115 !33 = !DILocation(line: 11, column: 32, scope: !31)
116 !34 = distinct !DISubprogram(name: "get4", scope: !3, file: !3, line: 14, type: !11, isLocal: false, isDefinition: true, scopeLine: 14, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !35)
116 !34 = distinct !DISubprogram(name: "get4", scope: !3, file: !3, line: 14, type: !11, isLocal: false, isDefinition: true, scopeLine: 14, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !35)
117117 !35 = !{!36, !37}
118118 !36 = !DILocalVariable(name: "a", arg: 1, scope: !34, file: !3, line: 14, type: !8)
119119 !37 = !DILocalVariable(name: "b", scope: !38, file: !3, line: 14, type: !8)
120120 !38 = distinct !DILexicalBlock(scope: !34, file: !3, line: 14, column: 19)
121121 !39 = !DILocation(line: 14, column: 16, scope: !34)
122122 !40 = !DILocation(line: 14, column: 32, scope: !38)
123 !41 = distinct !DISubprogram(name: "get5", scope: !3, file: !3, line: 17, type: !11, isLocal: false, isDefinition: true, scopeLine: 17, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !42)
123 !41 = distinct !DISubprogram(name: "get5", scope: !3, file: !3, line: 17, type: !11, isLocal: false, isDefinition: true, scopeLine: 17, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !42)
124124 !42 = !{!43, !44}
125125 !43 = !DILocalVariable(name: "a", arg: 1, scope: !41, file: !3, line: 17, type: !8)
126126 !44 = !DILocalVariable(name: "b", scope: !45, file: !3, line: 17, type: !8)
3838 !5 = !{i32 1, !"wchar_size", i32 4}
3939 !6 = !{i32 1, !"min_enum_size", i32 4}
4040 !7 = !{!"clang version 4.0.0 "}
41 !8 = distinct !DISubprogram(name: "s_idx", scope: !1, file: !1, line: 6, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !16)
41 !8 = distinct !DISubprogram(name: "s_idx", scope: !1, file: !1, line: 6, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !16)
4242 !9 = !DISubroutineType(types: !10)
4343 !10 = !{!11, !11}
4444 !11 = !DIDerivedType(tag: DW_TAG_typedef, name: "ezxml_t", file: !1, line: 1, baseType: !12)
4141 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (llvm/trunk 237059)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
4242 !1 = !DIFile(filename: "", directory: "/Users/compnerd/Source/llvm")
4343 !2 = !{}
44 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !17)
44 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !17)
4545 !5 = !DISubroutineType(types: !6)
4646 !6 = !{!7, !8, !11, !12, !16}
4747 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
9494 !12 = !{}
9595 !13 = !{!6, !4, !0, !9}
9696 !14 = !{i32 1, !"Debug Info Version", i32 3}
97 !15 = distinct !DISubprogram(name: "pr16110", scope: !2, file: !2, line: 7, type: !16, isLocal: false, isDefinition: true, scopeLine: 7, virtualIndex: 6, isOptimized: true, unit: !11, variables: !18)
97 !15 = distinct !DISubprogram(name: "pr16110", scope: !2, file: !2, line: 7, type: !16, isLocal: false, isDefinition: true, scopeLine: 7, virtualIndex: 6, isOptimized: true, unit: !11, retainedNodes: !18)
9898 !16 = !DISubroutineType(types: !17)
9999 !17 = !{!3}
100100 !18 = !{!19, !20}
3232 !5 = !{i32 1, !"wchar_size", i32 4}
3333 !6 = !{i32 1, !"min_enum_size", i32 4}
3434 !7 = !{!"clang version 3.9.0 (http://llvm.org/git/clang.git 075a2bc2570dfcbb6d6aed6c836e4c62b37afea6)"}
35 !8 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, variables: !2)
35 !8 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, retainedNodes: !2)
3636 !9 = !DISubroutineType(types: !10)
3737 !10 = !{!11}
3838 !11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 32, align: 32)
3939 !12 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !13)
4040 !13 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
4141 !14 = !DILocation(line: 2, column: 5, scope: !8)
42 !15 = distinct !DISubprogram(name: "fn2", scope: !1, file: !1, line: 4, type: !9, isLocal: false, isDefinition: true, scopeLine: 4, isOptimized: true, unit: !0, variables: !2)
42 !15 = distinct !DISubprogram(name: "fn2", scope: !1, file: !1, line: 4, type: !9, isLocal: false, isDefinition: true, scopeLine: 4, isOptimized: true, unit: !0, retainedNodes: !2)
4343 !16 = !DILocation(line: 5, column: 5, scope: !15)
122122 !5 = !{i32 1, !"wchar_size", i32 4}
123123 !6 = !{i32 1, !"min_enum_size", i32 4}
124124 !7 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git b8f10df3679b36f51e1de7c4351b82d297825089) (http://llvm.org/git/llvm.git c2a5d16d1e3b8c49f5bbb1ff87a76ac4f88edb89)"}
125 !8 = distinct !DISubprogram(name: "func", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !12)
125 !8 = distinct !DISubprogram(name: "func", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
126126 !9 = !DISubroutineType(types: !10)
127127 !10 = !{null, !11}
128128 !11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2727 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2828 !1 = !DIFile(filename: "var.c", directory: "/tmp")
2929 !2 = !{}
30 !4 = distinct !DISubprogram(name: "sum", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, variables: !2)
30 !4 = distinct !DISubprogram(name: "sum", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, retainedNodes: !2)
3131 !5 = !DIFile(filename: "var.c", directory: "/tmp")
3232 !6 = !DISubroutineType(types: !7)
3333 !7 = !{!8, !8}
127127 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
128128 !1 = !DIFile(filename: "exp.cpp", directory: "/tmp")
129129 !2 = !{}
130 !4 = distinct !DISubprogram(name: "test", linkageName: "_Z4testiiiiiddddd", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, variables: !2)
130 !4 = distinct !DISubprogram(name: "test", linkageName: "_Z4testiiiiiddddd", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, retainedNodes: !2)
131131 !5 = !DIFile(filename: "exp.cpp", directory: "/tmp")
132132 !6 = !DISubroutineType(types: !7)
133133 !7 = !{null, !8, !8, !8, !8, !8, !9, !9, !9, !9, !9}
3232 !llvm.module.flags = !{!33}
3333
3434 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)", isOptimized: true, emissionKind: FullDebug, file: !32, enums: !{}, retainedTypes: !{}, imports: null)
35 !1 = distinct !DISubprogram(name: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 11, file: !2, scope: !2, type: !3, variables: !31)
35 !1 = distinct !DISubprogram(name: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 11, file: !2, scope: !2, type: !3, retainedNodes: !31)
3636 !2 = !DIFile(filename: "one.c", directory: "/Volumes/Athwagate/R10048772")
3737 !3 = !DISubroutineType(types: !4)
3838 !4 = !{null}
4141 !llvm.module.flags = !{!56}
4242 !llvm.dbg.cu = !{!2}
4343
44 !0 = distinct !DISubprogram(name: "test0001", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !54, scope: null, type: !3, variables: !51)
44 !0 = distinct !DISubprogram(name: "test0001", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !54, scope: null, type: !3, retainedNodes: !51)
4545 !1 = !DIFile(filename: "build2.c", directory: "/private/tmp")
4646 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !54, enums: !{}, retainedTypes: !{}, imports: null)
4747 !3 = !DISubroutineType(types: !4)
5151 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
5252 !8 = !{!9}
5353 !9 = !DISubrange(count: 4)
54 !10 = distinct !DISubprogram(name: "main", line: 59, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !54, scope: null, type: !11, variables: !52)
54 !10 = distinct !DISubprogram(name: "main", line: 59, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !54, scope: null, type: !11, retainedNodes: !52)
5555 !11 = !DISubroutineType(types: !12)
5656 !12 = !{!13}
5757 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
58 !14 = distinct !DISubprogram(name: "printFV", line: 41, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !55, scope: null, type: !16, variables: !53)
58 !14 = distinct !DISubprogram(name: "printFV", line: 41, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !55, scope: null, type: !16, retainedNodes: !53)
5959 !15 = !DIFile(filename: "/Volumes/Lalgate/work/llvm/projects/llvm-test/SingleSource/UnitTests/Vector/helpers.h", directory: "/private/tmp")
6060 !16 = !DISubroutineType(types: !17)
6161 !17 = !{null}
5858 !llvm.dbg.cu = !{!2}
5959 !llvm.module.flags = !{!48}
6060
61 !0 = distinct !DISubprogram(name: "printer", linkageName: "printer", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 12, file: !46, scope: !1, type: !3, variables: !43)
61 !0 = distinct !DISubprogram(name: "printer", linkageName: "printer", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 12, file: !46, scope: !1, type: !3, retainedNodes: !43)
6262 !1 = !DIFile(filename: "a.c", directory: "/tmp/")
6363 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "(LLVM build 00)", isOptimized: true, emissionKind: FullDebug, file: !46, enums: !47, retainedTypes: !47, imports: null)
6464 !3 = !DISubroutineType(types: !4)
6767 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !46, scope: !1, baseType: null)
6868 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 32, encoding: DW_ATE_float)
6969 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
70 !9 = distinct !DISubprogram(name: "inlineprinter", linkageName: "inlineprinter", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 5, file: !46, scope: !1, type: !3, variables: !44)
71 !10 = distinct !DISubprogram(name: "main", linkageName: "main", line: 18, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 18, file: !46, scope: !1, type: !11, variables: !45)
70 !9 = distinct !DISubprogram(name: "inlineprinter", linkageName: "inlineprinter", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 5, file: !46, scope: !1, type: !3, retainedNodes: !44)
71 !10 = distinct !DISubprogram(name: "main", linkageName: "main", line: 18, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 18, file: !46, scope: !1, type: !11, retainedNodes: !45)
7272 !11 = !DISubroutineType(types: !12)
7373 !12 = !{!5, !5, !13}
7474 !13 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !46, scope: !1, baseType: !14)
2323 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "", isOptimized: false, emissionKind: FullDebug)
2424 !1 = !DIFile(filename: "file.c", directory: "/dir")
2525 !2 = !{}
26 !3 = distinct !DISubprogram(name: "need_cfi_def_cfa_offset", scope: !1, file: !1, line: 1, type: !4, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, variables: !2)
26 !3 = distinct !DISubprogram(name: "need_cfi_def_cfa_offset", scope: !1, file: !1, line: 1, type: !4, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, retainedNodes: !2)
2727 !4 = !DISubroutineType(types: !5)
2828 !5 = !{null}
2929 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3939 !llvm.dbg.cu = !{!2}
4040 !llvm.module.flags = !{!56}
4141
42 !0 = distinct !DISubprogram(name: "test0001", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 3, file: !54, scope: !1, type: !3, variables: !51)
42 !0 = distinct !DISubprogram(name: "test0001", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 3, file: !54, scope: !1, type: !3, retainedNodes: !51)
4343 !1 = !DIFile(filename: "build2.c", directory: "/private/tmp")
4444 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !54, enums: !{}, retainedTypes: !{}, imports: null)
4545 !3 = !DISubroutineType(types: !4)
4949 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
5050 !8 = !{!9}
5151 !9 = !DISubrange(count: 4)
52 !10 = distinct !DISubprogram(name: "main", line: 59, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 59, file: !54, scope: !1, type: !11, variables: !52)
52 !10 = distinct !DISubprogram(name: "main", line: 59, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 59, file: !54, scope: !1, type: !11, retainedNodes: !52)
5353 !11 = !DISubroutineType(types: !12)
5454 !12 = !{!13}
5555 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
56 !14 = distinct !DISubprogram(name: "printFV", line: 41, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 41, file: !55, scope: !15, type: !16, variables: !53)
56 !14 = distinct !DISubprogram(name: "printFV", line: 41, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 41, file: !55, scope: !15, type: !16, retainedNodes: !53)
5757 !15 = !DIFile(filename: "/Volumes/Lalgate/work/llvm/projects/llvm-test/SingleSource/UnitTests/Vector/helpers.h", directory: "/private/tmp")
5858 !16 = !DISubroutineType(types: !17)
5959 !17 = !{null}
6262 !llvm.dbg.cu = !{!2}
6363 !llvm.module.flags = !{!53}
6464
65 !0 = distinct !DISubprogram(name: "inlineprinter", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 5, file: !51, scope: !1, type: !3, variables: !48)
65 !0 = distinct !DISubprogram(name: "inlineprinter", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 5, file: !51, scope: !1, type: !3, retainedNodes: !48)
6666 !1 = !DIFile(filename: "a.c", directory: "/private/tmp")
6767 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !51, enums: !52, retainedTypes: !52, imports: null)
6868 !3 = !DISubroutineType(types: !4)
6969 !4 = !{!5}
7070 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
71 !6 = distinct !DISubprogram(name: "printer", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 12, file: !51, scope: !1, type: !3, variables: !49)
72 !7 = distinct !DISubprogram(name: "main", line: 18, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 18, file: !51, scope: !1, type: !3, variables: !50)
71 !6 = distinct !DISubprogram(name: "printer", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 12, file: !51, scope: !1, type: !3, retainedNodes: !49)
72 !7 = distinct !DISubprogram(name: "main", line: 18, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 18, file: !51, scope: !1, type: !3, retainedNodes: !50)
7373 !8 = !DILocalVariable(name: "ptr", line: 4, arg: 1, scope: !0, file: !1, type: !9)
7474 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !2, baseType: null)
7575 !10 = !DILocalVariable(name: "val", line: 4, arg: 2, scope: !0, file: !1, type: !11)
4040 !llvm.module.flags = !{!20}
4141
4242 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.0 (trunk 130845)", isOptimized: true, emissionKind: FullDebug, file: !18, enums: !19, retainedTypes: !19, imports: null)
43 !1 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 5, file: !18, scope: !2, type: !3, variables: !17)
43 !1 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 5, file: !18, scope: !2, type: !3, retainedNodes: !17)
4444 !2 = !DIFile(filename: "k.cc", directory: "/private/tmp")
4545 !3 = !DISubroutineType(types: !4)
4646 !4 = !{null}
4141 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
4242 !1 = !DIFile(filename: "var.c", directory: "/tmp")
4343 !2 = !{}
44 !4 = distinct !DISubprogram(name: "test_basic", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, variables: !2)
44 !4 = distinct !DISubprogram(name: "test_basic", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, retainedNodes: !2)
4545 !5 = !DIFile(filename: "var.c", directory: "/tmp")
4646 !6 = !DISubroutineType(types: !7)
4747 !7 = !{!8, !8}
2424 !4 = !{i32 2, !"Debug Info Version", i32 3}
2525 !5 = !{i32 1, !"wchar_size", i32 4}
2626 !6 = !{i32 1, !"min_enum_size", i32 4}
27 !7 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
27 !7 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2828 !8 = !DISubroutineType(types: !9)
2929 !9 = !{null}
3030 !10 = !DILocation(line: 1, column: 1, scope: !7)
2525 !5 = distinct !DICompileUnit(language: DW_LANG_C, file: !6, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !7)
2626 !6 = !DIFile(filename: "/Users/vsk/Desktop/test.ll", directory: "/")
2727 !7 = !{}
28 !8 = distinct !DISubprogram(name: "i", linkageName: "i", scope: null, file: !6, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !5, variables: !10)
28 !8 = distinct !DISubprogram(name: "i", linkageName: "i", scope: null, file: !6, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !5, retainedNodes: !10)
2929 !9 = !DISubroutineType(types: !7)
3030 !10 = !{!11, !13}
3131 !11 = !DILocalVariable(name: "1", scope: !8, file: !6, line: 1, type: !12)
2525 !5 = distinct !DICompileUnit(language: DW_LANG_C, file: !6, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !7)
2626 !6 = !DIFile(filename: "/Users/vsk/Desktop/test.ll", directory: "/")
2727 !7 = !{}
28 !8 = distinct !DISubprogram(name: "i", linkageName: "i", scope: null, file: !6, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !5, variables: !10)
28 !8 = distinct !DISubprogram(name: "i", linkageName: "i", scope: null, file: !6, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !5, retainedNodes: !10)
2929 !9 = !DISubroutineType(types: !7)
3030 !10 = !{!11, !13}
3131 !11 = !DILocalVariable(name: "1", scope: !8, file: !6, line: 1, type: !12)
5252 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (llvm/trunk 237059)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
5353 !1 = !DIFile(filename: "", directory: "/Users/compnerd/Source/llvm")
5454 !2 = !{}
55 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !17)
55 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !17)
5656 !5 = !DISubroutineType(types: !6)
5757 !6 = !{!7, !8, !11, !12, !16}
5858 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3333 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
3434 !1 = !DIFile(filename: "tmp.c", directory: "/Users/tim/llvm/build")
3535 !2 = !{}
36 !4 = distinct !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
36 !4 = distinct !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, retainedNodes: !2)
3737 !5 = !DIFile(filename: "tmp.c", directory: "/Users/tim/llvm/build")
3838 !6 = !DISubroutineType(types: !7)
3939 !7 = !{null}
3131
3232 !0 = distinct !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
3333 !1 = !DIGlobalVariable(name: "myvar_c", scope: !2, file: !3, line: 3, type: !6, isLocal: true, isDefinition: true)
34 !2 = distinct !DISubprogram(name: "testprog", scope: !3, file: !3, line: 1, type: !4, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !7, variables: !10)
34 !2 = distinct !DISubprogram(name: "testprog", scope: !3, file: !3, line: 1, type: !4, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !7, retainedNodes: !10)
3535 !3 = !DIFile(filename: "testprog.c", directory: "/w/llvm/bld")
3636 !4 = !DISubroutineType(types: !5)
3737 !5 = !{!6, !6, !6}
3636 !3 = !{i32 2, !"Dwarf Version", i32 4}
3737 !4 = !{i32 2, !"Debug Info Version", i32 3}
3838 !5 = !{!"clang version 5.0.0 (trunk 292174) (llvm/trunk 292179)"}
39 !6 = distinct !DISubprogram(name: "warn", scope: !1, file: !1, line: 4, type: !7, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !13)
39 !6 = distinct !DISubprogram(name: "warn", scope: !1, file: !1, line: 4, type: !7, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !13)
4040 !7 = !DISubroutineType(types: !8)
4141 !8 = !{!9, !9, !10, !12}
4242 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
5555 !22 = !DILocation(line: 7, column: 2, scope: !6)
5656 !23 = !DILocation(line: 8, column: 9, scope: !6)
5757 !24 = !DILocation(line: 8, column: 2, scope: !6)
58 !25 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !7, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !26)
58 !25 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !7, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !26)
5959 !26 = !{!27, !28, !29}
6060 !27 = !DILocalVariable(name: "dst", arg: 1, scope: !25, file: !1, line: 2, type: !9)
6161 !28 = !DILocalVariable(name: "src", arg: 2, scope: !25, file: !1, line: 2, type: !10)
4949 !3 = !{i32 2, !"Dwarf Version", i32 4}
5050 !4 = !{i32 2, !"Debug Info Version", i32 3}
5151 !5 = !{!"clang version 5.0.0 (trunk 292141) (llvm/trunk 292156)"}
52 !6 = distinct !DISubprogram(name: "nowarn", scope: !1, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !9)
52 !6 = distinct !DISubprogram(name: "nowarn", scope: !1, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9)
5353 !7 = !DISubroutineType(types: !8)
5454 !8 = !{null}
5555 !9 = !{!10}
6363 !17 = !DILocation(line: 4, column: 7, scope: !6)
6464 !18 = !DILocation(line: 5, column: 2, scope: !6)
6565 !19 = !DILocation(line: 6, column: 1, scope: !6)
66 !20 = distinct !DISubprogram(name: "warn", scope: !1, file: !1, line: 7, type: !7, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !21)
66 !20 = distinct !DISubprogram(name: "warn", scope: !1, file: !1, line: 7, type: !7, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !21)
6767 !21 = !{!22}
6868 !22 = !DILocalVariable(name: "buf", scope: !20, file: !1, line: 9, type: !23)
6969 !23 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 4096, elements: !24)
3232 !4 = !{i32 2, !"Debug Info Version", i32 3}
3333 !5 = !{i32 1, !"wchar_size", i32 4}
3434 !6 = !{i32 1, !"min_enum_size", i32 4}
35 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
35 !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
3636 !8 = !DISubroutineType(types: !9)
3737 !9 = !{!10}
3838 !10 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4545 !2 = !{}
4646 !3 = !{i32 2, !"Dwarf Version", i32 4}
4747 !4 = !{i32 2, !"Debug Info Version", i32 3}
48 !5 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !9)
48 !5 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9)
4949 !6 = !DISubroutineType(types: !7)
5050 !7 = !{!8, !8, !8}
5151 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4343 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (http://llvm.org/git/clang.git 15506a21305e212c406f980ed9b6b1bac785df56)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
4444 !1 = !DIFile(filename: "cfi-late.c", directory: "/test")
4545 !2 = !{}
46 !4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !8)
46 !4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !8)
4747 !5 = !DISubroutineType(types: !6)
4848 !6 = !{!7, !7, !7}
4949 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4646 !3 = !{i32 2, !"Dwarf Version", i32 4}
4747 !4 = !{i32 2, !"Debug Info Version", i32 3}
4848 !5 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git 37afcb099ac2b001f4c826da7ca1d077b67a508c) (http://llvm.org/git/llvm.git 5887f1c75b3ba216850c834b186efdd3e54b7d4f)"}
49 !6 = distinct !DISubprogram(name: "fred", scope: !1, file: !1, line: 116, type: !7, isLocal: false, isDefinition: true, scopeLine: 121, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !9)
49 !6 = distinct !DISubprogram(name: "fred", scope: !1, file: !1, line: 116, type: !7, isLocal: false, isDefinition: true, scopeLine: 121, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9)
5050 !7 = !DISubroutineType(types: !2)
5151 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
5252 !9 = !{!10}
2424 !2 = !{}
2525 !3 = !{i32 2, !"Dwarf Version", i32 4}
2626 !4 = !{i32 2, !"Debug Info Version", i32 3}
27 !5 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, variables: !2)
27 !5 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, retainedNodes: !2)
2828 !6 = !DISubroutineType(types: !7)
2929 !7 = !{!8}
3030 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
4848 !2 = !{}
4949 !3 = !{i32 2, !"Dwarf Version", i32 4}
5050 !4 = !{i32 2, !"Debug Info Version", i32 3}
51 !5 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
51 !5 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5252 !6 = !DISubroutineType(types: !7)
5353 !7 = !{!8, !8, !8}
5454 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
6464 !18 = !DILocation(line: 3, column: 12, scope: !5)
6565 !19 = !DILocation(line: 3, column: 11, scope: !5)
6666 !20 = !DILocation(line: 3, column: 3, scope: !5)
67 !21 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 7, type: !22, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
67 !21 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 7, type: !22, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6868 !22 = !DISubroutineType(types: !23)
6969 !23 = !{!8, !14}
7070 !24 = !DILocalVariable(name: "var", arg: 1, scope: !21, file: !1, line: 7, type: !14)
5050 !2 = !{}
5151 !3 = !{i32 2, !"Dwarf Version", i32 4}
5252 !4 = !{i32 2, !"Debug Info Version", i32 3}
53 !5 = distinct !DISubprogram(name: "factorial", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
53 !5 = distinct !DISubprogram(name: "factorial", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5454 !6 = !DISubroutineType(types: !7)
5555 !7 = !{!8, !8}
5656 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3232 !2 = !{}
3333 !3 = !{i32 2, !"Dwarf Version", i32 4}
3434 !4 = !{i32 2, !"Debug Info Version", i32 3}
35 !5 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !9)
35 !5 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9)
3636 !6 = !DISubroutineType(types: !7)
3737 !7 = !{!8, !8, !8}
3838 !8 = !DIBasicType(name: "long int", size: 32, encoding: DW_ATE_signed)
4646 !16 = !DILocation(line: 2, column: 1, scope: !5)
4747 !17 = !DILocation(line: 4, column: 12, scope: !5)
4848 !18 = !DILocation(line: 4, column: 3, scope: !5)
49 !19 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !20, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, variables: !2)
49 !19 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !20, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, retainedNodes: !2)
5050 !20 = !DISubroutineType(types: !21)
5151 !21 = !{!22}
5252 !22 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
5757 !30 = !{!"foo1", !".text"}
5858 !31 = !{!"foo2", !".text"}
5959 !32 = !{!"foo3", !".text"}
60 !33 = distinct !DISubprogram(name: "foo1", scope: !34, file: !34, line: 84, type: !35, isLocal: false, isDefinition: true, scopeLine: 85, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !44)
60 !33 = distinct !DISubprogram(name: "foo1", scope: !34, file: !34, line: 84, type: !35, isLocal: false, isDefinition: true, scopeLine: 85, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !44)
6161 !34 = !DIFile(filename: "foo.c", directory: "/path")
6262 !35 = !DISubroutineType(types: !36)
6363 !36 = !{!37, !38, !39, !40, !41, !42, !43, !37}
5858 !30 = !{!"foo1", !".text"}
5959 !31 = !{!"foo2", !".text"}
6060 !32 = !{!"foo3", !".text"}
61 !33 = distinct !DISubprogram(name: "foo1", scope: !34, file: !34, line: 84, type: !35, isLocal: false, isDefinition: true, scopeLine: 85, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !44)
61 !33 = distinct !DISubprogram(name: "foo1", scope: !34, file: !34, line: 84, type: !35, isLocal: false, isDefinition: true, scopeLine: 85, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !44)
6262 !34 = !DIFile(filename: "foo.c", directory: "/path")
6363 !35 = !DISubroutineType(types: !36)
6464 !36 = !{!37, !38, !39, !40, !41, !42, !43, !37}
3838
3939 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "QuIC LLVM Hexagon Clang version 6.1-pre-unknown, (git://git-hexagon-aus.quicinc.com/llvm/clang-mainline.git e9382867661454cdf44addb39430741578e9765c) (llvm/llvm-mainline.git 36412bb1fcf03ed426d4437b41198bae066675ac)", isOptimized: true, emissionKind: FullDebug, file: !28, enums: !2, retainedTypes: !2, globals: !2)
4040 !2 = !{}
41 !5 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1, file: !28, scope: null, type: !7, variables: !11)
41 !5 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1, file: !28, scope: null, type: !7, retainedNodes: !11)
4242 !6 = !DIFile(filename: "hwloop-dbg.c", directory: "/usr2/kparzysz/s.hex/t")
4343 !7 = !DISubroutineType(types: !8)
4444 !8 = !{null, !9, !9}
8484 !3 = !{i32 2, !"Dwarf Version", i32 4}
8585 !4 = !{i32 2, !"Debug Info Version", i32 3}
8686 !5 = !{!"clang version 3.9.0 (http://llvm.org/git/clang.git 4b380bc1db8b0c72bdbdaf0e4697b1a84100a369) (http://llvm.org/git/llvm.git 6217a62bc009d55e160dbb694f2e94a22c80809f)"}
87 !6 = distinct !DISubprogram(name: "fred", scope: !1, file: !1, line: 138, type: !7, isLocal: false, isDefinition: true, scopeLine: 139, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !25)
87 !6 = distinct !DISubprogram(name: "fred", scope: !1, file: !1, line: 138, type: !7, isLocal: false, isDefinition: true, scopeLine: 139, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !25)
8888 !7 = !DISubroutineType(types: !8)
8989 !8 = !{null, !9, !15}
9090 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 32, align: 32)
122122 !9 = !{!"clang version 6.0.0 "}
123123 !10 = !DIExpression(DW_OP_plus_uconst, 12)
124124 !11 = !DIExpression(DW_OP_plus_uconst, 8, DW_OP_deref)
125 !12 = distinct !DISubprogram(name: "fun", linkageName: "fun", scope: !1, file: !1, line: 9, type: !13, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
125 !12 = distinct !DISubprogram(name: "fun", linkageName: "fun", scope: !1, file: !1, line: 9, type: !13, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
126126 !13 = !DISubroutineType(types: !14)
127127 !14 = !{!15}
128128 !15 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "string", file: !1, line: 1, size: 96, elements: !16, identifier: ".?AUstring@@")
141141 !28 = !DIExpression(DW_OP_constu, 4, DW_OP_minus)
142142 !29 = !DILocation(line: 11, scope: !12)
143143 !30 = !DILocation(line: 12, scope: !12)
144 !31 = distinct !DISubprogram(name: "len", linkageName: "len", scope: !1, file: !1, line: 14, type: !32, isLocal: false, isDefinition: true, scopeLine: 14, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
144 !31 = distinct !DISubprogram(name: "len", linkageName: "len", scope: !1, file: !1, line: 14, type: !32, isLocal: false, isDefinition: true, scopeLine: 14, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
145145 !32 = !DISubroutineType(types: !33)
146146 !33 = !{!18}
147147 !34 = !DILocation(line: 15, scope: !31)
2222 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2323 !1 = !DIFile(filename: "test.ll", directory: "")
2424 !2 = !{}
25 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
25 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2626 !5 = !DIFile(filename: "test.c", directory: "")
2727 !6 = !DISubroutineType(types: !7)
2828 !7 = !{!8, !8}
2222 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2323 !1 = !DIFile(filename: "test.ll", directory: "")
2424 !2 = !{}
25 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
25 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2626 !5 = !DIFile(filename: "test.c", directory: "")
2727 !6 = !DISubroutineType(types: !7)
2828 !7 = !{!8, !8}
3333 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
3434 !1 = !DIFile(filename: "test.ll", directory: "")
3535 !2 = !{}
36 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
36 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
3737 !5 = !DIFile(filename: "test.c", directory: "")
3838 !6 = !DISubroutineType(types: !7)
3939 !7 = !{!8, !8}
2424 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2525 !1 = !DIFile(filename: "test.ll", directory: "")
2626 !2 = !{}
27 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
27 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2828 !5 = !DIFile(filename: "test.c", directory: "")
2929 !6 = !DISubroutineType(types: !7)
3030 !7 = !{!8, !8}
2222 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2323 !1 = !DIFile(filename: "test.ll", directory: "")
2424 !2 = !{}
25 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
25 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2626 !5 = !DIFile(filename: "test.c", directory: "")
2727 !6 = !DISubroutineType(types: !7)
2828 !7 = !{!8, !8}
5959 !16 = distinct !DIGlobalVariable(name: "d", scope: !0, file: !6, line: 8, type: !12, isLocal: false, isDefinition: true)
6060 !17 = !{i32 2, !"Debug Info Version", i32 3}
6161 !18 = !{i32 7, !"PIC Level", i32 2}
62 !19 = distinct !DISubprogram(name: "e", scope: !6, file: !6, line: 9, type: !20, isLocal: false, isDefinition: true, scopeLine: 9, isOptimized: true, unit: !0, variables: !22)
62 !19 = distinct !DISubprogram(name: "e", scope: !6, file: !6, line: 9, type: !20, isLocal: false, isDefinition: true, scopeLine: 9, isOptimized: true, unit: !0, retainedNodes: !22)
6363 !20 = !DISubroutineType(types: !21)
6464 !21 = !{!12}
6565 !22 = !{!23}
4747 !4 = !{i32 7, !"PIC Level", i32 2}
4848 !5 = distinct !DISubprogram(name: "f", scope: !6, file: !6, line: 8, type: !7,
4949 isLocal: false, isDefinition: true, scopeLine: 8, isOptimized: true, unit: !0,
50 variables: !10)
50 retainedNodes: !10)
5151 !6 = !DIFile(filename:
5252 "/tmp/test.c",
5353 directory: "/tmp")
5353 !7 = !{i32 2, !"Debug Info Version", i32 3}
5454 !8 = distinct !DISubprogram(name: "foo", linkageName: "func",
5555 scope: !1, file: !1, line: 3, type: !9, isLocal: false, isDefinition: true, scopeLine: 3,
56 flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
56 flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5757 ; CHECK: [[FUNCNODE]] = distinct !DISubprogram(name: "foo",
5858 ; CHECK-SAME: type: [[STYPENODE:![0-9]+]]
5959 ; CHECK-SAME: unit: [[CUNODE]],
1818
1919 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1", isOptimized: true, emissionKind: FullDebug, file: !21, enums: !1, retainedTypes: !1, globals: !1, imports: !1)
2020 !1 = !{}
21 !5 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, file: !21, scope: null, type: !7, variables: !13)
21 !5 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, file: !21, scope: null, type: !7, retainedNodes: !13)
2222 !6 = !DIFile(filename: "dbg.c", directory: "/src")
2323 !7 = !DISubroutineType(types: !8)
2424 !8 = !{!9, !9, !10}
5555 !3 = !{i32 2, !"Dwarf Version", i32 4}
5656 !4 = !{i32 2, !"Debug Info Version", i32 3}
5757 !5 = !{!"clang version 6.0.0"}
58 !6 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: true, unit: !0, variables: !9)
58 !6 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: true, unit: !0, retainedNodes: !9)
5959 !7 = !DISubroutineType(types: !8)
6060 !8 = !{null}
6161 !9 = !{!10}
6464 !5 = !{i32 1, !"wchar_size", i32 4}
6565 !6 = !{i32 7, !"PIC Level", i32 2}
6666 !7 = !{!"clang version 6.0.0"}
67 !8 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !12)
67 !8 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
6868 !9 = !DISubroutineType(types: !10)
6969 !10 = !{!11, !11, !11, !11, !11, !11}
7070 !11 = !DIBasicType(name: "long long int", size: 64, encoding: DW_ATE_signed)
319319 !260 = !DIGlobalVariable(name: "tmp1", scope: null, file: !2, line: 88, type: !13, isLocal: true, isDefinition: true)
320320 !261 = !{i32 2, !"Dwarf Version", i32 4}
321321 !262 = !{i32 1, !"Debug Info Version", i32 3}
322 !263 = distinct !DISubprogram(name: "compute_rhs", scope: !8, file: !8, line: 1767, type: !264, isLocal: true, isDefinition: true, scopeLine: 1767, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !7, variables: !266)
322 !263 = distinct !DISubprogram(name: "compute_rhs", scope: !8, file: !8, line: 1767, type: !264, isLocal: true, isDefinition: true, scopeLine: 1767, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !7, retainedNodes: !266)
323323 !264 = !DISubroutineType(types: !265)
324324 !265 = !{null}
325325 !266 = !{!267, !268, !269, !270, !271, !272, !273, !274, !275, !276, !277, !278, !279, !280}
6060 !2 = !{}
6161 !3 = !{!4}
6262 !4 = !DIBasicType(name: "double", size: 64, align: 64, encoding: DW_ATE_float)
63 !6 = distinct !DISubprogram(name: "_php_math_round", scope: !1, file: !1, line: 15, type: !7, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !10)
63 !6 = distinct !DISubprogram(name: "_php_math_round", scope: !1, file: !1, line: 15, type: !7, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !10)
6464 !7 = !DISubroutineType(types: !8)
6565 !8 = !{!4, !4, !9, !9}
6666 !9 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
7272 !15 = !DILocalVariable(name: "f2", scope: !6, file: !1, line: 17, type: !4)
7373 !16 = !DILocalVariable(name: "tmp_value", scope: !6, file: !1, line: 18, type: !4)
7474 !17 = !DILocalVariable(name: "precision_places", scope: !6, file: !1, line: 19, type: !9)
75 !18 = distinct !DISubprogram(name: "php_intpow10", scope: !1, file: !1, line: 1, type: !19, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !21)
75 !18 = distinct !DISubprogram(name: "php_intpow10", scope: !1, file: !1, line: 1, type: !19, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !21)
7676 !19 = !DISubroutineType(types: !20)
7777 !20 = !{!4, !9}
7878 !21 = !{!22}
2323 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2424 !1 = !DIFile(filename: "/tmp/unwind-dw2.c", directory: "/tmp")
2525 !2 = !{}
26 !4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
26 !4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, retainedNodes: !2)
2727 !5 = !DIFile(filename: "/tmp/unwind-dw2.c", directory: "/tmp")
2828 !6 = !DISubroutineType(types: !7)
2929 !7 = !{null}
5555 !12 = !{i32 2, !"Dwarf Version", i32 4}
5656 !13 = !{i32 2, !"Debug Info Version", i32 3}
5757 !14 = !{!"clang version 3.9.0 (trunk 273884) (llvm/trunk 273897)"}
58 !15 = distinct !DISubprogram(name: "usage", scope: !1, file: !1, line: 15, type: !16, isLocal: false, isDefinition: true, scopeLine: 15, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !21)
58 !15 = distinct !DISubprogram(name: "usage", scope: !1, file: !1, line: 15, type: !16, isLocal: false, isDefinition: true, scopeLine: 15, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !21)
5959 !16 = !DISubroutineType(types: !17)
6060 !17 = !{!18, !19}
6161 !18 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
484484 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 3.9.0 (trunk 266005) (llvm/trunk 266105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3)
485485 !2 = !DIFile(filename: "test.c", directory: "/")
486486 !3 = !{}
487 !5 = distinct !DISubprogram(name: "test", scope: !2, file: !2, line: 10, type: !6, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: true, unit: !1, variables: !3)
487 !5 = distinct !DISubprogram(name: "test", scope: !2, file: !2, line: 10, type: !6, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: true, unit: !1, retainedNodes: !3)
488488 !6 = !DISubroutineType(types: !3)
489489 !7 = !DILocalVariable(name: "nzcnt", scope: !5, file: !2, line: 15, type: !8)
490490 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
385385 !1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3)
386386 !2 = !DIFile(filename: "test.cpp", directory: ".")
387387 !3 = !{}
388 !5 = distinct !DISubprogram(name: "test12", scope: !2, file: !2, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !1, variables: !3)
388 !5 = distinct !DISubprogram(name: "test12", scope: !2, file: !2, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !1, retainedNodes: !3)
389389 !6 = !DISubroutineType(types: !7)
390390 !7 = !{null}
391391 !8 = !DILocation(line: 1, scope: !5)
199199 !llvm.module.flags = !{!48}
200200
201201 !0 = !DILocalVariable(name: "a", line: 1921, arg: 1, scope: !1, file: !2, type: !9)
202 !1 = distinct !DISubprogram(name: "__divsc3", linkageName: "__divsc3", line: 1922, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !3, scopeLine: 1922, file: !45, scope: !2, type: !4, variables: !43)
202 !1 = distinct !DISubprogram(name: "__divsc3", linkageName: "__divsc3", line: 1922, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !3, scopeLine: 1922, file: !45, scope: !2, type: !4, retainedNodes: !43)
203203 !2 = !DIFile(filename: "libgcc2.c", directory: "/Users/yash/clean/LG.D/gcc/../../llvmgcc/gcc")
204204 !3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !45, enums: !47, retainedTypes: !47, imports: null)
205205 !4 = !DISubroutineType(types: !5)
3838 !5 = !DIGlobalVariable(name: "ret", scope: !1, file: !1, line: 7, type: !6, isLocal: false, isDefinition: true)
3939 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4040 !7 = !{i32 1, !"Debug Info Version", i32 3}
41 !8 = distinct !DISubprogram(name: "bar", linkageName: "bar", scope: !1, file: !1, line: 17, type: !9, isLocal: false, isDefinition: true, scopeLine: 17, virtualIndex: 6, isOptimized: true, unit: !0, variables: !17)
41 !8 = distinct !DISubprogram(name: "bar", linkageName: "bar", scope: !1, file: !1, line: 17, type: !9, isLocal: false, isDefinition: true, scopeLine: 17, virtualIndex: 6, isOptimized: true, unit: !0, retainedNodes: !17)
4242 !9 = !DISubroutineType(types: !10)
4343 !10 = !{!11, !12}
4444 !11 = !DIDerivedType(tag: DW_TAG_pointer_type, scope: !1, file: !1, baseType: null, size: 64, align: 64)
2525 !llvm.module.flags = !{!20}
2626
2727 !0 = !DILocalVariable(name: "y", line: 2, arg: 1, scope: !1, file: !2, type: !6)
28 !1 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !3, scopeLine: 2, file: !18, scope: !2, type: !4, variables: !15)
28 !1 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !3, scopeLine: 2, file: !18, scope: !2, type: !4, retainedNodes: !15)
2929 !2 = !DIFile(filename: "f.c", directory: "/tmp")
3030 !3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !18, enums: !19, retainedTypes: !19, imports: null)
3131 !4 = !DISubroutineType(types: !5)
3232 !5 = !{!6, !6}
3333 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3434 !7 = !DILocalVariable(name: "x", line: 6, arg: 1, scope: !8, file: !2, type: !6)
35 !8 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !3, scopeLine: 6, file: !18, scope: !2, type: !4, variables: !16)
35 !8 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !3, scopeLine: 6, file: !18, scope: !2, type: !4, retainedNodes: !16)
3636 !9 = !DILocation(line: 3, scope: !10)
3737 !10 = distinct !DILexicalBlock(line: 2, column: 0, file: !18, scope: !1)
3838 !11 = !{i32 1}
1717 !llvm.dbg.cu = !{!2}
1818 !llvm.module.flags = !{!19}
1919
20 !0 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 3, file: !17, scope: !1, type: !3, variables: !16)
20 !0 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 3, file: !17, scope: !1, type: !3, retainedNodes: !16)
2121 !1 = !DIFile(filename: "one.c", directory: "/private/tmp")
2222 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 117922)", isOptimized: true, emissionKind: FullDebug, file: !17, enums: !18, retainedTypes: !18, imports: null)
2323 !3 = !DISubroutineType(types: !4)
7878 !llvm.dbg.cu = !{!2}
7979 !llvm.module.flags = !{!33}
8080
81 !0 = distinct !DISubprogram(name: "gcd", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !31, scope: !1, type: !3, variables: !29)
81 !0 = distinct !DISubprogram(name: "gcd", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, file: !31, scope: !1, type: !3, retainedNodes: !29)
8282 !1 = !DIFile(filename: "rem_small.c", directory: "/private/tmp")
8383 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 124117)", isOptimized: true, emissionKind: FullDebug, file: !31, enums: !32, retainedTypes: !32, imports: null)
8484 !3 = !DISubroutineType(types: !4)
8585 !4 = !{!5}
8686 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "long int", size: 64, align: 64, encoding: DW_ATE_signed)
87 !6 = distinct !DISubprogram(name: "main", line: 25, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2, file: !31, scope: !1, type: !7, variables: !30)
87 !6 = distinct !DISubprogram(name: "main", line: 25, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2, file: !31, scope: !1, type: !7, retainedNodes: !30)
8888 !7 = !DISubroutineType(types: !8)
8989 !8 = !{!9}
9090 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2828 !llvm.module.flags = !{!22}
2929
3030 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21, imports: null)
31 !1 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, file: !20, scope: !2, type: !3, variables: !19)
31 !1 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, file: !20, scope: !2, type: !3, retainedNodes: !19)
3232 !2 = !DIFile(filename: "a.c", directory: "/private/tmp")
3333 !3 = !DISubroutineType(types: !4)
3434 !4 = !{!5}
4747 !2 = !{}
4848 !3 = !{i32 2, !"Dwarf Version", i32 4}
4949 !4 = !{i32 2, !"Debug Info Version", i32 3}
50 !5 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !9)
50 !5 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9)
5151 !6 = !DISubroutineType(types: !7)
5252 !7 = !{!8}
5353 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
4141 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 256088) (llvm/trunk 256097)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
4242 !1 = !DIFile(filename: "test.cpp", directory: "/mnt/extra")
4343 !2 = !{}
44 !4 = distinct !DISubprogram(name: "fn1", linkageName: "_Z3fn1v", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !7)
44 !4 = distinct !DISubprogram(name: "fn1", linkageName: "_Z3fn1v", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !7)
4545 !5 = !DISubroutineType(types: !6)
4646 !6 = !{null}
4747 !7 = !{!8}
9191 !6 = !DISubroutineType(types: !7)
9292 !7 = !{!10, !9}
9393
94 !8 = distinct !DISubprogram(name: "f0", file: !3, line: 5, type: !6, isLocal: false, isDefinition: true, unit: !2, variables: !5)
94 !8 = distinct !DISubprogram(name: "f0", file: !3, line: 5, type: !6, isLocal: false, isDefinition: true, unit: !2, retainedNodes: !5)
9595
9696 !9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s", elements: !11)
9797 !10 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
105105 !17 = !DIExpression()
106106 !18 = !DILocation(line: 5, scope: !8)
107107
108 !19 = distinct !DISubprogram(name: "f1", file: !3, line: 5, type: !6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, unit: !2, variables: !5)
108 !19 = distinct !DISubprogram(name: "f1", file: !3, line: 5, type: !6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, unit: !2, retainedNodes: !5)
109109 !20 = !DILocalVariable(name: "input", arg: 1, scope: !19, file: !3, line: 5, type: !9)
110110 !21 = !DILocation(line: 5, scope: !19)
111 !22 = distinct !DISubprogram(name: "f2", file: !3, line: 5, type: !6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, unit: !2, variables: !5)
111 !22 = distinct !DISubprogram(name: "f2", file: !3, line: 5, type: !6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, unit: !2, retainedNodes: !5)
112112 !23 = !DILocalVariable(name: "input", arg: 1, scope: !22, file: !3, line: 5, type: !9)
113113 !24 = !DILocation(line: 5, scope: !22)
146146 !20 = !{!15, !21}
147147 !21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
148148 !22 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4)
149 !24 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barii", scope: !1, file: !1, line: 11, type: !25, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !28)
149 !24 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barii", scope: !1, file: !1, line: 11, type: !25, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !28)
150150 !25 = !DISubroutineType(types: !26)
151151 !26 = !{null, !27, !27}
152152 !27 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
156156 !31 = !DILocalVariable(name: "temp", scope: !24, file: !1, line: 12, type: !15)
157157 !32 = !DILocalVariable(name: "var1", scope: !24, file: !1, line: 17, type: !4)
158158 !33 = !DILocalVariable(name: "var2", scope: !24, file: !1, line: 18, type: !4)
159 !34 = distinct !DISubprogram(name: "AAA3", linkageName: "_ZN4AAA3C2EPKc", scope: !4, file: !1, line: 5, type: !12, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, declaration: !11, variables: !35)
159 !34 = distinct !DISubprogram(name: "AAA3", linkageName: "_ZN4AAA3C2EPKc", scope: !4, file: !1, line: 5, type: !12, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, declaration: !11, retainedNodes: !35)
160160 !35 = !{!36, !38}
161161 !36 = !DILocalVariable(name: "this", arg: 1, scope: !34, type: !37, flags: DIFlagArtificial | DIFlagObjectPointer)
162162 !37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64, align: 64)
163163 !38 = !DILocalVariable(name: "value", arg: 2, scope: !34, file: !1, line: 5, type: !15)
164 !39 = distinct !DISubprogram(name: "operator=", linkageName: "_ZN4AAA3aSEPKc", scope: !4, file: !1, line: 6, type: !12, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, declaration: !17, variables: !40)
164 !39 = distinct !DISubprogram(name: "operator=", linkageName: "_ZN4AAA3aSEPKc", scope: !4, file: !1, line: 6, type: !12, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, declaration: !17, retainedNodes: !40)
165165 !40 = !{!41, !42}
166166 !41 = !DILocalVariable(name: "this", arg: 1, scope: !39, type: !37, flags: DIFlagArtificial | DIFlagObjectPointer)
167167 !42 = !DILocalVariable(name: "value", arg: 2, scope: !39, file: !1, line: 6, type: !15)
6161 !3 = !{i32 2, !"Dwarf Version", i32 4}
6262 !4 = !{i32 2, !"Debug Info Version", i32 3}
6363 !5 = !{i32 1, !"wchar_size", i32 4}
64 !6 = distinct !DISubprogram(name: "fn1", linkageName: "_Z3fn1v", scope: !7, file: !7, line: 4, type: !8, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !15)
64 !6 = distinct !DISubprogram(name: "fn1", linkageName: "_Z3fn1v", scope: !7, file: !7, line: 4, type: !8, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !15)
6565 !7 = !DIFile(filename: "./repro.cpp", directory: "/home/mdavis/bugs/bz-189869")
6666 !8 = !DISubroutineType(types: !9)
6767 !9 = !{}
7676 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.7.0 (trunk 227074)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
7777 !1 = !DIFile(filename: "dbg-combine.c", directory: "/home/probinson/projects/scratch")
7878 !2 = !{}
79 !4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
79 !4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, retainedNodes: !2)
8080 !5 = !DIFile(filename: "dbg-combine.c", directory: "/home/probinson/projects/scratch")
8181 !6 = !DISubroutineType(types: !7)
8282 !7 = !{!8}
1818 !3 = !{i32 2, !"Dwarf Version", i32 4}
1919 !4 = !{i32 2, !"Debug Info Version", i32 3}
2020 !5 = !{!"clang version 3.9.0 (trunk 267219)"}
21 !6 = distinct !DISubprogram(name: "baz", linkageName: "_Z3bazv", scope: !1, file: !1, line: 3, type: !7, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
21 !6 = distinct !DISubprogram(name: "baz", linkageName: "_Z3bazv", scope: !1, file: !1, line: 3, type: !7, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2222 !7 = !DISubroutineType(types: !8)
2323 !8 = !{null}
2424 !9 = !DILocation(line: 4, column: 3, scope: !10)
4747 !5 = !{!"clang version 4.0.0"}
4848 !6 = !{i32 2, !"Dwarf Version", i32 4}
4949 !7 = !{i32 2, !"Debug Info Version", i32 3}
50 !36 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !37, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !40)
50 !36 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !37, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !40)
5151 !37 = !DISubroutineType(types: !38)
5252 !38 = !{!39, !39}
5353 !39 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
5454 !40 = !{!41}
5555 !41 = !DILocalVariable(name: "x", arg: 1, scope: !36, file: !1, line: 1, type: !39)
5656 !43 = !DIExpression()
57 !50 = distinct !DISubprogram(name: "bar", scope: !4, file: !4, line: 3, type: !51, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !3, variables: !2)
57 !50 = distinct !DISubprogram(name: "bar", scope: !4, file: !4, line: 3, type: !51, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !3, retainedNodes: !2)
5858 !51 = !DISubroutineType(types: !2)
5959 !52 = !DILocation(line: 1, scope: !36, inlinedAt: !53)
6060 !53 = distinct !DILocation(line: 5, scope: !50)
4040 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 249520)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
4141 !1 = !DIFile(filename: "foo.cpp", directory: "foo")
4242 !2 = !{}
43 !4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
43 !4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
4444 !5 = !DISubroutineType(types: !6)
4545 !6 = !{null}
4646 !7 = !{i32 2, !"Dwarf Version", i32 4}
3737 !8 = !{i32 2, !"Dwarf Version", i32 4}
3838 !9 = !{i32 2, !"Debug Info Version", i32 3}
3939 !11 = !{!"clang"}
40 !12 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 4, type: !13, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, unit: !2, variables: !4)
40 !12 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 4, type: !13, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
4141 !13 = !DISubroutineType(types: !14)
4242 !14 = !{!7}
4343 !16 = !DILocation(line: 6, column: 13, scope: !12)
2121 !2 = !{}
2222 !3 = !{i32 2, !"Dwarf Version", i32 4}
2323 !4 = !{i32 2, !"Debug Info Version", i32 3}
24 !5 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
24 !5 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2525 !6 = !DISubroutineType(types: !7)
2626 !7 = !{null}
2727 !8 = !DILocation(line: 1, column: 1, scope: !5)
3838 !2 = !{}
3939 !3 = !{i32 6}
4040 !4 = !{i32 4}
41 !5 = distinct !DISubprogram(name: "foo", linkageName: "foo", scope: null, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, variables: !7)
41 !5 = distinct !DISubprogram(name: "foo", linkageName: "foo", scope: null, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, retainedNodes: !7)
4242 !6 = !DISubroutineType(types: !2)
4343 !7 = !{!8, !10, !12, !13}
4444 !8 = !DILocalVariable(name: "1", scope: !5, file: !1, line: 1, type: !9)
129129 !9 = !{i32 2, !"Debug Info Version", i32 3}
130130 !10 = !{i32 1, !"PIC Level", i32 2}
131131 !11 = !{!"clang version 4.0.0 (trunk 281495)"}
132 !12 = distinct !DISubprogram(name: "test_return1", scope: !3, file: !3, line: 3, type: !13, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !15)
132 !12 = distinct !DISubprogram(name: "test_return1", scope: !3, file: !3, line: 3, type: !13, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !15)
133133 !13 = !DISubroutineType(types: !14)
134134 !14 = !{!7, !6}
135135 !15 = !{!16}
142142 !22 = !{!"omnipotent char", !23, i64 0}
143143 !23 = !{!"Simple C/C++ TBAA"}
144144 !24 = !DILocation(line: 4, column: 5, scope: !12)
145 !25 = distinct !DISubprogram(name: "test_return2", scope: !3, file: !3, line: 7, type: !13, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !26)
145 !25 = distinct !DISubprogram(name: "test_return2", scope: !3, file: !3, line: 7, type: !13, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !26)
146146 !26 = !{!27, !28}
147147 !27 = !DILocalVariable(name: "ptr", arg: 1, scope: !25, file: !3, line: 7, type: !6)
148148 !28 = !DILocalVariable(name: "value", scope: !25, file: !3, line: 8, type: !7)
150150 !30 = !DILocation(line: 9, column: 14, scope: !25)
151151 !31 = !DILocation(line: 8, column: 17, scope: !25)
152152 !32 = !DILocation(line: 10, column: 5, scope: !25)
153 !33 = distinct !DISubprogram(name: "test_return3", scope: !3, file: !3, line: 13, type: !13, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !34)
153 !33 = distinct !DISubprogram(name: "test_return3", scope: !3, file: !3, line: 13, type: !13, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !34)
154154 !34 = !{!35}
155155 !35 = !DILocalVariable(name: "ptr", arg: 1, scope: !33, file: !3, line: 13, type: !6)
156156 !36 = !DILocation(line: 13, column: 39, scope: !33)
157157 !37 = !DILocation(line: 14, column: 12, scope: !33)
158158 !38 = !DILocation(line: 14, column: 17, scope: !33)
159159 !39 = !DILocation(line: 14, column: 5, scope: !33)
160 !40 = distinct !DISubprogram(name: "test_return4", scope: !3, file: !3, line: 18, type: !41, isLocal: false, isDefinition: true, scopeLine: 18, isOptimized: true, unit: !2, variables: !4)
160 !40 = distinct !DISubprogram(name: "test_return4", scope: !3, file: !3, line: 18, type: !41, isLocal: false, isDefinition: true, scopeLine: 18, isOptimized: true, unit: !2, retainedNodes: !4)
161161 !41 = !DISubroutineType(types: !42)
162162 !42 = !{!7}
163163 !43 = !DILocation(line: 19, column: 13, scope: !40)
165165 !45 = !{!"any pointer", !22, i64 0}
166166 !46 = !DILocation(line: 19, column: 12, scope: !40)
167167 !47 = !DILocation(line: 19, column: 5, scope: !40)
168 !48 = distinct !DISubprogram(name: "test_return5", scope: !3, file: !3, line: 22, type: !41, isLocal: false, isDefinition: true, scopeLine: 22, isOptimized: true, unit: !2, variables: !49)
168 !48 = distinct !DISubprogram(name: "test_return5", scope: !3, file: !3, line: 22, type: !41, isLocal: false, isDefinition: true, scopeLine: 22, isOptimized: true, unit: !2, retainedNodes: !49)
169169 !49 = !{!50}
170170 !50 = !DILocalVariable(name: "value", scope: !48, file: !3, line: 23, type: !7)
171171 !51 = !DILocation(line: 23, column: 26, scope: !48)
172172 !52 = !DILocation(line: 23, column: 25, scope: !48)
173173 !53 = !DILocation(line: 23, column: 17, scope: !48)
174174 !54 = !DILocation(line: 24, column: 5, scope: !48)
175 !55 = distinct !DISubprogram(name: "test_return6", scope: !3, file: !3, line: 27, type: !41, isLocal: false, isDefinition: true, scopeLine: 27, isOptimized: true, unit: !2, variables: !4)
175 !55 = distinct !DISubprogram(name: "test_return6", scope: !3, file: !3, line: 27, type: !41, isLocal: false, isDefinition: true, scopeLine: 27, isOptimized: true, unit: !2, retainedNodes: !4)
176176 !56 = !DILocation(line: 28, column: 13, scope: !55)
177177 !57 = !DILocation(line: 28, column: 12, scope: !55)
178178 !58 = !DILocation(line: 28, column: 20, scope: !55)
6464 !13 = !{!0, !7}
6565 !14 = !{i32 2, !"Dwarf Version", i32 2}
6666 !15 = !{i32 2, !"Debug Info Version", i32 3}
67 !16 = distinct !DISubprogram(name: "fpuop_arithmetic", linkageName: "_Z16fpuop_arithmeticjj", scope: !2, file: !2, line: 11, type: !17, isLocal: false, isDefinition: true, scopeLine: 13, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !10, variables: !20)
67 !16 = distinct !DISubprogram(name: "fpuop_arithmetic", linkageName: "_Z16fpuop_arithmeticjj", scope: !2, file: !2, line: 11, type: !17, isLocal: false, isDefinition: true, scopeLine: 13, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !10, retainedNodes: !20)
6868 !17 = !DISubroutineType(types: !18)
6969 !18 = !{null, !19, !19}
7070 !19 = !DIBasicType(name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
8585 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.9.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
8686 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
8787 !2 = !{}
88 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
88 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
8989 !5 = !DISubroutineType(types: !6)
9090 !6 = !{null, !7}
9191 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
92 !8 = distinct !DISubprogram(name: "will_be_inlined", linkageName: "\01?will_be_inlined@@YAXXZ", scope: !1, file: !1, line: 3, type: !9, isLocal: true, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
92 !8 = distinct !DISubprogram(name: "will_be_inlined", linkageName: "\01?will_be_inlined@@YAXXZ", scope: !1, file: !1, line: 3, type: !9, isLocal: true, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
9393 !9 = !DISubroutineType(types: !10)
9494 !10 = !{null}
9595 !11 = !{i32 2, !"CodeView", i32 1}
6262 !5 = !{i32 1, !"wchar_size", i32 2}
6363 !6 = !{i32 7, !"PIC Level", i32 2}
6464 !7 = !{!"clang version 6.0.0 "}
65 !8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
65 !8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
6666 !9 = !DISubroutineType(types: !10)
6767 !10 = !{null}
6868 !11 = !DILocation(line: 3, column: 3, scope: !8)
4747 !5 = !{i32 2, !"Dwarf Version", i32 4}
4848 !6 = !{i32 2, !"Debug Info Version", i32 3}
4949 !7 = !{i32 1, !"PIC Level", i32 2}
50 !8 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 7, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, variables: !10)
50 !8 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 7, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, retainedNodes: !10)
5151 !9 = !DISubroutineType(types: !3)
5252 !10 = !{!11}
5353 !11 = !DILocalVariable(name: "e", scope: !8, file: !1, line: 8, type: !12)
3939 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.9.0 (trunk 259383) (llvm/trunk 259385)", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
4040 !1 = !DIFile(filename: "t.c", directory: "/home/majnemer/llvm/src")
4141 !2 = !{}
42 !4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, variables: !2)
42 !4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, retainedNodes: !2)
4343 !5 = !DISubroutineType(types: !2)
4444 !6 = !{i32 2, !"Dwarf Version", i32 4}
4545 !7 = !{i32 2, !"Debug Info Version", i32 3}
6060 !8 = !{i32 2, !"Debug Info Version", i32 3}
6161 !9 = !{i32 1, !"PIC Level", i32 2}
6262 !10 = !{!"clang version 5.0.0"}
63 !11 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 4, type: !12, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !2, variables: !4)
63 !11 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 4, type: !12, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
6464 !12 = !DISubroutineType(types: !13)
6565 !13 = !{!6}
6666 !14 = !DILocation(line: 7, column: 4, scope: !11)
116116 ; CHECK-SAME: flags: DIFlagArtificial,
117117 ; CHECK-SAME: isOptimized: true,
118118 ; CHECK-SAME: unit: !0,
119 ; CHECK-SAME: variables: [[VARS:![0-9]+]]
119 ; CHECK-SAME: retainedNodes: [[VARS:![0-9]+]]
120120
121121 ; CHECK: distinct !DISubprogram(name: "OUTLINED_FUNCTION_0",
122122 ; CHECK-SAME: scope: !1,
127127 ; CHECK-SAME: flags: DIFlagArtificial,
128128 ; CHECK-SAME: isOptimized: true,
129129 ; CHECK-SAME: unit: !0,
130 ; CHECK-SAME: variables: [[VARS]]
130 ; CHECK-SAME: retainedNodes: [[VARS]]
131131
132132 attributes #0 = { noinline noredzone nounwind optnone ssp uwtable "no-frame-pointer-elim"="true" }
133133 attributes #1 = { nounwind readnone speculatable }
145145 !5 = !{i32 1, !"wchar_size", i32 4}
146146 !6 = !{i32 7, !"PIC Level", i32 2}
147147 !7 = !{!"clang"}
148 !8 = distinct !DISubprogram(name: "f6", scope: !1, file: !1, line: 3, type: !9, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: false, unit: !0, variables: !2)
148 !8 = distinct !DISubprogram(name: "f6", scope: !1, file: !1, line: 3, type: !9, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: false, unit: !0, retainedNodes: !2)
149149 !9 = !DISubroutineType(types: !10)
150150 !10 = !{null}
151151 !11 = !DILocalVariable(name: "dog", scope: !8, file: !1, line: 4, type: !12)
156156 !16 = !DILocalVariable(name: "pangolin", scope: !8, file: !1, line: 6, type: !12)
157157 !17 = !DILocation(line: 6, column: 16, scope: !8)
158158 !18 = !DILocation(line: 7, column: 1, scope: !8)
159 !19 = distinct !DISubprogram(name: "f5", scope: !1, file: !1, line: 9, type: !9, isLocal: false, isDefinition: true, scopeLine: 9, isOptimized: false, unit: !0, variables: !2)
159 !19 = distinct !DISubprogram(name: "f5", scope: !1, file: !1, line: 9, type: !9, isLocal: false, isDefinition: true, scopeLine: 9, isOptimized: false, unit: !0, retainedNodes: !2)
160160 !20 = !DILocalVariable(name: "dog", scope: !19, file: !1, line: 10, type: !12)
161161 !21 = !DILocation(line: 10, column: 16, scope: !19)
162162 !22 = !DILocalVariable(name: "cat", scope: !19, file: !1, line: 11, type: !12)
164164 !24 = !DILocalVariable(name: "pangolin", scope: !19, file: !1, line: 12, type: !12)
165165 !25 = !DILocation(line: 12, column: 16, scope: !19)
166166 !26 = !DILocation(line: 13, column: 1, scope: !19)
167 !27 = distinct !DISubprogram(name: "f4", scope: !1, file: !1, line: 15, type: !9, isLocal: false, isDefinition: true, scopeLine: 15, isOptimized: false, unit: !0, variables: !2)
167 !27 = distinct !DISubprogram(name: "f4", scope: !1, file: !1, line: 15, type: !9, isLocal: false, isDefinition: true, scopeLine: 15, isOptimized: false, unit: !0, retainedNodes: !2)
168168 !28 = !DILocalVariable(name: "dog", scope: !27, file: !1, line: 16, type: !12)
169169 !29 = !DILocation(line: 16, column: 16, scope: !27)
170170 !30 = !DILocalVariable(name: "cat", scope: !27, file: !1, line: 17, type: !12)
172172 !32 = !DILocalVariable(name: "pangolin", scope: !27, file: !1, line: 18, type: !12)
173173 !33 = !DILocation(line: 18, column: 16, scope: !27)
174174 !34 = !DILocation(line: 19, column: 1, scope: !27)
175 !35 = distinct !DISubprogram(name: "f1", scope: !1, file: !1, line: 21, type: !36, isLocal: false, isDefinition: true, scopeLine: 21, isOptimized: false, unit: !0, variables: !2)
175 !35 = distinct !DISubprogram(name: "f1", scope: !1, file: !1, line: 21, type: !36, isLocal: false, isDefinition: true, scopeLine: 21, isOptimized: false, unit: !0, retainedNodes: !2)
176176 !36 = !DISubroutineType(types: !37)
177177 !37 = !{!12}
178178 !38 = !DILocalVariable(name: "dog", scope: !35, file: !1, line: 22, type: !12)
184184 !44 = !DILocation(line: 25, column: 7, scope: !35)
185185 !45 = !DILocation(line: 26, column: 10, scope: !35)
186186 !46 = !DILocation(line: 26, column: 3, scope: !35)
187 !47 = distinct !DISubprogram(name: "f2", scope: !1, file: !1, line: 29, type: !36, isLocal: false, isDefinition: true, scopeLine: 29, isOptimized: false, unit: !0, variables: !2)
187 !47 = distinct !DISubprogram(name: "f2", scope: !1, file: !1, line: 29, type: !36, isLocal: false, isDefinition: true, scopeLine: 29, isOptimized: false, unit: !0, retainedNodes: !2)
188188 !48 = !DILocalVariable(name: "dog", scope: !47, file: !1, line: 30, type: !12)
189189 !49 = !DILocation(line: 30, column: 16, scope: !47)
190190 !50 = !DILocalVariable(name: "cat", scope: !47, file: !1, line: 31, type: !12)
194194 !54 = !DILocation(line: 33, column: 7, scope: !47)
195195 !55 = !DILocation(line: 34, column: 10, scope: !47)
196196 !56 = !DILocation(line: 34, column: 3, scope: !47)
197 !57 = distinct !DISubprogram(name: "f3", scope: !1, file: !1, line: 37, type: !36, isLocal: false, isDefinition: true, scopeLine: 37, isOptimized: false, unit: !0, variables: !2)
197 !57 = distinct !DISubprogram(name: "f3", scope: !1, file: !1, line: 37, type: !36, isLocal: false, isDefinition: true, scopeLine: 37, isOptimized: false, unit: !0, retainedNodes: !2)
198198 !58 = !DILocalVariable(name: "dog", scope: !57, file: !1, line: 38, type: !12)
199199 !59 = !DILocation(line: 38, column: 16, scope: !57)
200200 !60 = !DILocalVariable(name: "cat", scope: !57, file: !1, line: 39, type: !12)
204204 !64 = !DILocation(line: 41, column: 7, scope: !57)
205205 !65 = !DILocation(line: 42, column: 10, scope: !57)
206206 !66 = !DILocation(line: 42, column: 3, scope: !57)
207 !67 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 45, type: !36, isLocal: false, isDefinition: true, scopeLine: 45, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
207 !67 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 45, type: !36, isLocal: false, isDefinition: true, scopeLine: 45, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
208208 !68 = !DILocalVariable(name: "a", scope: !67, file: !1, line: 46, type: !12)
209209 !69 = !DILocation(line: 46, column: 16, scope: !67)
210210 !70 = !DILocation(line: 47, column: 3, scope: !67)
8282 !4 = !{i32 2, !"Debug Info Version", i32 3}
8383 !5 = !{i32 1, !"wchar_size", i32 4}
8484 !6 = !{!"clang version 6.0.0 (trunk 313291)"}
85 !7 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooddb", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !12)
85 !7 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooddb", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
8686 !8 = !DISubroutineType(types: !9)
8787 !9 = !{!10, !10, !10, !11}
8888 !10 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
9494 !16 = !DILocation(line: 1, column: 19, scope: !7)
9595 !17 = !DILocation(line: 2, column: 26, scope: !7)
9696 !18 = !DILocation(line: 3, column: 20, scope: !7)
97 !19 = distinct !DISubprogram(name: "foo1", linkageName: "_Z4foo1ddb", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !20)
97 !19 = distinct !DISubprogram(name: "foo1", linkageName: "_Z4foo1ddb", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !20)
9898 !20 = !{!21, !22, !23}
9999 !21 = !DILocalVariable(name: "x", arg: 1, scope: !19, file: !1, line: 1, type: !10)
100100 !22 = !DILocalVariable(name: "y", arg: 2, scope: !19, file: !1, line: 1, type: !10)
3232 !4 = !{i32 2, !"Debug Info Version", i32 3}
3333 !5 = !{i32 1, !"wchar_size", i32 4}
3434 !6 = !{!"clang version 6.0.0 (trunk 313291)"}
35 !7 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooddb", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !12)
35 !7 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooddb", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
3636 !8 = !DISubroutineType(types: !9)
3737 !9 = !{!10, !10, !10, !11}
3838 !10 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
8383 !14 = !{!0}
8484 !15 = !{i32 2, !"Dwarf Version", i32 4}
8585 !16 = !{i32 2, !"Debug Info Version", i32 3}
86 !17 = distinct !DISubprogram(name: "test_with_debug", linkageName: "test_with_debug", scope: !2, file: !2, line: 6, type: !18, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !4, variables: !20)
86 !17 = distinct !DISubprogram(name: "test_with_debug", linkageName: "test_with_debug", scope: !2, file: !2, line: 6, type: !18, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !4, retainedNodes: !20)
8787 !18 = !DISubroutineType(types: !19)
8888 !19 = !{null}
8989 !20 = !{!21, !22}
2121 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (http://llvm.org/git/clang.git 3490ab8630d5643f71f1f04e46984f05b27b8d67) (http://llvm.org/git/llvm.git d2643e2ff955ed234944fe3c6b4ffc1250085843)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
2222 !1 = !DIFile(filename: "test.c", directory: "movpc-test")
2323 !2 = !{}
24 !4 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: false, unit: !0, variables: !2)
24 !4 = distinct !DISubprogram(name: "test", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: false, unit: !0, retainedNodes: !2)
2525 !5 = !DISubroutineType(types: !6)
2626 !6 = !{null}
2727 !7 = !{i32 2, !"Dwarf Version", i32 4}
3838 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 250289)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
3939 !1 = !DIFile(filename: "foo.c", directory: "foo")
4040 !2 = !{}
41 !4 = distinct !DISubprogram(name: "test1", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, variables: !2)
41 !4 = distinct !DISubprogram(name: "test1", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, retainedNodes: !2)
4242 !5 = !DISubroutineType(types: !6)
4343 !6 = !{null}
4444 !7 = !{i32 2, !"Dwarf Version", i32 4}
4040 !5 = !{i32 1, !"wchar_size", i32 4}
4141 !6 = !{i32 7, !"PIC Level", i32 2}
4242 !7 = !{!"clang version 7.0.0 (trunk 330296) (llvm/trunk 330298)"}
43 !8 = distinct !DISubprogram(name: "main", scope: !9, file: !9, line: 1, type: !10, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
43 !8 = distinct !DISubprogram(name: "main", scope: !9, file: !9, line: 1, type: !10, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
4444 !9 = !DIFile(filename: "", directory: "/Users/vsk/src/builds/llvm.org-master-RA")
4545 !10 = !DISubroutineType(types: !11)
4646 !11 = !{!12, !12, !13}
5959 !5 = !{i32 2, !"Debug Info Version", i32 3}
6060 !6 = !{i32 1, !"wchar_size", i32 2}
6161 !7 = !{!"clang version 6.0.0 "}
62 !8 = distinct !DISubprogram(name: "shrink_wrap_basic", linkageName: "\01@shrink_wrap_basic@16", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !12)
62 !8 = distinct !DISubprogram(name: "shrink_wrap_basic", linkageName: "\01@shrink_wrap_basic@16", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
6363 !9 = !DISubroutineType(cc: DW_CC_BORLAND_msfastcall, types: !10)
6464 !10 = !{!11, !11, !11, !11, !11}
6565 !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
158158 !2 = !{}
159159 !3 = !{i32 27}
160160 !4 = !{i32 8}
161 !5 = distinct !DISubprogram(name: "simple", linkageName: "simple", scope: null, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, variables: !2)
161 !5 = distinct !DISubprogram(name: "simple", linkageName: "simple", scope: null, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, retainedNodes: !2)
162162 !6 = !DISubroutineType(types: !2)
163163 !7 = !DILocation(line: 1, column: 1, scope: !5)
164164 !8 = !DILocation(line: 2, column: 1, scope: !5)
165165 !9 = !DILocation(line: 3, column: 1, scope: !5)
166 !10 = distinct !DISubprogram(name: "simple_reg", linkageName: "simple_reg", scope: null, file: !1, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, isOptimized: true, unit: !0, variables: !2)
166 !10 = distinct !DISubprogram(name: "simple_reg", linkageName: "simple_reg", scope: null, file: !1, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, isOptimized: true, unit: !0, retainedNodes: !2)
167167 !11 = !DILocation(line: 4, column: 1, scope: !10)
168168 !12 = !DILocation(line: 5, column: 1, scope: !10)
169169 !13 = !DILocation(line: 6, column: 1, scope: !10)
170 !14 = distinct !DISubprogram(name: "phi_const", linkageName: "phi_const", scope: null, file: !1, line: 7, type: !6, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, variables: !15)
170 !14 = distinct !DISubprogram(name: "phi_const", linkageName: "phi_const", scope: null, file: !1, line: 7, type: !6, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, retainedNodes: !15)
171171 !15 = !{!16, !18}
172172 !16 = !DILocalVariable(name: "1", scope: !14, file: !1, line: 7, type: !17)
173173 !17 = !DIBasicType(name: "ty8", size: 8, encoding: DW_ATE_unsigned)
179179 !23 = !DILocation(line: 10, column: 1, scope: !14)
180180 !24 = !DILocation(line: 11, column: 1, scope: !14)
181181 !25 = !DILocation(line: 12, column: 1, scope: !14)
182 !26 = distinct !DISubprogram(name: "phi_const_cast", linkageName: "phi_const_cast", scope: null, file: !1, line: 13, type: !6, isLocal: false, isDefinition: true, scopeLine: 13, isOptimized: true, unit: !0, variables: !27)
182 !26 = distinct !DISubprogram(name: "phi_const_cast", linkageName: "phi_const_cast", scope: null, file: !1, line: 13, type: !6, isLocal: false, isDefinition: true, scopeLine: 13, isOptimized: true, unit: !0, retainedNodes: !27)
183183 !27 = !{!28, !29, !30, !31}
184184 !28 = !DILocalVariable(name: "3", scope: !26, file: !1, line: 13, type: !17)
185185 !29 = !DILocalVariable(name: "4", scope: !26, file: !1, line: 15, type: !19)
193193 !37 = !DILocation(line: 18, column: 1, scope: !26)
194194 !38 = !DILocation(line: 19, column: 1, scope: !26)
195195 !39 = !DILocation(line: 20, column: 1, scope: !26)
196 !40 = distinct !DISubprogram(name: "invoke_phi", linkageName: "invoke_phi", scope: null, file: !1, line: 21, type: !6, isLocal: false, isDefinition: true, scopeLine: 21, isOptimized: true, unit: !0, variables: !41)
196 !40 = distinct !DISubprogram(name: "invoke_phi", linkageName: "invoke_phi", scope: null, file: !1, line: 21, type: !6, isLocal: false, isDefinition: true, scopeLine: 21, isOptimized: true, unit: !0, retainedNodes: !41)
197197 !41 = !{!42, !44}
198198 !42 = !DILocalVariable(name: "7", scope: !40, file: !1, line: 23, type: !43)
199199 !43 = !DIBasicType(name: "ty64", size: 64, encoding: DW_ATE_unsigned)
4747 !5 = !{}
4848 !6 = !{!7}
4949 !7 = !DIEnumerator(name: "max_frame_size", value: 0) ; [ DW_TAG_enumerator ] [max_frame_size :: 0]
50 !9 = distinct !DISubprogram(name: "read_response_size", linkageName: "_Z18read_response_sizev", line: 27, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 27, file: !1, scope: !10, type: !11, variables: !14)
50 !9 = distinct !DISubprogram(name: "read_response_size", linkageName: "_Z18read_response_sizev", line: 27, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 27, file: !1, scope: !10, type: !11, retainedNodes: !14)
5151 !10 = !DIFile(filename: "", directory: "/Users/matt/ryan_bug")
5252 !11 = !DISubroutineType(types: !12)
5353 !12 = !{!13}
6262 !21 = !{i32 2, !"Dwarf Version", i32 2}
6363 !22 = !{i64* getelementptr inbounds ({ i64, [56 x i8] }, { i64, [56 x i8] }* @a, i32 0, i32 0)}
6464 !23 = !DILocalVariable(name: "p2", line: 12, arg: 2, scope: !24, file: !10, type: !32)
65 !24 = distinct !DISubprogram(name: "min", linkageName: "_ZN3__13minIyEERKT_S3_RS1_", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 12, file: !1, scope: !25, type: !27, templateParams: !33, variables: !35)
65 !24 = distinct !DISubprogram(name: "min", linkageName: "_ZN3__13minIyEERKT_S3_RS1_", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 12, file: !1, scope: !25, type: !27, templateParams: !33, retainedNodes: !35)
6666 !25 = !DINamespace(name: "__1", scope: null)
6767 !26 = !DIFile(filename: "main.cpp", directory: "/Users/matt/ryan_bug")
6868 !27 = !DISubroutineType(types: !28)
7979 !38 = !DILocation(line: 33, scope: !9)
8080 !39 = !DILocation(line: 12, scope: !24, inlinedAt: !38)
8181 !40 = !DILocation(line: 9, scope: !41, inlinedAt: !59)
82 !41 = distinct !DISubprogram(name: "min", linkageName: "_ZN3__13minIyNS_1AEEERKT_S4_RS2_T0_", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 8, file: !1, scope: !25, type: !42, templateParams: !53, variables: !55)
82 !41 = distinct !DISubprogram(name: "min", linkageName: "_ZN3__13minIyNS_1AEEERKT_S4_RS2_T0_", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 8, file: !1, scope: !25, type: !42, templateParams: !53, retainedNodes: !55)
8383 !42 = !DISubroutineType(types: !43)
8484 !43 = !{!29, !29, !32, !44}
8585 !44 = !DICompositeType(tag: DW_TAG_structure_type, name: "A", size: 8, align: 8, file: !1, scope: !25, elements: !45)
9999 !59 = !DILocation(line: 13, scope: !24, inlinedAt: !38)
100100 !63 = !{i32 undef}
101101 !64 = !DILocalVariable(name: "p1", line: 1, arg: 2, scope: !65, file: !10, type: !50)
102 !65 = distinct !DISubprogram(name: "operator()", linkageName: "_ZN3__11AclERKiS2_", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2, file: !1, scope: !25, type: !47, declaration: !46, variables: !66)
102 !65 = distinct !DISubprogram(name: "operator()", linkageName: "_ZN3__11AclERKiS2_", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2, file: !1, scope: !25, type: !47, declaration: !46, retainedNodes: !66)
103103 !66 = !{!67, !69, !70}
104104 !67 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !65, type: !68)
105105 !68 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !44)
108108 !71 = !DILocation(line: 1, scope: !65, inlinedAt: !40)
109109 !72 = !{i32 1, !"Debug Info Version", i32 3}
110110 !73 = !DILocalVariable(name: "x", scope: !74, file: !1, line: 2, type: !13)
111 !74 = distinct !DISubprogram(name: "IgnoreIntrinsicTest", linkageName: "IgnoreIntrinsicTest", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !5)
111 !74 = distinct !DISubprogram(name: "IgnoreIntrinsicTest", linkageName: "IgnoreIntrinsicTest", scope: !1, file: !1, line: 1, type: !13, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !5)
112112 !75 = !DILocation(line: 2, column: 16, scope: !7)
4646 !3 = !{i32 2, !"Dwarf Version", i32 4}
4747 !4 = !{i32 2, !"Debug Info Version", i32 3}
4848 !5 = !{}
49 !6 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 5, type: !7, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
49 !6 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 5, type: !7, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
5050 !7 = !DISubroutineType(types: !2)
5151 !8 = !DILocation(line: 7, column: 15, scope: !9)
5252 !9 = !DILexicalBlockFile(scope: !6, file: !1, discriminator: 2)
4848 !1 = !DIFile(filename: "foo.c", directory: "b/")
4949 !2 = !{i32 2, !"Dwarf Version", i32 4}
5050 !3 = !{i32 2, !"Debug Info Version", i32 3}
51 !4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !8)
51 !4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !8)
5252 !5 = !DISubroutineType(types: !6)
5353 !6 = !{!7, !7, !7}
5454 !7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
2525 !0 = distinct !DICompileUnit(language: DW_LANG_C99, isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
2626 !1 = !DIFile(filename: "test.c", directory: "")
2727 !2 = !{}
28 !4 = distinct !DISubprogram(name: "f", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !1, type: !6, variables: !2)
28 !4 = distinct !DISubprogram(name: "f", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !1, type: !6, retainedNodes: !2)
2929 !6 = !DISubroutineType(types: !7)
3030 !7 = !{!8, !8}
3131 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
278278 !11 = !{i32 2, !"Debug Info Version", i32 3}
279279 !12 = !{i32 1, !"PIC Level", i32 2}
280280 !13 = !{!"clang version 5.0.0 (trunk 295779) (llvm/trunk 295777)"}
281 !14 = distinct !DISubprogram(name: "+[MyObject doWithSize:]", scope: !1, file: !1, line: 16, type: !15, isLocal: true, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
281 !14 = distinct !DISubprogram(name: "+[MyObject doWithSize:]", scope: !1, file: !1, line: 16, type: !15, isLocal: true, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
282282 !15 = !DISubroutineType(types: !16)
283283 !16 = !{!17, !24, !26, !29}
284284 !17 = !DIDerivedType(tag: DW_TAG_typedef, name: "id", file: !1, baseType: !18)
8787 !24 = !{null, !25}
8888 !25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !13)
8989 !26 = !DISubprogram(name: "~A", line: 3, isLocal: false, isDefinition: false, virtuality: DW_VIRTUALITY_virtual, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3, file: !5, scope: !13, type: !23, containingType: !13)
90 !28 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC2Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, variables: !29)
90 !28 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC2Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, retainedNodes: !29)
9191 !29 = !{!30}
9292 !30 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !28, type: !31)
9393 !31 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4)
94 !32 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC1Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, variables: !33)
94 !32 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC1Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, retainedNodes: !33)
9595 !33 = !{!34}
9696 !34 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !32, type: !31)
9797 !35 = !{i32 2, !"Dwarf Version", i32 4}
4545 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.6.0 (trunk 223149) (llvm/trunk 223115)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
4646 !1 = !DIFile(filename: "", directory: "")
4747 !2 = !{}
48 !4 = distinct !DISubprogram(name: "start", linkageName: "_Z5startv", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3, file: !5, scope: !6, type: !7, variables: !9)
48 !4 = distinct !DISubprogram(name: "start", linkageName: "_Z5startv", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3, file: !5, scope: !6, type: !7, retainedNodes: !9)
4949 !5 = !DIFile(filename: "test1.c", directory: "")
5050 !6 = !DIFile(filename: "test1.c", directory: "")
5151 !7 = !DISubroutineType(types: !8)
2525 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "", isOptimized: false, emissionKind: FullDebug)
2626 !1 = !DIFile(filename: "test.c", directory: "/home/user/clang/build")
2727 !2 = !{}
28 !4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
28 !4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
2929 !5 = !DISubroutineType(types: !6)
3030 !6 = !{!7}
3131 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4545 !5 = !{i32 1, !"wchar_size", i32 4}
4646 !6 = !{i32 7, !"PIC Level", i32 2}
4747 !7 = !{!"clang version 6.0.0 (trunk 317700) (llvm/trunk 317708)"}
48 !8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !13)
48 !8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !13)
4949 !9 = !DISubroutineType(types: !10)
5050 !10 = !{!11, !11}
5151 !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
4141 !7 = !{i32 2, !"Debug Info Version", i32 3}
4242 !8 = !{i32 1, !"wchar_size", i32 4}
4343 !9 = !{!"clang version 7.0.0"}
44 !10 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 16, type: !11, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !14)
44 !10 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 16, type: !11, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !14)
4545 !11 = !DISubroutineType(types: !12)
4646 !12 = !{!5, !13, !5}
4747 !13 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 64)
2828
2929 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.3 ", isOptimized: false, emissionKind: FullDebug, file: !9, enums: !1, retainedTypes: !1, globals: !1, imports: !1)
3030 !1 = !{}
31 !3 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !9, scope: !4, type: !5, variables: !1)
31 !3 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !9, scope: !4, type: !5, retainedNodes: !1)
3232 !4 = !DIFile(filename: "tmp.c", directory: "/home/tim/llvm/build")
3333 !5 = !DISubroutineType(types: !6)
3434 !6 = !{!7}
191191 !29 = !{i32 2, !"Dwarf Version", i32 2}
192192 !30 = !{i32 2, !"Debug Info Version", i32 3}
193193 !31 = !{!"clang version 3.7.0 "}
194 !32 = distinct !DISubprogram(name: "f13", linkageName: "_Z3f131A", scope: !2, file: !2, line: 13, type: !33, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !8, variables: !35)
194 !32 = distinct !DISubprogram(name: "f13", linkageName: "_Z3f131A", scope: !2, file: !2, line: 13, type: !33, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !8, retainedNodes: !35)
195195 !33 = !DISubroutineType(types: !34)
196196 !34 = !{null, !12}
197197 !35 = !{!36}
213213 !51 = !{!"bool", !42, i64 0}
214214 !52 = !DILocation(line: 15, column: 3, scope: !32)
215215 !53 = !DILocation(line: 16, column: 1, scope: !32)
216 !54 = distinct !DISubprogram(name: "f11", linkageName: "_Z3f111A", scope: !2, file: !2, line: 17, type: !33, isLocal: false, isDefinition: true, scopeLine: 17, flags: DIFlagPrototyped, isOptimized: true, unit: !8, variables: !55)
216 !54 = distinct !DISubprogram(name: "f11", linkageName: "_Z3f111A", scope: !2, file: !2, line: 17, type: !33, isLocal: false, isDefinition: true, scopeLine: 17, flags: DIFlagPrototyped, isOptimized: true, unit: !8, retainedNodes: !55)
217217 !55 = !{!56}
218218 !56 = !DILocalVariable(name: "p1", arg: 1, scope: !54, file: !2, line: 17, type: !12)
219219 !57 = !DILocation(line: 17, column: 12, scope: !54)
227227 !65 = !DILocation(line: 15, column: 3, scope: !32, inlinedAt: !60)
228228 !66 = !DILocation(line: 16, column: 1, scope: !32, inlinedAt: !60)
229229 !67 = !DILocation(line: 17, column: 27, scope: !54)
230 !68 = distinct !DISubprogram(name: "f16", linkageName: "_Z3f16v", scope: !2, file: !2, line: 18, type: !69, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !8, variables: !71)
230 !68 = distinct !DISubprogram(name: "f16", linkageName: "_Z3f16v", scope: !2, file: !2, line: 18, type: !69, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !8, retainedNodes: !71)
231231 !69 = !DISubroutineType(types: !70)
232232 !70 = !{null}
233233 !71 = !{!72, !73}
104104 !17 = !{i32 2, !"Debug Info Version", i32 3}
105105 !18 = !{i32 1, !"wchar_size", i32 4}
106106 !19 = !{!"clang version 6.0.0 (trunk 317516) (llvm/trunk 317518)"}
107 !20 = distinct !DISubprogram(name: "g", scope: !3, file: !3, line: 18, type: !21, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !25)
107 !20 = distinct !DISubprogram(name: "g", scope: !3, file: !3, line: 18, type: !21, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !25)
108108 !21 = !DISubroutineType(types: !22)
109109 !22 = !{!23, !24, !15}
110110 !23 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
116116 !29 = !DILocation(line: 18, column: 11, scope: !20)
117117 !30 = !DILocation(line: 18, column: 33, scope: !20)
118118 !31 = !DILocalVariable(name: "t", arg: 1, scope: !32, file: !3, line: 9, type: !24)
119 !32 = distinct !DISubprogram(name: "find", scope: !3, file: !3, line: 9, type: !33, isLocal: true, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !36)
119 !32 = distinct !DISubprogram(name: "find", scope: !3, file: !3, line: 9, type: !33, isLocal: true, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !36)
120120 !33 = !DISubroutineType(types: !34)
121121 !34 = !{!35, !24, !15}
122122 !35 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned)
2929 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 242129)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
3030 !1 = !DIFile(filename: "foo.c", directory: "/tmp")
3131 !2 = !{}
32 !4 = distinct !DISubprogram(name: "prologue_end_test", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, variables: !2)
32 !4 = distinct !DISubprogram(name: "prologue_end_test", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, retainedNodes: !2)
3333 !5 = !DISubroutineType(types: !6)
3434 !6 = !{null}
3535 !7 = !{i32 2, !"Dwarf Version", i32 2}
5050 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "LLVM version 3.4 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
5151 !1 = !DIFile(filename: "struct_by_value.c", directory: "")
5252 !2 = !{}
53 !4 = distinct !DISubprogram(name: "return_five_int", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 14, file: !1, scope: !5, type: !6, variables: !2)
53 !4 = distinct !DISubprogram(name: "return_five_int", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 14, file: !1, scope: !5, type: !6, retainedNodes: !2)
5454 !5 = !DIFile(filename: "struct_by_value.c", directory: "")
5555 !6 = !DISubroutineType(types: !7)
5656 !7 = !{!8, !9}
4949 !4 = !{i32 2, !"Dwarf Version", i32 2}
5050 !5 = !{i32 2, !"Debug Info Version", i32 3}
5151 !6 = !{!""}
52 !7 = distinct !DISubprogram(name: "kernel1", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
52 !7 = distinct !DISubprogram(name: "kernel1", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
5353 !8 = !DISubroutineType(types: !9)
5454 !9 = !{null, !10}
5555 !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)
6464 !19 = !DILocation(line: 2, column: 4, scope: !7)
6565 !20 = !DILocation(line: 2, column: 6, scope: !7)
6666 !21 = !DILocation(line: 3, column: 1, scope: !7)
67 !22 = distinct !DISubprogram(name: "kernel2", scope: !1, file: !1, line: 5, type: !8, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
67 !22 = distinct !DISubprogram(name: "kernel2", scope: !1, file: !1, line: 5, type: !8, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
6868 !23 = !DILocalVariable(name: "B", arg: 1, scope: !22, file: !1, line: 5, type: !10)
6969 !24 = !DILocation(line: 5, column: 33, scope: !22)
7070 !25 = !DILocation(line: 6, column: 4, scope: !22)
5858 !4 = !{i32 2, !"Dwarf Version", i32 2}
5959 !5 = !{i32 2, !"Debug Info Version", i32 3}
6060 !6 = !{!"clang version 4.0 "}
61 !7 = distinct !DISubprogram(name: "kernel1", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !12)
61 !7 = distinct !DISubprogram(name: "kernel1", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
6262 !8 = !DISubroutineType(types: !9)
6363 !9 = !{null, !10, !10}
6464 !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)
5050 !4 = !{i32 2, !"Dwarf Version", i32 2}
5151 !5 = !{i32 2, !"Debug Info Version", i32 3}
5252