llvm.org GIT mirror llvm / 4eeaa0d
[PR27284] Reverse the ownership between DICompileUnit and DISubprogram. Currently each Function points to a DISubprogram and DISubprogram has a scope field. For member functions the scope is a DICompositeType. DIScopes point to the DICompileUnit to facilitate type uniquing. Distinct DISubprograms (with isDefinition: true) are not part of the type hierarchy and cannot be uniqued. This change removes the subprograms list from DICompileUnit and instead adds a pointer to the owning compile unit to distinct DISubprograms. This would make it easy for ThinLTO to strip unneeded DISubprograms and their transitively referenced debug info. Motivation ---------- Materializing DISubprograms is currently the most expensive operation when doing a ThinLTO build of clang. We want the DISubprogram to be stored in a separate Bitcode block (or the same block as the function body) so we can avoid having to expensively deserialize all DISubprograms together with the global metadata. If a function has been inlined into another subprogram we need to store a reference the block containing the inlined subprogram. Attached to https://llvm.org/bugs/show_bug.cgi?id=27284 is a python script that updates LLVM IR testcases to the new format. http://reviews.llvm.org/D19034 <rdar://problem/25256815> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266446 91177308-0d34-0410-b5e6-96231b3b80d8 Adrian Prantl 3 years ago
540 changed file(s) with 1768 addition(s) and 2302 deletion(s). Raw diff Collapse all Expand all
402402 uint64_t AlignInBits = 0, unsigned Flags = DINode::FlagFwdDecl,
403403 StringRef UniqueIdentifier = "");
404404
405 /// Retain DIType* in a module even if it is not referenced
405 /// Retain DIScope* in a module even if it is not referenced
406406 /// through debug info anchors.
407 void retainType(DIType *T);
407 void retainType(DIScope *T);
408408
409409 /// Create unspecified parameter type
410410 /// for a subroutine type.
958958 StringRef Producer, bool IsOptimized, StringRef Flags,
959959 unsigned RuntimeVersion, StringRef SplitDebugFilename,
960960 unsigned EmissionKind, DICompositeTypeArray EnumTypes,
961 DITypeArray RetainedTypes, DISubprogramArray Subprograms,
962 DIGlobalVariableArray GlobalVariables,
961 DIScopeArray RetainedTypes, DIGlobalVariableArray GlobalVariables,
963962 DIImportedEntityArray ImportedEntities, DIMacroNodeArray Macros,
964963 uint64_t DWOId, StorageType Storage, bool ShouldCreate = true) {
965 return getImpl(Context, SourceLanguage, File,
966 getCanonicalMDString(Context, Producer), IsOptimized,
967 getCanonicalMDString(Context, Flags), RuntimeVersion,
968 getCanonicalMDString(Context, SplitDebugFilename),
969 EmissionKind, EnumTypes.get(), RetainedTypes.get(),
970 Subprograms.get(), GlobalVariables.get(),
971 ImportedEntities.get(), Macros.get(), DWOId, Storage,
972 ShouldCreate);
964 return getImpl(
965 Context, SourceLanguage, File, getCanonicalMDString(Context, Producer),
966 IsOptimized, getCanonicalMDString(Context, Flags), RuntimeVersion,
967 getCanonicalMDString(Context, SplitDebugFilename), EmissionKind,
968 EnumTypes.get(), RetainedTypes.get(), GlobalVariables.get(),
969 ImportedEntities.get(), Macros.get(), DWOId, Storage, ShouldCreate);
973970 }
974971 static DICompileUnit *
975972 getImpl(LLVMContext &Context, unsigned SourceLanguage, Metadata *File,
976973 MDString *Producer, bool IsOptimized, MDString *Flags,
977974 unsigned RuntimeVersion, MDString *SplitDebugFilename,
978 unsigned EmissionKind, Metadata *EnumTypes,
979 Metadata *RetainedTypes, Metadata *Subprograms,
975 unsigned EmissionKind, Metadata *EnumTypes, Metadata *RetainedTypes,
980976 Metadata *GlobalVariables, Metadata *ImportedEntities,
981977 Metadata *Macros, uint64_t DWOId, StorageType Storage,
982978 bool ShouldCreate = true);
985981 return getTemporary(
986982 getContext(), getSourceLanguage(), getFile(), getProducer(),
987983 isOptimized(), getFlags(), getRuntimeVersion(), getSplitDebugFilename(),
988 getEmissionKind(), getEnumTypes(), getRetainedTypes(), getSubprograms(),
984 getEmissionKind(), getEnumTypes(), getRetainedTypes(),
989985 getGlobalVariables(), getImportedEntities(), getMacros(), DWOId);
990986 }
991987
998994 (unsigned SourceLanguage, DIFile *File, StringRef Producer,
999995 bool IsOptimized, StringRef Flags, unsigned RuntimeVersion,
1000996 StringRef SplitDebugFilename, DebugEmissionKind EmissionKind,
1001 DICompositeTypeArray EnumTypes, DITypeArray RetainedTypes,
1002 DISubprogramArray Subprograms, DIGlobalVariableArray GlobalVariables,
997 DICompositeTypeArray EnumTypes, DIScopeArray RetainedTypes,
998 DIGlobalVariableArray GlobalVariables,
1003999 DIImportedEntityArray ImportedEntities, DIMacroNodeArray Macros,
10041000 uint64_t DWOId),
10051001 (SourceLanguage, File, Producer, IsOptimized, Flags, RuntimeVersion,
1006 SplitDebugFilename, EmissionKind, EnumTypes, RetainedTypes, Subprograms,
1002 SplitDebugFilename, EmissionKind, EnumTypes, RetainedTypes,
10071003 GlobalVariables, ImportedEntities, Macros, DWOId))
10081004 DEFINE_MDNODE_GET_DISTINCT_TEMPORARY(
10091005 DICompileUnit,
10101006 (unsigned SourceLanguage, Metadata *File, MDString *Producer,
10111007 bool IsOptimized, MDString *Flags, unsigned RuntimeVersion,
10121008 MDString *SplitDebugFilename, unsigned EmissionKind, Metadata *EnumTypes,
1013 Metadata *RetainedTypes, Metadata *Subprograms,
1014 Metadata *GlobalVariables, Metadata *ImportedEntities, Metadata *Macros,
1015 uint64_t DWOId),
1009 Metadata *RetainedTypes, Metadata *GlobalVariables,
1010 Metadata *ImportedEntities, Metadata *Macros, uint64_t DWOId),
10161011 (SourceLanguage, File, Producer, IsOptimized, Flags, RuntimeVersion,
1017 SplitDebugFilename, EmissionKind, EnumTypes, RetainedTypes, Subprograms,
1012 SplitDebugFilename, EmissionKind, EnumTypes, RetainedTypes,
10181013 GlobalVariables, ImportedEntities, Macros, DWOId))
10191014
10201015 TempDICompileUnit clone() const { return cloneImpl(); }
10311026 DICompositeTypeArray getEnumTypes() const {
10321027 return cast_or_null(getRawEnumTypes());
10331028 }
1034 DITypeArray getRetainedTypes() const {
1029 DIScopeArray getRetainedTypes() const {
10351030 return cast_or_null(getRawRetainedTypes());
1036 }
1037 DISubprogramArray getSubprograms() const {
1038 return cast_or_null(getRawSubprograms());
10391031 }
10401032 DIGlobalVariableArray getGlobalVariables() const {
10411033 return cast_or_null(getRawGlobalVariables());
10561048 }
10571049 Metadata *getRawEnumTypes() const { return getOperand(4); }
10581050 Metadata *getRawRetainedTypes() const { return getOperand(5); }
1059 Metadata *getRawSubprograms() const { return getOperand(6); }
1060 Metadata *getRawGlobalVariables() const { return getOperand(7); }
1061 Metadata *getRawImportedEntities() const { return getOperand(8); }
1062 Metadata *getRawMacros() const { return getOperand(9); }
1051 Metadata *getRawGlobalVariables() const { return getOperand(6); }
1052 Metadata *getRawImportedEntities() const { return getOperand(7); }
1053 Metadata *getRawMacros() const { return getOperand(8); }
10631054
10641055 /// \brief Replace arrays.
10651056 ///
10731064 void replaceRetainedTypes(DITypeArray N) {
10741065 replaceOperandWith(5, N.get());
10751066 }
1076 void replaceSubprograms(DISubprogramArray N) {
1067 void replaceGlobalVariables(DIGlobalVariableArray N) {
10771068 replaceOperandWith(6, N.get());
10781069 }
1079 void replaceGlobalVariables(DIGlobalVariableArray N) {
1070 void replaceImportedEntities(DIImportedEntityArray N) {
10801071 replaceOperandWith(7, N.get());
10811072 }
1082 void replaceImportedEntities(DIImportedEntityArray N) {
1083 replaceOperandWith(8, N.get());
1084 }
1085 void replaceMacros(DIMacroNodeArray N) { replaceOperandWith(9, N.get()); }
1073 void replaceMacros(DIMacroNodeArray N) { replaceOperandWith(8, N.get()); }
10861074 /// @}
10871075
10881076 static bool classof(const Metadata *MD) {
12651253 DISubroutineType *Type, bool IsLocalToUnit, bool IsDefinition,
12661254 unsigned ScopeLine, DITypeRef ContainingType, unsigned Virtuality,
12671255 unsigned VirtualIndex, unsigned Flags, bool IsOptimized,
1268 DITemplateParameterArray TemplateParams, DISubprogram *Declaration,
1269 DILocalVariableArray Variables, StorageType Storage,
1270 bool ShouldCreate = true) {
1256 DICompileUnit *Unit, DITemplateParameterArray TemplateParams,
1257 DISubprogram *Declaration, DILocalVariableArray Variables,
1258 StorageType Storage, bool ShouldCreate = true) {
12711259 return getImpl(Context, Scope, getCanonicalMDString(Context, Name),
12721260 getCanonicalMDString(Context, LinkageName), File, Line, Type,
12731261 IsLocalToUnit, IsDefinition, ScopeLine, ContainingType,
1274 Virtuality, VirtualIndex, Flags, IsOptimized,
1262 Virtuality, VirtualIndex, Flags, IsOptimized, Unit,
12751263 TemplateParams.get(), Declaration, Variables.get(), Storage,
12761264 ShouldCreate);
12771265 }
12801268 MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
12811269 bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
12821270 Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
1283 unsigned Flags, bool IsOptimized, Metadata *TemplateParams,
1284 Metadata *Declaration, Metadata *Variables, StorageType Storage,
1285 bool ShouldCreate = true);
1271 unsigned Flags, bool IsOptimized, Metadata *Unit,
1272 Metadata *TemplateParams, Metadata *Declaration, Metadata *Variables,
1273 StorageType Storage, bool ShouldCreate = true);
12861274
12871275 TempDISubprogram cloneImpl() const {
1288 return getTemporary(
1289 getContext(), getScope(), getName(), getLinkageName(), getFile(),
1290 getLine(), getType(), isLocalToUnit(), isDefinition(), getScopeLine(),
1291 getContainingType(), getVirtuality(), getVirtualIndex(), getFlags(),
1292 isOptimized(), getTemplateParams(), getDeclaration(), getVariables());
1276 return getTemporary(getContext(), getScope(), getName(), getLinkageName(),
1277 getFile(), getLine(), getType(), isLocalToUnit(),
1278 isDefinition(), getScopeLine(), getContainingType(),
1279 getVirtuality(), getVirtualIndex(), getFlags(),
1280 isOptimized(), getUnit(), getTemplateParams(),
1281 getDeclaration(), getVariables());
12931282 }
12941283
12951284 public:
12991288 bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
13001289 DITypeRef ContainingType, unsigned Virtuality,
13011290 unsigned VirtualIndex, unsigned Flags, bool IsOptimized,
1291 DICompileUnit *Unit,
13021292 DITemplateParameterArray TemplateParams = nullptr,
13031293 DISubprogram *Declaration = nullptr,
13041294 DILocalVariableArray Variables = nullptr),
13051295 (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
13061296 IsDefinition, ScopeLine, ContainingType, Virtuality,
1307 VirtualIndex, Flags, IsOptimized, TemplateParams,
1297 VirtualIndex, Flags, IsOptimized, Unit, TemplateParams,
13081298 Declaration, Variables))
13091299 DEFINE_MDNODE_GET(
13101300 DISubprogram,
13121302 unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition,
13131303 unsigned ScopeLine, Metadata *ContainingType, unsigned Virtuality,
13141304 unsigned VirtualIndex, unsigned Flags, bool IsOptimized,
1315 Metadata *TemplateParams = nullptr, Metadata *Declaration = nullptr,
1316 Metadata *Variables = nullptr),
1305 Metadata *Unit, Metadata *TemplateParams = nullptr,
1306 Metadata *Declaration = nullptr, Metadata *Variables = nullptr),
13171307 (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition,
13181308 ScopeLine, ContainingType, Virtuality, VirtualIndex, Flags, IsOptimized,
1319 TemplateParams, Declaration, Variables))
1309 Unit, TemplateParams, Declaration, Variables))
13201310
13211311 TempDISubprogram clone() const { return cloneImpl(); }
13221312
13751365 return DITypeRef(getRawContainingType());
13761366 }
13771367
1368 DICompileUnit *getUnit() const {
1369 return cast_or_null(getRawUnit());
1370 }
1371 void replaceUnit(DICompileUnit *CU) {
1372 replaceOperandWith(7, CU);
1373 }
13781374 DITemplateParameterArray getTemplateParams() const {
13791375 return cast_or_null(getRawTemplateParams());
13801376 }
13881384 Metadata *getRawScope() const { return getOperand(1); }
13891385 Metadata *getRawType() const { return getOperand(5); }
13901386 Metadata *getRawContainingType() const { return getOperand(6); }
1391 Metadata *getRawTemplateParams() const { return getOperand(7); }
1392 Metadata *getRawDeclaration() const { return getOperand(8); }
1393 Metadata *getRawVariables() const { return getOperand(9); }
1387 Metadata *getRawUnit() const { return getOperand(7); }
1388 Metadata *getRawTemplateParams() const { return getOperand(8); }
1389 Metadata *getRawDeclaration() const { return getOperand(9); }
1390 Metadata *getRawVariables() const { return getOperand(10); }
13941391
13951392 /// \brief Check if this subprogram describes the given function.
13961393 ///
38743874 /// ::= !DICompileUnit(language: DW_LANG_C99, file: !0, producer: "clang",
38753875 /// isOptimized: true, flags: "-O2", runtimeVersion: 1,
38763876 /// splitDebugFilename: "abc.debug",
3877 /// emissionKind: FullDebug,
3878 /// enums: !1, retainedTypes: !2, subprograms: !3,
3877 /// emissionKind: FullDebug, enums: !1, retainedTypes: !2,
38793878 /// globals: !4, imports: !5, macros: !6, dwoId: 0x0abcd)
38803879 bool LLParser::ParseDICompileUnit(MDNode *&Result, bool IsDistinct) {
38813880 if (!IsDistinct)
38923891 OPTIONAL(emissionKind, EmissionKindField, ); \
38933892 OPTIONAL(enums, MDField, ); \
38943893 OPTIONAL(retainedTypes, MDField, ); \
3895 OPTIONAL(subprograms, MDField, ); \
38963894 OPTIONAL(globals, MDField, ); \
38973895 OPTIONAL(imports, MDField, ); \
38983896 OPTIONAL(macros, MDField, ); \
39033901 Result = DICompileUnit::getDistinct(
39043902 Context, language.Val, file.Val, producer.Val, isOptimized.Val, flags.Val,
39053903 runtimeVersion.Val, splitDebugFilename.Val, emissionKind.Val, enums.Val,
3906 retainedTypes.Val, subprograms.Val, globals.Val, imports.Val, macros.Val,
3907 dwoId.Val);
3904 retainedTypes.Val, globals.Val, imports.Val, macros.Val, dwoId.Val);
39083905 return false;
39093906 }
39103907
39333930 OPTIONAL(virtualIndex, MDUnsignedField, (0, UINT32_MAX)); \
39343931 OPTIONAL(flags, DIFlagField, ); \
39353932 OPTIONAL(isOptimized, MDBoolField, ); \
3933 OPTIONAL(unit, MDField, ); \
39363934 OPTIONAL(templateParams, MDField, ); \
39373935 OPTIONAL(declaration, MDField, ); \
39383936 OPTIONAL(variables, MDField, );
39453943 "missing 'distinct', required for !DISubprogram when 'isDefinition'");
39463944
39473945 Result = GET_OR_DISTINCT(
3948 DISubprogram,
3949 (Context, scope.Val, name.Val, linkageName.Val, file.Val, line.Val,
3950 type.Val, isLocal.Val, isDefinition.Val, scopeLine.Val,
3951 containingType.Val, virtuality.Val, virtualIndex.Val, flags.Val,
3952 isOptimized.Val, templateParams.Val, declaration.Val, variables.Val));
3946 DISubprogram, (Context, scope.Val, name.Val, linkageName.Val, file.Val,
3947 line.Val, type.Val, isLocal.Val, isDefinition.Val,
3948 scopeLine.Val, containingType.Val, virtuality.Val,
3949 virtualIndex.Val, flags.Val, isOptimized.Val, unit.Val,
3950 templateParams.Val, declaration.Val, variables.Val));
39533951 return false;
39543952 }
39553953
19471947 if (Stream.EnterSubBlock(bitc::METADATA_BLOCK_ID))
19481948 return error("Invalid record");
19491949
1950 std::vector> CUSubprograms;
19501951 SmallVector Record;
19511952
19521953 auto getMD = [&](unsigned ID) -> Metadata * {
19751976 case BitstreamEntry::Error:
19761977 return error("Malformed block");
19771978 case BitstreamEntry::EndBlock:
1979 // Upgrade old-style CU <-> SP pointers to point from SP to CU.
1980 for (auto CU_SP : CUSubprograms)
1981 if (auto *SPs = dyn_cast_or_null(CU_SP.second))
1982 for (auto &Op : SPs->operands())
1983 if (auto *SP = dyn_cast_or_null(Op))
1984 SP->replaceOperandWith(7, CU_SP.first);
1985
19781986 MetadataList.tryToResolveCycles();
19791987 return std::error_code();
19801988 case BitstreamEntry::Record:
22312239
22322240 // Ignore Record[0], which indicates whether this compile unit is
22332241 // distinct. It's always distinct.
2234 MetadataList.assignValue(
2235 DICompileUnit::getDistinct(
2236 Context, Record[1], getMDOrNull(Record[2]),
2237 getMDString(Record[3]), Record[4], getMDString(Record[5]),
2238 Record[6], getMDString(Record[7]), Record[8],
2239 getMDOrNull(Record[9]), getMDOrNull(Record[10]),
2240 getMDOrNull(Record[11]), getMDOrNull(Record[12]),
2241 getMDOrNull(Record[13]),
2242 Record.size() <= 15 ? nullptr : getMDOrNull(Record[15]),
2243 Record.size() <= 14 ? 0 : Record[14]),
2244 NextMetadataNo++);
2242 auto *CU = DICompileUnit::getDistinct(
2243 Context, Record[1], getMDOrNull(Record[2]), getMDString(Record[3]),
2244 Record[4], getMDString(Record[5]), Record[6], getMDString(Record[7]),
2245 Record[8], getMDOrNull(Record[9]), getMDOrNull(Record[10]),
2246 getMDOrNull(Record[12]), getMDOrNull(Record[13]),
2247 Record.size() <= 15 ? nullptr : getMDOrNull(Record[15]),
2248 Record.size() <= 14 ? 0 : Record[14]);
2249
2250 MetadataList.assignValue(CU, NextMetadataNo++);
2251
2252 // Move the Upgrade the list of subprograms.
2253 if (Metadata *SPs = getMDOrNull(Record[11]))
2254 CUSubprograms.push_back({CU, SPs});
22452255 break;
22462256 }
22472257 case bitc::METADATA_SUBPROGRAM: {
22482258 if (Record.size() != 18 && Record.size() != 19)
22492259 return error("Invalid record");
22502260
2251 bool HasFn = Record.size() == 19;
2261 // Version 1 has a Function as Record[15].
2262 // Version 2 has removed Record[15].
2263 // Version 3 has the Unit as Record[15].
2264 Metadata *CUorFn = getMDOrNull(Record[15]);
2265 unsigned Offset = Record.size() == 19 ? 1 : 0;
2266 bool HasFn = Offset && dyn_cast_or_null(CUorFn);
2267 bool HasCU = Offset && !HasFn;
22522268 DISubprogram *SP = GET_OR_DISTINCT(
22532269 DISubprogram,
22542270 Record[0] || Record[8], // All definitions should be distinct.
22562272 getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
22572273 getMDOrNull(Record[6]), Record[7], Record[8], Record[9],
22582274 getMDOrNull(Record[10]), Record[11], Record[12], Record[13],
2259 Record[14], getMDOrNull(Record[15 + HasFn]),
2260 getMDOrNull(Record[16 + HasFn]), getMDOrNull(Record[17 + HasFn])));
2275 Record[14], HasCU ? CUorFn : nullptr,
2276 getMDOrNull(Record[15 + Offset]), getMDOrNull(Record[16 + Offset]),
2277 getMDOrNull(Record[17 + Offset])));
22612278 MetadataList.assignValue(SP, NextMetadataNo++);
22622279
22632280 // Upgrade sp->function mapping to function->sp mapping.
2264 if (HasFn && Record[15]) {
2265 if (auto *CMD = dyn_cast(getMDOrNull(Record[15])))
2281 if (HasFn) {
2282 if (auto *CMD = dyn_cast(CUorFn))
22662283 if (auto *F = dyn_cast(CMD->getValue())) {
22672284 if (F->isMaterializable())
22682285 // Defer until materialized; unmaterialized functions may not have
10971097 Record.push_back(N->getEmissionKind());
10981098 Record.push_back(VE.getMetadataOrNullID(N->getEnumTypes().get()));
10991099 Record.push_back(VE.getMetadataOrNullID(N->getRetainedTypes().get()));
1100 Record.push_back(VE.getMetadataOrNullID(N->getSubprograms().get()));
1100 Record.push_back(/* subprograms */ 0);
11011101 Record.push_back(VE.getMetadataOrNullID(N->getGlobalVariables().get()));
11021102 Record.push_back(VE.getMetadataOrNullID(N->getImportedEntities().get()));
11031103 Record.push_back(N->getDWOId());
11261126 Record.push_back(N->getVirtualIndex());
11271127 Record.push_back(N->getFlags());
11281128 Record.push_back(N->isOptimized());
1129 Record.push_back(VE.getMetadataOrNullID(N->getRawUnit()));
11291130 Record.push_back(VE.getMetadataOrNullID(N->getTemplateParams().get()));
11301131 Record.push_back(VE.getMetadataOrNullID(N->getDeclaration()));
11311132 Record.push_back(VE.getMetadataOrNullID(N->getVariables().get()));
364364
365365 // Find the subprogram's DwarfCompileUnit in the SPMap in case the subprogram
366366 // was inlined from another compile unit.
367 auto &CU = SPMap[SP];
368 forBothCUs(*CU, [&](DwarfCompileUnit &CU) {
367 auto &CU = *CUMap.lookup(cast(SP)->getUnit());
368 forBothCUs(CU, [&](DwarfCompileUnit &CU) {
369369 CU.constructAbstractSubprogramScopeDIE(Scope);
370370 });
371371 }
482482 CU.addImportedEntity(IE);
483483 for (auto *GV : CUNode->getGlobalVariables())
484484 CU.getOrCreateGlobalVariableDIE(GV);
485 for (auto *SP : CUNode->getSubprograms())
486 SPMap.insert(std::make_pair(SP, &CU));
487485 for (auto *Ty : CUNode->getEnumTypes()) {
488486 // The enum types array by design contains pointers to
489487 // MDNodes rather than DIRefs. Unique them here.
492490 for (auto *Ty : CUNode->getRetainedTypes()) {
493491 // The retained types array by design contains pointers to
494492 // MDNodes rather than DIRefs. Unique them here.
495 DIType *RT = cast(resolve(Ty->getRef()));
496 if (!RT->isExternalTypeRef())
497 // There is no point in force-emitting a forward declaration.
498 CU.getOrCreateTypeDIE(RT);
493 if (DIType *RT = dyn_cast(resolve(Ty->getRef())))
494 if (!RT->isExternalTypeRef())
495 // There is no point in force-emitting a forward declaration.
496 CU.getOrCreateTypeDIE(RT);
499497 }
500498 // Emit imported_modules last so that the relevant context is already
501499 // available.
524522 }
525523
526524 void DwarfDebug::finishSubprogramDefinitions() {
527 for (const auto &P : SPMap)
528 if (ProcessedSPNodes.count(P.first))
529 forBothCUs(*P.second, [&](DwarfCompileUnit &CU) {
530 CU.finishSubprogramDefinition(cast(P.first));
525 for (auto &F : MMI->getModule()->functions())
526 if (auto *SP = F.getSubprogram())
527 if (ProcessedSPNodes.count(SP) &&
528 SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug)
529 forBothCUs(*CUMap.lookup(SP->getUnit()), [&](DwarfCompileUnit &CU) {
530 CU.finishSubprogramDefinition(SP);
531 });
532 for (auto *AbsScope : LScopes.getAbstractScopesList())
533 if (auto *SP = dyn_cast(AbsScope->getScopeNode()))
534 if (ProcessedSPNodes.count(SP) &&
535 SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug)
536 forBothCUs(*CUMap.lookup(SP->getUnit()), [&](DwarfCompileUnit &CU) {
537 CU.finishSubprogramDefinition(SP);
531538 });
532539 }
533540
667674 }
668675
669676 // clean up.
670 SPMap.clear();
671677 AbstractVariables.clear();
672678 }
673679
10661072 // isn't structurally identical (see: file path/name info from clang, which
10671073 // includes the directory of the cpp file being built, even when the file name
10681074 // is absolute (such as an <> lookup header)))
1069 DwarfCompileUnit *TheCU = SPMap.lookup(FnScope->getScopeNode());
1070 if (!TheCU)
1071 // Once DISubprogram points to the owning CU, we can assert that the CU has
1072 // a NoDebug EmissionKind here.
1075 auto *SP = cast(FnScope->getScopeNode());
1076 DwarfCompileUnit *TheCU = CUMap.lookup(SP->getUnit());
1077 if (!TheCU) {
1078 assert(SP->getUnit()->getEmissionKind() == DICompileUnit::NoDebug &&
1079 "DICompileUnit missing from llvm.dbg.cu?");
10731080 return;
1081 }
10741082 if (Asm->OutStreamer->hasRawTextSupport())
10751083 // Use a single line table if we are generating assembly.
10761084 Asm->OutStreamer->getContext().setDwarfCompileUnitID(0);
10921100 assert(CurFn == MF &&
10931101 "endFunction should be called with the same function as beginFunction");
10941102
1095 if (!MMI->hasDebugInfo() || LScopes.empty() ||
1096 !MF->getFunction()->getSubprogram() ||
1097 // Once DISubprogram points to the owning CU, we can check for a
1098 // CU with a NoDebug EmissionKind here.
1099 !SPMap.lookup(MF->getFunction()->getSubprogram())) {
1103 const DISubprogram *SP = MF->getFunction()->getSubprogram();
1104 if (!MMI->hasDebugInfo() || LScopes.empty() || !SP ||
1105 SP->getUnit()->getEmissionKind() == DICompileUnit::NoDebug) {
11001106 // If we don't have a lexical scope for this function then there will
11011107 // be a hole in the range information. Keep note of this by setting the
11021108 // previously used section to nullptr.
11051111 DebugHandlerBase::endFunction(MF);
11061112 // Mark functions with no debug info on any instructions, but a
11071113 // valid DISubprogram as processed.
1108 if (auto *SP = MF->getFunction()->getSubprogram())
1114 if (SP)
11091115 ProcessedSPNodes.insert(SP);
11101116 return;
11111117 }
11141120 Asm->OutStreamer->getContext().setDwarfCompileUnitID(0);
11151121
11161122 LexicalScope *FnScope = LScopes.getCurrentFunctionScope();
1117 auto *SP = cast(FnScope->getScopeNode());
1118 DwarfCompileUnit &TheCU = *SPMap.lookup(SP);
1123 SP = cast(FnScope->getScopeNode());
1124 DwarfCompileUnit &TheCU = *CUMap.lookup(SP->getUnit());
11191125
11201126 DenseSet ProcessedVars;
11211127 collectVariableInfo(TheCU, SP, ProcessedVars);
198198 /// Maps MDNode with its corresponding DwarfCompileUnit.
199199 MapVector CUMap;
200200
201 /// Maps subprogram MDNode with its corresponding DwarfCompileUnit.
202 MapVector SPMap;
203
204201 /// Maps a CU DIE with its corresponding DwarfCompileUnit.
205202 DenseMap CUDieMap;
206203
16721672 Printer.printEmissionKind("emissionKind", N->getEmissionKind());
16731673 Printer.printMetadata("enums", N->getRawEnumTypes());
16741674 Printer.printMetadata("retainedTypes", N->getRawRetainedTypes());
1675 Printer.printMetadata("subprograms", N->getRawSubprograms());
16761675 Printer.printMetadata("globals", N->getRawGlobalVariables());
16771676 Printer.printMetadata("imports", N->getRawImportedEntities());
16781677 Printer.printMetadata("macros", N->getRawMacros());
17021701 Printer.printInt("virtualIndex", N->getVirtualIndex(), false);
17031702 Printer.printDIFlags("flags", N->getFlags());
17041703 Printer.printBool("isOptimized", N->isOptimized());
1704 Printer.printMetadata("unit", N->getRawUnit());
17051705 Printer.printMetadata("templateParams", N->getRawTemplateParams());
17061706 Printer.printMetadata("declaration", N->getRawDeclaration());
17071707 Printer.printMetadata("variables", N->getRawVariables());
9595 CUNode->replaceRetainedTypes(MDTuple::get(VMContext, RetainValues));
9696
9797 DISubprogramArray SPs = MDTuple::get(VMContext, AllSubprograms);
98 if (!AllSubprograms.empty())
99 CUNode->replaceSubprograms(SPs.get());
100
101 for (auto *SP : SPs) {
98 auto resolveVariables = [&](DISubprogram *SP) {
10299 if (MDTuple *Temp = SP->getVariables().get()) {
103100 const auto &PV = PreservedVariables.lookup(SP);
104101 SmallVector Variables(PV.begin(), PV.end());
105102 DINodeArray AV = getOrCreateArray(Variables);
106103 TempMDTuple(Temp)->replaceAllUsesWith(AV.get());
107104 }
108 }
105 };
106 for (auto *SP : SPs)
107 resolveVariables(SP);
108 for (auto *N : RetainValues)
109 if (auto *SP = dyn_cast(N))
110 resolveVariables(SP);
109111
110112 if (!AllGVs.empty())
111113 CUNode->replaceGlobalVariables(MDTuple::get(VMContext, AllGVs));
147149 assert(!CUNode && "Can only make one compile unit per DIBuilder instance");
148150 CUNode = DICompileUnit::getDistinct(
149151 VMContext, Lang, DIFile::get(VMContext, Filename, Directory), Producer,
150 isOptimized, Flags, RunTimeVer, SplitName, Kind, nullptr,
151 nullptr, nullptr, nullptr, nullptr, nullptr, DWOId);
152 isOptimized, Flags, RunTimeVer, SplitName, Kind, nullptr, nullptr,
153 nullptr, nullptr, nullptr, DWOId);
152154
153155 // Create a named metadata so that it is easier to find cu in a module.
154156 NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.cu");
504506 return createTypeWithFlags(VMContext, Ty, Flags);
505507 }
506508
507 void DIBuilder::retainType(DIType *T) {
509 void DIBuilder::retainType(DIScope *T) {
508510 assert(T && "Expected non-null type");
511 assert((isa(T) || (isa(T) &&
512 cast(T)->isDefinition() == false)) &&
513 "Expected type or subprogram declaration");
509514 AllRetainTypes.emplace_back(T);
510515 }
511516
683688 unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
684689 bool isDefinition, unsigned ScopeLine, unsigned Flags, bool isOptimized,
685690 DITemplateParameterArray TParams, DISubprogram *Decl) {
686 auto *Node =
687 getSubprogram(/* IsDistinct = */ isDefinition, VMContext,
688 DIScopeRef::get(getNonCompileUnitScope(Context)), Name,
689 LinkageName, File, LineNo, Ty, isLocalToUnit, isDefinition,
690 ScopeLine, nullptr, 0, 0, Flags, isOptimized, TParams, Decl,
691 MDTuple::getTemporary(VMContext, None).release());
691 auto *Node = getSubprogram(
692 /* IsDistinct = */ isDefinition, VMContext,
693 DIScopeRef::get(getNonCompileUnitScope(Context)), Name, LinkageName, File,
694 LineNo, Ty, isLocalToUnit, isDefinition, ScopeLine, nullptr, 0, 0, Flags,
695 isOptimized, isDefinition ? CUNode : nullptr, TParams, Decl,
696 MDTuple::getTemporary(VMContext, None).release());
692697
693698 if (isDefinition)
694699 AllSubprograms.push_back(Node);
704709 return DISubprogram::getTemporary(
705710 VMContext, DIScopeRef::get(getNonCompileUnitScope(Context)), Name,
706711 LinkageName, File, LineNo, Ty, isLocalToUnit, isDefinition,
707 ScopeLine, nullptr, 0, 0, Flags, isOptimized, TParams, Decl,
708 nullptr)
712 ScopeLine, nullptr, 0, 0, Flags, isOptimized,
713 isDefinition ? CUNode : nullptr, TParams, Decl, nullptr)
709714 .release();
710715 }
711716
723728 /* IsDistinct = */ isDefinition, VMContext,
724729 DIScopeRef::get(cast(Context)), Name, LinkageName, F, LineNo, Ty,
725730 isLocalToUnit, isDefinition, LineNo, DITypeRef::get(VTableHolder), VK,
726 VIndex, Flags, isOptimized, TParams, nullptr, nullptr);
731 VIndex, Flags, isOptimized, isDefinition ? CUNode : nullptr, TParams,
732 nullptr, nullptr);
727733
728734 if (isDefinition)
729735 AllSubprograms.push_back(SP);
9393 processType(DIG->getType().resolve(TypeIdentifierMap));
9494 }
9595 }
96 for (auto *SP : CU->getSubprograms())
97 processSubprogram(SP);
9896 for (auto *ET : CU->getEnumTypes())
9997 processType(ET);
10098 for (auto *RT : CU->getRetainedTypes())
101 processType(RT);
99 if (auto *T = dyn_cast(RT))
100 processType(T);
101 else
102 processSubprogram(cast(RT));
102103 for (auto *Import : CU->getImportedEntities()) {
103104 auto *Entity = Import->getEntity().resolve(TypeIdentifierMap);
104105 if (auto *T = dyn_cast(Entity))
111112 processScope(M->getScope());
112113 }
113114 }
115 for (auto &F : M.functions())
116 if (auto *SP = cast_or_null(F.getSubprogram()))
117 processSubprogram(SP);
114118 }
115119
116120 void DebugInfoFinder::processLocation(const Module &M, const DILocation *Loc) {
288288 MDString *Producer, bool IsOptimized, MDString *Flags,
289289 unsigned RuntimeVersion, MDString *SplitDebugFilename,
290290 unsigned EmissionKind, Metadata *EnumTypes, Metadata *RetainedTypes,
291 Metadata *Subprograms, Metadata *GlobalVariables,
292 Metadata *ImportedEntities, Metadata *Macros, uint64_t DWOId,
293 StorageType Storage, bool ShouldCreate) {
291 Metadata *GlobalVariables, Metadata *ImportedEntities, Metadata *Macros,
292 uint64_t DWOId, StorageType Storage, bool ShouldCreate) {
294293 assert(Storage != Uniqued && "Cannot unique DICompileUnit");
295294 assert(isCanonical(Producer) && "Expected canonical MDString");
296295 assert(isCanonical(Flags) && "Expected canonical MDString");
297296 assert(isCanonical(SplitDebugFilename) && "Expected canonical MDString");
298297
299 Metadata *Ops[] = {File, Producer, Flags, SplitDebugFilename, EnumTypes,
300 RetainedTypes, Subprograms, GlobalVariables,
301 ImportedEntities, Macros};
298 Metadata *Ops[] = {
299 File, Producer, Flags, SplitDebugFilename,
300 EnumTypes, RetainedTypes, GlobalVariables, ImportedEntities,
301 Macros};
302302 return storeImpl(new (array_lengthof(Ops)) DICompileUnit(
303303 Context, Storage, SourceLanguage, IsOptimized,
304304 RuntimeVersion, EmissionKind, DWOId, Ops),
334334 MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
335335 bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
336336 Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
337 unsigned Flags, bool IsOptimized, Metadata *TemplateParams,
337 unsigned Flags, bool IsOptimized, Metadata *Unit, Metadata *TemplateParams,
338338 Metadata *Declaration, Metadata *Variables, StorageType Storage,
339339 bool ShouldCreate) {
340340 assert(isCanonical(Name) && "Expected canonical MDString");
342342 DEFINE_GETIMPL_LOOKUP(DISubprogram,
343343 (Scope, Name, LinkageName, File, Line, Type,
344344 IsLocalToUnit, IsDefinition, ScopeLine, ContainingType,
345 Virtuality, VirtualIndex, Flags, IsOptimized,
345 Virtuality, VirtualIndex, Flags, IsOptimized, Unit,
346346 TemplateParams, Declaration, Variables));
347 Metadata *Ops[] = {File, Scope, Name, Name,
348 LinkageName, Type, ContainingType, TemplateParams,
349 Declaration, Variables};
347 Metadata *Ops[] = {File, Scope, Name, Name,
348 LinkageName, Type, ContainingType, Unit,
349 TemplateParams, Declaration, Variables};
350350 DEFINE_GETIMPL_STORE(DISubprogram,
351351 (Line, ScopeLine, Virtuality, VirtualIndex, Flags,
352352 IsLocalToUnit, IsDefinition, IsOptimized),
479479 unsigned VirtualIndex;
480480 unsigned Flags;
481481 bool IsOptimized;
482 Metadata *Unit;
482483 Metadata *TemplateParams;
483484 Metadata *Declaration;
484485 Metadata *Variables;
488489 bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
489490 Metadata *ContainingType, unsigned Virtuality,
490491 unsigned VirtualIndex, unsigned Flags, bool IsOptimized,
491 Metadata *TemplateParams, Metadata *Declaration,
492 Metadata *Unit, Metadata *TemplateParams, Metadata *Declaration,
492493 Metadata *Variables)
493494 : Scope(Scope), Name(Name), LinkageName(LinkageName), File(File),
494495 Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit),
495496 IsDefinition(IsDefinition), ScopeLine(ScopeLine),
496497 ContainingType(ContainingType), Virtuality(Virtuality),
497498 VirtualIndex(VirtualIndex), Flags(Flags), IsOptimized(IsOptimized),
498 TemplateParams(TemplateParams), Declaration(Declaration),
499 Unit(Unit), TemplateParams(TemplateParams), Declaration(Declaration),
499500 Variables(Variables) {}
500501 MDNodeKeyImpl(const DISubprogram *N)
501502 : Scope(N->getRawScope()), Name(N->getRawName()),
505506 ScopeLine(N->getScopeLine()), ContainingType(N->getRawContainingType()),
506507 Virtuality(N->getVirtuality()), VirtualIndex(N->getVirtualIndex()),
507508 Flags(N->getFlags()), IsOptimized(N->isOptimized()),
508 TemplateParams(N->getRawTemplateParams()),
509 Unit(N->getRawUnit()), TemplateParams(N->getRawTemplateParams()),
509510 Declaration(N->getRawDeclaration()), Variables(N->getRawVariables()) {}
510511
511512 bool isKeyOf(const DISubprogram *RHS) const {
518519 ContainingType == RHS->getRawContainingType() &&
519520 Virtuality == RHS->getVirtuality() &&
520521 VirtualIndex == RHS->getVirtualIndex() && Flags == RHS->getFlags() &&
521 IsOptimized == RHS->isOptimized() &&
522 IsOptimized == RHS->isOptimized() && Unit == RHS->getUnit() &&
522523 TemplateParams == RHS->getRawTemplateParams() &&
523524 Declaration == RHS->getRawDeclaration() &&
524525 Variables == RHS->getRawVariables();
950950 if (auto *Array = N.getRawRetainedTypes()) {
951951 Assert(isa(Array), "invalid retained type list", &N, Array);
952952 for (Metadata *Op : N.getRetainedTypes()->operands()) {
953 Assert(Op && isa(Op), "invalid retained type", &N, Op);
954 }
955 }
956 if (auto *Array = N.getRawSubprograms()) {
957 Assert(isa(Array), "invalid subprogram list", &N, Array);
958 for (Metadata *Op : N.getSubprograms()->operands()) {
959 Assert(Op && isa(Op), "invalid subprogram ref", &N, Op);
953 Assert(Op && (isa(Op) ||
954 (isa(Op) &&
955 cast(Op)->isDefinition() == false)),
956 "invalid retained type", &N, Op);
960957 }
961958 }
962959 if (auto *Array = N.getRawGlobalVariables()) {
993990 N.getRawContainingType());
994991 if (auto *Params = N.getRawTemplateParams())
995992 visitTemplateParams(N, *Params);
996 if (auto *S = N.getRawDeclaration()) {
993 if (auto *S = N.getRawDeclaration())
997994 Assert(isa(S) && !cast(S)->isDefinition(),
998995 "invalid subprogram declaration", &N, S);
999 }
1000996 if (auto *RawVars = N.getRawVariables()) {
1001997 auto *Vars = dyn_cast(RawVars);
1002998 Assert(Vars, "invalid variable list", &N, RawVars);
10081004 Assert(!hasConflictingReferenceFlags(N.getFlags()), "invalid reference flags",
10091005 &N);
10101006
1011 if (N.isDefinition())
1007 auto *Unit = N.getRawUnit();
1008 if (N.isDefinition()) {
1009 // Subprogram definitions (not part of the type hierarchy).
10121010 Assert(N.isDistinct(), "subprogram definitions must be distinct", &N);
1011 Assert(Unit, "subprogram definitions must have a compile unit", &N);
1012 Assert(isa(Unit), "invalid unit type", &N, Unit);
1013 } else {
1014 // Subprogram declarations (part of the type hierarchy).
1015 Assert(!Unit, "subprogram declarations must not have a compile unit", &N);
1016 }
10131017 }
10141018
10151019 void Verifier::visitDILexicalBlockBase(const DILexicalBlockBase &N) {
20212025 auto *N = F.getSubprogram();
20222026 if (!N)
20232027 return;
2028
2029 visitDISubprogram(*N);
20242030
20252031 // Check that all !dbg attachments lead to back to N (or, at least, another
20262032 // subprogram that describes the same function).
44184424 auto *Array = CU->getRawRetainedTypes();
44194425 if (!Array || !isa(Array))
44204426 continue;
4421 for (DIType *Op : CU->getRetainedTypes())
4427 for (DIScope *Op : CU->getRetainedTypes())
44224428 if (auto *T = dyn_cast_or_null(Op))
44234429 if (auto *S = T->getRawIdentifier()) {
44244430 UnresolvedTypeRefs.erase(S);
399399 /// Flags to pass to value mapper invocations.
400400 RemapFlags ValueMapperFlags = RF_MoveDistinctMDs | RF_IgnoreMissingLocals;
401401
402 /// Set of subprogram metadata that does not need to be linked into the
403 /// destination module, because the functions were not imported directly
404 /// or via an inlined body in an imported function.
405 bool HasUnneededSPs = false;
406
407402 /// Handles cloning of a global values from the source module into
408403 /// the destination module, including setting the attributes and visibility.
409404 GlobalValue *copyGlobalValueProto(const GlobalValue *SGV, bool ForDefinition);
468463 GlobalValue *copyGlobalAliasProto(const GlobalAlias *SGA);
469464
470465 void linkNamedMDNodes();
471
472 /// Look for subprograms referenced from !llvm.dbg.cu that we don't want to
473 /// link in and map it to nullptr.
474 ///
475 /// \post HasUnneededSPs is true iff any unneeded subprograms were found.
476 void mapUnneededSubprograms();
477
478 /// Remove null subprograms from !llvm.dbg.cu.
479 void stripNullSubprograms(DICompileUnit *CU);
480466
481467 public:
482468 IRLinker(Module &DstM, IRMover::IdentifiedStructTypeSet &Set,
1003989 return false;
1004990 }
1005991
1006 void IRLinker::mapUnneededSubprograms() {
1007 // Track unneeded nodes to make it simpler to handle the case
1008 // where we are checking if an already-mapped SP is needed.
1009 NamedMDNode *CompileUnits = SrcM->getNamedMetadata("llvm.dbg.cu");
1010 if (!CompileUnits)
1011 return;
1012
1013 // Seed the ValueMap with the imported entities, in case they reference new
1014 // subprograms.
1015 // FIXME: The DISubprogram for functions not linked in but kept due to
1016 // being referenced by a DIImportedEntity should also get their
1017 // IsDefinition flag is unset.
1018 for (unsigned I = 0, E = CompileUnits->getNumOperands(); I != E; ++I) {
1019 if (MDTuple *IEs = cast(CompileUnits->getOperand(I))
1020 ->getImportedEntities()
1021 .get())
1022 (void)MapMetadata(IEs, ValueMap,
1023 ValueMapperFlags | RF_NullMapMissingGlobalValues,
1024 &TypeMap, &GValMaterializer);
1025 }
1026
1027 // Try to insert nullptr into the map for any SP not already mapped. If
1028 // the insertion succeeds, we don't need this subprogram.
1029 for (unsigned I = 0, E = CompileUnits->getNumOperands(); I != E; ++I) {
1030 for (auto *Op :
1031 cast(CompileUnits->getOperand(I))->getSubprograms())
1032 if (ValueMap.MD().insert(std::make_pair(Op, TrackingMDRef())).second)
1033 HasUnneededSPs = true;
1034 }
1035 }
1036
1037 // Squash null subprograms from the given compile unit's subprogram list.
1038 void IRLinker::stripNullSubprograms(DICompileUnit *CU) {
1039 // There won't be any nulls if we didn't have any subprograms marked
1040 // as unneeded.
1041 if (!HasUnneededSPs)
1042 return;
1043 SmallVector NewSPs;
1044 NewSPs.reserve(CU->getSubprograms().size());
1045 bool FoundNull = false;
1046 for (DISubprogram *SP : CU->getSubprograms()) {
1047 if (!SP) {
1048 FoundNull = true;
1049 continue;
1050 }
1051 NewSPs.push_back(SP);
1052 }
1053 if (FoundNull)
1054 CU->replaceSubprograms(MDTuple::get(CU->getContext(), NewSPs));
1055 }
1056
1057992 /// Insert all of the named MDNodes in Src into the Dest module.
1058993 void IRLinker::linkNamedMDNodes() {
1059 mapUnneededSubprograms();
1060994 const NamedMDNode *SrcModFlags = SrcM->getModuleFlagsMetadata();
1061995 for (const NamedMDNode &NMD : SrcM->named_metadata()) {
1062996 // Don't link module flags here. Do them separately.
10681002 MDNode *DestMD = MapMetadata(
10691003 op, ValueMap, ValueMapperFlags | RF_NullMapMissingGlobalValues,
10701004 &TypeMap, &GValMaterializer);
1071 // For each newly mapped compile unit remove any null subprograms,
1072 // which occur when mapUnneededSubprograms identified any as unneeded
1073 // in the dest module.
1074 if (auto *CU = dyn_cast(DestMD))
1075 stripNullSubprograms(CU);
10761005 DestNMD->addOperand(DestMD);
10771006 }
10781007 }
311311 }
312312
313313 for (DICompileUnit *DIC : F.compile_units()) {
314 // Create our live subprogram list.
315 bool SubprogramChange = false;
316 for (DISubprogram *DISP : DIC->getSubprograms()) {
317 // Make sure we visit each subprogram only once.
318 if (!VisitedSet.insert(DISP).second)
319 continue;
320
321 // If the function referenced by DISP is not null, the function is live.
322 if (LiveSPs.count(DISP))
323 LiveSubprograms.push_back(DISP);
324 else
325 SubprogramChange = true;
326 }
327
328314 // Create our live global variable list.
329315 bool GlobalVariableChange = false;
330316 for (DIGlobalVariable *DIG : DIC->getGlobalVariables()) {
340326 GlobalVariableChange = true;
341327 }
342328
343 // If we found dead subprograms or global variables, replace the current
344 // subprogram list/global variable list with our new live subprogram/global
345 // variable list.
346 if (SubprogramChange) {
347 DIC->replaceSubprograms(MDTuple::get(C, LiveSubprograms));
348 Changed = true;
349 }
350
329 // If we found dead global variables, replace the current global
330 // variable list with our new live global variable list.
351331 if (GlobalVariableChange) {
352332 DIC->replaceGlobalVariables(MDTuple::get(C, LiveGlobalVariables));
353333 Changed = true;
137137 Module *M;
138138 LLVMContext *Ctx;
139139 SmallVector, 16> Funcs;
140 DenseMap FnMap;
141140 };
142141 }
143142
449448 this->M = &M;
450449 Ctx = &M.getContext();
451450
452 FnMap.clear();
453 for (Function &F : M) {
454 if (DISubprogram *SP = F.getSubprogram())
455 FnMap[SP] = &F;
456 }
457
458451 if (Options.EmitNotes) emitProfileNotes();
459452 if (Options.EmitData) return emitProfileArcs();
460453 return false;
461454 }
462455
463 static bool functionHasLines(Function *F) {
456 static bool functionHasLines(Function &F) {
464457 // Check whether this function actually has any source lines. Not only
465458 // do these waste space, they also can crash gcov.
466 for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
467 for (BasicBlock::iterator I = BB->begin(), IE = BB->end();
468 I != IE; ++I) {
459 for (auto &BB : F) {
460 for (auto &I : BB) {
469461 // Debug intrinsic locations correspond to the location of the
470462 // declaration, not necessarily any statements or expressions.
471 if (isa(I)) continue;
472
473 const DebugLoc &Loc = I->getDebugLoc();
463 if (isa(&I)) continue;
464
465 const DebugLoc &Loc = I.getDebugLoc();
474466 if (!Loc)
475467 continue;
476468
503495 std::string EdgeDestinations;
504496
505497 unsigned FunctionIdent = 0;
506 for (auto *SP : CU->getSubprograms()) {
507 Function *F = FnMap[SP];
508 if (!F) continue;
498 for (auto &F : M->functions()) {
499 DISubprogram *SP = F.getSubprogram();
500 if (!SP) continue;
509501 if (!functionHasLines(F)) continue;
510502
511503 // gcov expects every function to start with an entry block that has a
512504 // single successor, so split the entry block to make sure of that.
513 BasicBlock &EntryBlock = F->getEntryBlock();
505 BasicBlock &EntryBlock = F.getEntryBlock();
514506 BasicBlock::iterator It = EntryBlock.begin();
515507 while (isa(*It) || isa(*It))
516508 ++It;
517509 EntryBlock.splitBasicBlock(It);
518510
519 Funcs.push_back(make_unique(SP, F, &out, FunctionIdent++,
511 Funcs.push_back(make_unique(SP, &F, &out, FunctionIdent++,
520512 Options.UseCfgChecksum,
521513 Options.ExitBlockBeforeBody));
522514 GCOVFunction &Func = *Funcs.back();
523515
524 for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
525 GCOVBlock &Block = Func.getBlock(&*BB);
526 TerminatorInst *TI = BB->getTerminator();
516 for (auto &BB : F) {
517 GCOVBlock &Block = Func.getBlock(&BB);
518 TerminatorInst *TI = BB.getTerminator();
527519 if (int successors = TI->getNumSuccessors()) {
528520 for (int i = 0; i != successors; ++i) {
529521 Block.addEdge(Func.getBlock(TI->getSuccessor(i)));
533525 }
534526
535527 uint32_t Line = 0;
536 for (BasicBlock::iterator I = BB->begin(), IE = BB->end();
537 I != IE; ++I) {
528 for (auto &I : BB) {
538529 // Debug intrinsic locations correspond to the location of the
539530 // declaration, not necessarily any statements or expressions.
540 if (isa(I)) continue;
541
542 const DebugLoc &Loc = I->getDebugLoc();
531 if (isa(&I)) continue;
532
533 const DebugLoc &Loc = I.getDebugLoc();
543534 if (!Loc)
544535 continue;
545536
580571 bool Result = false;
581572 bool InsertIndCounterIncrCode = false;
582573 for (unsigned i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i) {
583 auto *CU = cast(CU_Nodes->getOperand(i));
584574 SmallVector, 8> CountersBySP;
585 for (auto *SP : CU->getSubprograms()) {
586 Function *F = FnMap[SP];
587 if (!F) continue;
575 for (auto &F : M->functions()) {
576 DISubprogram *SP = F.getSubprogram();
577 if (!SP) continue;
588578 if (!functionHasLines(F)) continue;
589579 if (!Result) Result = true;
590580 unsigned Edges = 0;
591 for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
592 TerminatorInst *TI = BB->getTerminator();
581 for (auto &BB : F) {
582 TerminatorInst *TI = BB.getTerminator();
593583 if (isa(TI))
594584 ++Edges;
595585 else
609599 UniqueVector ComplexEdgeSuccs;
610600
611601 unsigned Edge = 0;
612 for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
613 TerminatorInst *TI = BB->getTerminator();
602 for (auto &BB : F) {
603 TerminatorInst *TI = BB.getTerminator();
614604 int Successors = isa(TI) ? 1 : TI->getNumSuccessors();
615605 if (Successors) {
616606 if (Successors == 1) {
617 IRBuilder<> Builder(&*BB->getFirstInsertionPt());
607 IRBuilder<> Builder(&*BB.getFirstInsertionPt());
618608 Value *Counter = Builder.CreateConstInBoundsGEP2_64(Counters, 0,
619609 Edge);
620610 Value *Count = Builder.CreateLoad(Counter);
634624 Count = Builder.CreateAdd(Count, Builder.getInt64(1));
635625 Builder.CreateStore(Count, Counter);
636626 } else {
637 ComplexEdgePreds.insert(&*BB);
627 ComplexEdgePreds.insert(&BB);
638628 for (int i = 0; i != Successors; ++i)
639629 ComplexEdgeSuccs.insert(TI->getSuccessor(i));
640630 }
645635
646636 if (!ComplexEdgePreds.empty()) {
647637 GlobalVariable *EdgeTable =
648 buildEdgeLookupTable(F, Counters,
638 buildEdgeLookupTable(&F, Counters,
649639 ComplexEdgePreds, ComplexEdgeSuccs);
650640 GlobalVariable *EdgeState = getEdgeStateValue();
651641
171171 TypeMapper, Materializer);
172172 }
173173
174 // Find the MDNode which corresponds to the subprogram data that described F.
175 static DISubprogram *FindSubprogram(const Function *F,
176 DebugInfoFinder &Finder) {
177 for (DISubprogram *Subprogram : Finder.subprograms()) {
178 if (Subprogram->describes(F))
179 return Subprogram;
180 }
181 return nullptr;
182 }
183
184 // Add an operand to an existing MDNode. The new operand will be added at the
185 // back of the operand list.
186 static void AddOperand(DICompileUnit *CU, DISubprogramArray SPs,
187 Metadata *NewSP) {
188 SmallVector NewSPs;
189 NewSPs.reserve(SPs.size() + 1);
190 for (auto *SP : SPs)
191 NewSPs.push_back(SP);
192 NewSPs.push_back(NewSP);
193 CU->replaceSubprograms(MDTuple::get(CU->getContext(), NewSPs));
194 }
195
196174 // Clone the module-level debug info associated with OldFunc. The cloned data
197175 // will point to NewFunc instead.
198176 static void CloneDebugInfoMetadata(Function *NewFunc, const Function *OldFunc,
199177 ValueToValueMapTy &VMap) {
200 DebugInfoFinder Finder;
201 Finder.processModule(*OldFunc->getParent());
202
203 const DISubprogram *OldSubprogramMDNode = FindSubprogram(OldFunc, Finder);
204 if (!OldSubprogramMDNode) return;
205
206 auto *NewSubprogram =
207 cast(MapMetadata(OldSubprogramMDNode, VMap));
208 NewFunc->setSubprogram(NewSubprogram);
209
210 for (auto *CU : Finder.compile_units()) {
211 auto Subprograms = CU->getSubprograms();
212 // If the compile unit's function list contains the old function, it should
213 // also contain the new one.
214 for (auto *SP : Subprograms) {
215 if (SP == OldSubprogramMDNode) {
216 AddOperand(CU, Subprograms, NewSubprogram);
217 break;
218 }
219 }
178 if (const DISubprogram *OldSP = OldFunc->getSubprogram()) {
179 auto *NewSP = cast(MapMetadata(OldSP, VMap));
180 // FIXME: There ought to be a better way to do this: ValueMapper
181 // will clone the distinct DICompileUnit. Use the original one
182 // instead.
183 NewSP->replaceUnit(OldSP->getUnit());
184 NewFunc->setSubprogram(NewSP);
220185 }
221186 }
222187
2626 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
2727
2828 !7 = !{!1}
29 !6 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 131941)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !9, retainedTypes: !9, subprograms: !7)
29 !6 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 131941)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !9, retainedTypes: !9)
3030 !0 = !DILocalVariable(name: "c", line: 2, scope: !1, file: !2, type: !5)
31 !1 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, file: !8, scope: !2, type: !3)
31 !1 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !6, scopeLine: 1, file: !8, scope: !2, type: !3)
3232 !2 = !DIFile(filename: "/d/j/debug-test.c", directory: "/Volumes/Data/b")
3333 !3 = !DISubroutineType(types: !4)
3434 !4 = !{!5}
1515 !6 = distinct !{}
1616 !7 = distinct !{}
1717
18 ; CHECK: !8 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: true, flags: "-O2", runtimeVersion: 2, splitDebugFilename: "abc.debug", emissionKind: FullDebug, enums: !2, retainedTypes: !3, subprograms: !4, globals: !5, imports: !6, macros: !7, dwoId: 42)
18 ; CHECK: !8 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: true, flags: "-O2", runtimeVersion: 2, splitDebugFilename: "abc.debug", emissionKind: FullDebug, enums: !2, retainedTypes: !3, globals: !5, imports: !6, macros: !7, dwoId: 42)
1919 !8 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang",
2020 isOptimized: true, flags: "-O2", runtimeVersion: 2,
2121 splitDebugFilename: "abc.debug",
2222 emissionKind: FullDebug,
23 enums: !2, retainedTypes: !3, subprograms: !4,
23 enums: !2, retainedTypes: !3,
2424 globals: !5, imports: !6, macros: !7, dwoId: 42)
2525
2626 ; CHECK: !9 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug)
0 ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
11 ; RUN: verify-uselistorder %s
22
3 ; CHECK: !named = !{!0, !1, !2, !3, !3}
4 !named = !{!0, !1, !2, !3, !4}
3 ; CHECK: !named = !{!0, !3, !4, !5, !5}
4 !named = !{!0, !3, !4, !5, !6}
55
66 !llvm.module.flags = !{!7}
7 !llvm.dbg.cu = !{!5}
7 !llvm.dbg.cu = !{!1}
88
99 ; CHECK: !0 = distinct !DISubprogram({{.*}})
10 ; CHECK-NEXT: !1 = !DICompositeType({{.*}})
11 !0 = distinct !DISubprogram(name: "foo")
12 !1 = !DICompositeType(tag: DW_TAG_structure_type, name: "Class", size: 32, align: 32)
10 !0 = distinct !DISubprogram(name: "foo", isDefinition: true, unit: !1)
1311
14 ; CHECK-NEXT: !2 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "foo", scope: !0, entity: !1, line: 7)
15 !2 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "foo", scope: !0,
12 !1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
13 file: !2,
14 isOptimized: true, flags: "-O2",
15 splitDebugFilename: "abc.debug", emissionKind: 2)
16 !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
17 ; CHECK: !3 = !DICompositeType({{.*}})
18 !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "Class", size: 32, align: 32)
19
20 ; CHECK-NEXT: !4 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "foo", scope: !0, entity: !1, line: 7)
21 !4 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "foo", scope: !0,
1622 entity: !1, line: 7)
1723
18 ; CHECK-NEXT: !3 = !DIImportedEntity(tag: DW_TAG_imported_module, scope: !0)
19 !3 = !DIImportedEntity(tag: DW_TAG_imported_module, scope: !0)
20 !4 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "", scope: !0, entity: null,
24 ; CHECK-NEXT: !5 = !DIImportedEntity(tag: DW_TAG_imported_module, scope: !0)
25 !5 = !DIImportedEntity(tag: DW_TAG_imported_module, scope: !0)
26 !6 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "", scope: !0, entity: null,
2127 line: 0)
22
23 !5 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
24 file: !6,
25 isOptimized: true, flags: "-O2",
26 splitDebugFilename: "abc.debug", emissionKind: 2,
27 subprograms: !{!0})
28 !6 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
2928 !7 = !{i32 2, !"Debug Info Version", i32 3}
0 ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
11 ; RUN: verify-uselistorder %s
22
3 ; CHECK: !named = !{!0, !1, !2, !3, !4, !4, !5, !6, !7, !7}
4 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
3 ; CHECK: !named = !{!0, !1, !2, !3, !4, !4, !5, !6, !7, !7, !8}
4 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10}
55
66 !llvm.module.flags = !{!11}
7 !llvm.dbg.cu = !{!10}
7 !llvm.dbg.cu = !{!0}
88
9 !0 = distinct !{}
10 !1 = distinct !DISubprogram(name: "foo", scope: !2)
11 !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
9 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
10 file: !1,
11 isOptimized: true, flags: "-O2",
12 splitDebugFilename: "abc.debug", emissionKind: 2)
13 !1 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
14 !2 = distinct !DISubprogram(name: "foo", scope: !1, unit: !0)
1215
13 ; CHECK: !3 = !DILexicalBlock(scope: !1, file: !2, line: 7, column: 35)
14 !3 = !DILexicalBlock(scope: !1, file: !2, line: 7, column: 35)
16 ; CHECK: !3 = !DILexicalBlock(scope: !2, file: !1, line: 7, column: 35)
17 !3 = !DILexicalBlock(scope: !2, file: !1, line: 7, column: 35)
1518
16 ; CHECK: !4 = !DILexicalBlock(scope: !1)
17 !4 = !DILexicalBlock(scope: !1)
18 !5 = !DILexicalBlock(scope: !1, file: null, line: 0, column: 0)
19 ; CHECK: !4 = !DILexicalBlock(scope: !2)
20 !4 = !DILexicalBlock(scope: !2)
21 !5 = !DILexicalBlock(scope: !2, file: null, line: 0, column: 0)
1922
20 ; CHECK: !5 = !DILexicalBlockFile(scope: !3, file: !2, discriminator: 0)
21 ; CHECK: !6 = !DILexicalBlockFile(scope: !3, file: !2, discriminator: 1)
22 !6 = !DILexicalBlockFile(scope: !3, file: !2, discriminator: 0)
23 !7 = !DILexicalBlockFile(scope: !3, file: !2, discriminator: 1)
23 ; CHECK: !5 = !DILexicalBlockFile(scope: !3, file: !1, discriminator: 0)
24 ; CHECK: !6 = !DILexicalBlockFile(scope: !3, file: !1, discriminator: 1)
25 !6 = !DILexicalBlockFile(scope: !3, file: !1, discriminator: 0)
26 !7 = !DILexicalBlockFile(scope: !3, file: !1, discriminator: 1)
2427
2528 ; CHECK: !7 = !DILexicalBlockFile(scope: !3, discriminator: 7)
2629 !8 = !DILexicalBlockFile(scope: !3, discriminator: 7)
2730 !9 = !DILexicalBlockFile(scope: !3, file: null, discriminator: 7)
31 !10 = distinct !{}
2832
29 !10 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
30 file: !2,
31 isOptimized: true, flags: "-O2",
32 splitDebugFilename: "abc.debug", emissionKind: 2,
33 subprograms: !{!1})
3433 !11 = !{i32 2, !"Debug Info Version", i32 3}
0 ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
11 ; RUN: verify-uselistorder %s
22
3 ; CHECK: !named = !{!0, !1}
4 !named = !{!0, !1}
3 ; CHECK: !named = !{!0, !3}
4 !named = !{!0, !3}
55
66 !llvm.module.flags = !{!4}
7 !llvm.dbg.cu = !{!2}
7 !llvm.dbg.cu = !{!1}
88
9 !0 = distinct !DISubprogram()
9 !0 = distinct !DISubprogram(unit: !1)
10 !1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
11 file: !2,
12 isOptimized: true, flags: "-O2",
13 splitDebugFilename: "abc.debug", emissionKind: 2)
14 !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
1015
11 ; CHECK: !1 = !DILocalVariable(name: "foo", arg: 65535, scope: !0)
12 !1 = !DILocalVariable(name: "foo", arg: 65535, scope: !0)
16 ; CHECK: !3 = !DILocalVariable(name: "foo", arg: 65535, scope: !0)
17 !3 = !DILocalVariable(name: "foo", arg: 65535, scope: !0)
1318
14 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
15 file: !3,
16 isOptimized: true, flags: "-O2",
17 splitDebugFilename: "abc.debug", emissionKind: 2,
18 subprograms: !{!0})
19 !3 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
2019 !4 = !{i32 2, !"Debug Info Version", i32 3}
22
33 @foo = global i32 0
44
5 ; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8}
6 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8}
5 ; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
6 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
77
88 !llvm.module.flags = !{!10}
9 !llvm.dbg.cu = !{!9}
9 !llvm.dbg.cu = !{!1}
1010
11 !0 = distinct !DISubprogram()
12 !1 = distinct !{}
11 !0 = distinct !DISubprogram(unit: !1)
12 !1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
13 file: !2,
14 isOptimized: true, flags: "-O2",
15 splitDebugFilename: "abc.debug", emissionKind: 2)
1316 !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
1417 !3 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
1518 !4 = !DILocation(scope: !0)
2629 ; CHECK: !8 = !DILocalVariable(scope: !0)
2730 !7 = !DILocalVariable(scope: !0, arg: 1)
2831 !8 = !DILocalVariable(scope: !0)
32 !9 = distinct !{}
2933
30 !9 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
31 file: !2,
32 isOptimized: true, flags: "-O2",
33 splitDebugFilename: "abc.debug", emissionKind: 2,
34 subprograms: !{!0})
3534 !10 = !{i32 2, !"Debug Info Version", i32 3}
0 ; RUN: llvm-as < %s | llvm-dis | FileCheck %s
11 ; RUN: verify-uselistorder %s
22
3 ; CHECK: !named = !{!0, !1, !1, !2, !2, !3, !3, !4}
4 !named = !{!0, !1, !2, !3, !4, !5, !6, !7}
3 ; CHECK: !named = !{!0, !2, !3, !3, !4, !4, !5, !5, !6}
4 !named = !{!0, !2, !3, !4, !5, !6, !7, !8, !9}
55
66 !llvm.module.flags = !{!10}
7 !llvm.dbg.cu = !{!8}
7 !llvm.dbg.cu = !{!1}
88
99 ; CHECK: !0 = distinct !DISubprogram(
10 !0 = distinct !DISubprogram()
10 !0 = distinct !DISubprogram(unit: !1)
11 ; CHECK: !1 = distinct !DICompileUnit
12 !1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
13 file: !2,
14 isOptimized: true, flags: "-O2",
15 splitDebugFilename: "abc.debug", emissionKind: 2)
16 ; CHECK: !2 = !DIFile
17 !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
1118
12 ; CHECK-NEXT: !1 = !DILocation(line: 3, column: 7, scope: !0)
13 !1 = !DILocation(line: 3, column: 7, scope: !0)
14 !2 = !DILocation(scope: !0, column: 7, line: 3)
19 ; CHECK-NEXT: !3 = !DILocation(line: 3, column: 7, scope: !0)
20 !3 = !DILocation(line: 3, column: 7, scope: !0)
21 !4 = !DILocation(scope: !0, column: 7, line: 3)
1522
16 ; CHECK-NEXT: !2 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !1)
17 !3 = !DILocation(scope: !0, inlinedAt: !1, column: 7, line: 3)
18 !4 = !DILocation(column: 7, line: 3, scope: !0, inlinedAt: !1)
23 ; CHECK-NEXT: !4 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !3)
24 !5 = !DILocation(scope: !0, inlinedAt: !3, column: 7, line: 3)
25 !6 = !DILocation(column: 7, line: 3, scope: !0, inlinedAt: !3)
1926
20 ; CHECK-NEXT: !3 = !DILocation(line: 0, scope: !0)
21 !5 = !DILocation(scope: !0)
22 !6 = !DILocation(scope: !0, column: 0, line: 0)
27 ; CHECK-NEXT: !5 = !DILocation(line: 0, scope: !0)
28 !7 = !DILocation(scope: !0)
29 !8 = !DILocation(scope: !0, column: 0, line: 0)
2330
24 ; CHECK-NEXT: !4 = !DILocation(line: 4294967295, column: 65535, scope: !0)
25 !7 = !DILocation(line: 4294967295, column: 65535, scope: !0)
31 ; CHECK-NEXT: !6 = !DILocation(line: 4294967295, column: 65535, scope: !0)
32 !9 = !DILocation(line: 4294967295, column: 65535, scope: !0)
2633
27 !8 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
28 file: !9,
29 isOptimized: true, flags: "-O2",
30 splitDebugFilename: "abc.debug", emissionKind: 2,
31 subprograms: !{!0})
32 !9 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
3334 !10 = !{i32 2, !"Debug Info Version", i32 3}
55 ret void
66 }
77
8 ; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11}
9 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11}
8 ; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11, !12}
9 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11, !12}
1010
1111 !0 = !{null}
1212 !1 = distinct !DICompositeType(tag: DW_TAG_structure_type)
1616 !5 = distinct !{}
1717 !6 = distinct !{}
1818
19 ; CHECK: !7 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false)
20 !7 = distinct !DISubprogram()
19 ; CHECK: !7 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false, unit: !8)
20 !7 = distinct !DISubprogram(unit: !8)
2121
22 ; CHECK: !8 = !DISubprogram(scope: null, isLocal: false, isDefinition: false, isOptimized: false)
23 !8 = !DISubprogram(isDefinition: false)
22 !8 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
23 file: !2,
24 isOptimized: true, flags: "-O2",
25 splitDebugFilename: "abc.debug", emissionKind: 2)
2426
25 ; CHECK: !9 = 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, flags: DIFlagPrototyped, isOptimized: true, templateParams: !5, declaration: !8, variables: !6)
26 !9 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1,
27 file: !2, line: 7, type: !3, isLocal: true,
28 isDefinition: true, scopeLine: 8, containingType: !4,
29 virtuality: DW_VIRTUALITY_pure_virtual, virtualIndex: 10,
30 flags: DIFlagPrototyped, isOptimized: true,
31 templateParams: !5, declaration: !8, variables: !6)
27 ; CHECK: !9 = !DISubprogram(scope: null, isLocal: false, isDefinition: false, isOptimized: false)
28 !9 = !DISubprogram(isDefinition: false)
3229
33 ; CHECK: !10 = distinct !DISubprogram
34 ; CHECK-SAME: virtualIndex: 0,
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, flags: DIFlagPrototyped, isOptimized: true, unit: !8, templateParams: !5, declaration: !9, variables: !6)
3531 !10 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1,
3632 file: !2, line: 7, type: !3, isLocal: true,
37 isDefinition: true, scopeLine: 8, containingType: !4,
38 virtuality: DW_VIRTUALITY_pure_virtual, virtualIndex: 0,
39 flags: DIFlagPrototyped, isOptimized: true,
40 templateParams: !5, declaration: !8, variables: !6)
33 isDefinition: true, scopeLine: 8,
34 containingType: !4,
35 virtuality: DW_VIRTUALITY_pure_virtual,
36 virtualIndex: 10, flags: DIFlagPrototyped,
37 isOptimized: true, unit: !8, templateParams: !5,
38 declaration: !9, variables: !6)
4139
4240 ; CHECK: !11 = distinct !DISubprogram
43 ; CHECK-NOT: virtualIndex
41 ; CHECK-SAME: virtualIndex: 0,
4442 !11 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1,
4543 file: !2, line: 7, type: !3, isLocal: true,
46 isDefinition: true, scopeLine: 8, containingType: !4,
44 isDefinition: true, scopeLine: 8,
45 containingType: !4,
46 virtuality: DW_VIRTUALITY_pure_virtual,
47 virtualIndex: 0,
48 flags: DIFlagPrototyped, isOptimized: true,
49 unit: !8, templateParams: !5, declaration: !9,
50 variables: !6)
51
52 ; CHECK: !12 = distinct !DISubprogram
53 ; CHECK-NOT: virtualIndex
54 !12 = distinct !DISubprogram(name: "foo", linkageName: "_Zfoov", scope: !1,
55 file: !2, line: 7, type: !3, isLocal: true,
56 isDefinition: true, scopeLine: 8,
57 containingType: !4,
4758 virtuality: DW_VIRTUALITY_none,
4859 flags: DIFlagPrototyped, isOptimized: true,
49 templateParams: !5, declaration: !8, variables: !6)
60 unit: !8,
61 templateParams: !5, declaration: !9, variables: !6)
5062
51 !12 = !{i32 1, !"Debug Info Version", i32 3}
52 !llvm.module.flags = !{!12}
53 !llvm.dbg.cu = !{!13}
54
55 !13 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
56 file: !2,
57 isOptimized: true, flags: "-O2",
58 splitDebugFilename: "abc.debug", emissionKind: 2,
59 subprograms: !{!7, !9, !10, !11})
63 !13 = !{i32 1, !"Debug Info Version", i32 3}
64 !llvm.module.flags = !{!13}
65 !llvm.dbg.cu = !{!8}
1111 !llvm.dbg.cu = !{!0}
1212 !llvm.module.flags = !{!9}
1313
14 !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, subprograms: !3, globals: !2, imports: !2)
14 !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 !3 = !{!4}
18 !4 = distinct !DISubprogram(name: "main", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
1918 !5 = !DIFile(filename: "../llvm/tools/clang/test/CodeGen/debug-info-version.c", directory: "/Users/manmanren/llvm_gmail/release")
2019 !6 = !DISubroutineType(types: !7)
2120 !7 = !{!8}
11 ; RUN: verify-uselistorder %s
22
33 ; CHECK-LABEL: @test
4 ; CHECK: ret void, !bar !4, !foo !5
5 define void @test() {
4 ; CHECK: ret void, !bar !4, !foo !3
5 define void @test() !dbg !1 {
66 add i32 2, 1, !bar !0
77 add i32 1, 2, !foo !1
88 call void @llvm.dbg.func.start(metadata !"foo")
1010 ret void, !foo !0, !bar !1
1111 }
1212
13 ; CHECK-LABEL: define void @test2() !foo !6 !baz !7
13 ; CHECK-LABEL: define void @test2() !foo !5 !baz !6
1414 define void @test2() !foo !2 !baz !3 {
1515 unreachable
1616 }
1717
18 ; CHECK-LABEL: define void @test3() !bar !7
19 ; CHECK: unreachable, !bar !8
18 ; CHECK-LABEL: define void @test3() !bar !6
19 ; CHECK: unreachable, !bar !7
2020 define void @test3() !bar !3 {
2121 unreachable, !bar !4
2222 }
2323
2424 ; CHECK-LABEL: define void @test_attachment_name() {
25 ; CHECK: unreachable, !\342abc !8
25 ; CHECK: unreachable, !\342abc !7
2626 define void @test_attachment_name() {
2727 ;; Escape the first character when printing text IR, since it's a digit
2828 unreachable, !\34\32abc !4
3131 !llvm.module.flags = !{!7}
3232 !llvm.dbg.cu = !{!5}
3333 !0 = !DILocation(line: 662302, column: 26, scope: !1)
34 !1 = distinct !DISubprogram(name: "foo")
34 !1 = distinct !DISubprogram(name: "foo", isDefinition: true, unit: !5)
3535 !2 = distinct !{}
3636 !3 = distinct !{}
3737 !4 = distinct !{}
3838 !5 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
3939 file: !6,
4040 isOptimized: true, flags: "-O2",
41 splitDebugFilename: "abc.debug", emissionKind: 2,
42 subprograms: !{!1})
41 splitDebugFilename: "abc.debug", emissionKind: 2)
4342 !6 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
4443 !7 = !{i32 2, !"Debug Info Version", i32 3}
4544
0 ; RUN: llvm-dis < %s.bc | FileCheck %s
11 ; Check that subprogram definitions are correctly upgraded to 'distinct'.
2 ; Bitcode compiled from r245235 of the 3.7 release branch.
2 ; Bitcode compiled with llvm-as version 3.7.
33
4 !named = !{!0}
5 !0 = distinct !DICompileUnit(language: 12, file: !1, subprograms: !2)
4 define void @f() !dbg !3 { ret void }
5
6 !llvm.module.flags = !{!4}
7 !llvm.dbg.cu = !{!0}
8 !0 = distinct !DICompileUnit(language: 12, file: !1, subprograms: !{!3})
69 !1 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
7 !2 = !{!3}
810
911 ; CHECK: = distinct !DISubprogram({{.*}}, isDefinition: true
1012 !3 = !DISubprogram(name: "foo", isDefinition: true)
13 !4 = !{i32 2, !"Debug Info Version", i32 3}
2929 !llvm.dbg.cu = !{!1}
3030
3131 !0 = !{i32 2, !"Debug Info Version", i32 3}
32 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !DIFile(filename: "f", directory: "/d"),
33 subprograms: !{!2})
34 !2 = distinct !DISubprogram(name: "foo")
32 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !DIFile(filename: "f", directory: "/d"))
33 !2 = distinct !DISubprogram(name: "foo", unit: !1)
3534 !3 = !DILocation(line: 1, scope: !2)
3635 !4 = !DILocation(line: 2, scope: !2)
99 !0 = !{i32 2, !"Debug Info Version", i32 3}
1010
1111 !llvm.dbg.cu = !{!1}
12 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, subprograms: !{!3}, emissionKind: FullDebug)
12 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, emissionKind: FullDebug)
1313 !2 = !DIFile(filename: "foo.c", directory: "/path/to/dir")
1414 ; CHECK: [[SP]] = distinct !DISubprogram
1515 !3 = distinct !DISubprogram(file: !2, scope: !2, line: 51, name: "foo", function: void ()* @foo, type: !4)
3030 !3 = !{!"noise"}
3131 !4 = !{!"filler"}
3232
33 !8 = distinct !DICompileUnit(language: DW_LANG_C99, file: !15, subprograms: !{!9})
34 !9 = distinct !DISubprogram(name: "test", file: !15)
33 !8 = distinct !DICompileUnit(language: DW_LANG_C99, file: !15)
34 !9 = distinct !DISubprogram(name: "test", file: !15, unit: !8)
3535 !10 = !DILocation(line: 100, column: 101, scope: !9)
3636 !11 = !DILocation(line: 102, column: 103, scope: !9)
3737 !12 = !DILocation(line: 104, column: 105, scope: !9)
4343 !llvm.module.flags = !{!36, !37}
4444 !llvm.ident = !{!38}
4545
46 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 ", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
46 !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 !3 = !{!4}
50 !4 = distinct !DISubprogram(name: "", line: 140, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !12)
5150 !6 = !DISubroutineType(types: !7)
5251 !7 = !{null, !8}
5352 !8 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !9)
2020 !llvm.dbg.cu = !{!0}
2121
2222 !0 = !DIGlobalVariable(name: "vsplive", line: 617, isLocal: true, isDefinition: true, scope: !1, file: !2, type: !6)
23 !1 = distinct !DISubprogram(name: "drt_vsprintf", line: 616, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !20, scope: !2, type: !4)
23 !1 = distinct !DISubprogram(name: "drt_vsprintf", line: 616, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !3, file: !20, scope: !2, type: !4)
2424 !2 = !DIFile(filename: "print.i", directory: "/Volumes/Ebi/echeng/radars/r9146594")
25 !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (http://llvm.org/git/clang.git git:/git/puzzlebox/clang.git/ c4d1aea01c4444eb81bdbf391f1be309127c3cf1)", isOptimized: true, emissionKind: FullDebug, file: !20, subprograms: !22, enums: !21, retainedTypes: !21, globals: !{!0})
25 !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (http://llvm.org/git/clang.git git:/git/puzzlebox/clang.git/ c4d1aea01c4444eb81bdbf391f1be309127c3cf1)", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21, globals: !{!0})
2626 !4 = !DISubroutineType(types: !5)
2727 !5 = !{!6}
2828 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
29 !7 = distinct !DISubprogram(name: "putc_mem", line: 30, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !20, scope: !2, type: !8)
29 !7 = distinct !DISubprogram(name: "putc_mem", line: 30, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !3, file: !20, scope: !2, type: !8)
3030 !8 = !DISubroutineType(types: !9)
3131 !9 = !{null}
32 !10 = distinct !DISubprogram(name: "print_double", line: 203, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !20, scope: !2, type: !4)
33 !11 = distinct !DISubprogram(name: "print_number", line: 75, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !20, scope: !2, type: !4)
34 !12 = distinct !DISubprogram(name: "get_flags", line: 508, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !20, scope: !2, type: !8)
32 !10 = distinct !DISubprogram(name: "print_double", line: 203, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !3, file: !20, scope: !2, type: !4)
33 !11 = distinct !DISubprogram(name: "print_number", line: 75, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !3, file: !20, scope: !2, type: !4)
34 !12 = distinct !DISubprogram(name: "get_flags", line: 508, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !3, file: !20, scope: !2, type: !8)
3535 !13 = !DILocation(line: 653, column: 5, scope: !14)
3636 !14 = distinct !DILexicalBlock(line: 652, column: 35, file: !20, scope: !15)
3737 !15 = distinct !DILexicalBlock(line: 616, column: 1, file: !20, scope: !1)
4141 !19 = !DILocation(line: 853, column: 29, scope: !17)
4242 !20 = !DIFile(filename: "print.i", directory: "/Volumes/Ebi/echeng/radars/r9146594")
4343 !21 = !{i32 0}
44 !22 = !{!1, !7, !10, !11, !12}
1919 !llvm.dbg.cu = !{!0}
2020 !llvm.module.flags = !{!11, !12}
2121
22 !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, subprograms: !3)
22 !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)
2323 !1 = !DIFile(filename: "/tmp/test_debug_value.cl", directory: "/Users/matt/src/llvm/build_debug")
2424 !2 = !{}
25 !3 = !{!4}
26 !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, variables: !9)
25 !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)
2726 !5 = !DISubroutineType(types: !6)
2827 !6 = !{null, !7}
2928 !7 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !8, size: 64, align: 32)
2424 !llvm.dbg.cu = !{!0}
2525 !0 = !DILocation(line: 5, column: 2, scope: !1)
2626 !1 = distinct !DILexicalBlock(line: 1, column: 1, file: null, scope: !2)
27 !2 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !3)
27 !2 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scope: !3)
2828 !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang 1.1", isOptimized: true, emissionKind: FullDebug, file: !8, retainedTypes: !9)
2929 !4 = !DILocalVariable(name: "count_", line: 5, scope: !5, file: !3, type: !6)
3030 !5 = distinct !DILexicalBlock(line: 1, column: 1, file: null, scope: !1)
1414 !llvm.dbg.cu = !{!3}
1515 !llvm.module.flags = !{!15}
1616 !0 = !DILocalVariable(name: "b", line: 93, arg: 2, scope: !1, file: !2, type: !6)
17 !1 = distinct !DISubprogram(name: "__addvsi3", linkageName: "__addvsi3", line: 94, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: null, type: !4)
17 !1 = distinct !DISubprogram(name: "__addvsi3", linkageName: "__addvsi3", line: 94, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !12, scope: null, type: !4)
1818 !2 = !DIFile(filename: "libgcc2.c", directory: "/Users/bwilson/local/nightly/test-2010-04-14/build/llvmgcc.roots/llvmgcc~obj/src/gcc")
1919 !12 = !DIFile(filename: "libgcc2.c", directory: "/Users/bwilson/local/nightly/test-2010-04-14/build/llvmgcc.roots/llvmgcc~obj/src/gcc")
20 !3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 00)", isOptimized: true, emissionKind: FullDebug, file: !12, enums: !13, retainedTypes: !13, subprograms: !14)
20 !3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 00)", isOptimized: true, emissionKind: FullDebug, file: !12, enums: !13, retainedTypes: !13)
2121 !4 = !DISubroutineType(types: !5)
2222 !5 = !{!6, !6, !6}
2323 !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "SItype", line: 152, file: !12, baseType: !8)
2727 !10 = distinct !DILexicalBlock(line: 94, column: 0, file: !12, scope: !1)
2828 !11 = !DILocation(line: 100, scope: !10)
2929 !13 = !{}
30 !14 = !{!1}
3130 !15 = !{i32 1, !"Debug Info Version", i32 3}
4646 !llvm.dbg.cu = !{!3}
4747
4848 !0 = !DILocalVariable(name: "buf", line: 4, arg: 1, scope: !1, file: !2, type: !6)
49 !1 = distinct !DISubprogram(name: "x0", linkageName: "x0", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !26, scope: null, type: !4)
49 !1 = distinct !DISubprogram(name: "x0", linkageName: "x0", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !26, scope: null, type: !4)
5050 !2 = !DIFile(filename: "t.c", directory: "/private/tmp")
51 !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang 2.0", isOptimized: true, file: !26, subprograms: !{!0, !8, !10, !12}, globals: !{!14})
51 !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang 2.0", isOptimized: true, file: !26, globals: !{!14})
5252 !4 = !DISubroutineType(types: !5)
5353 !5 = !{null}
5454 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !26, scope: !2, baseType: !7)
8282 !0 = !DISubprogram(name: "SVal", line: 11, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !48, scope: !1, type: !14)
8383 !1 = !DICompositeType(tag: DW_TAG_structure_type, name: "SVal", line: 1, size: 64, align: 64, file: !48, elements: !4)
8484 !2 = !DIFile(filename: "small.cc", directory: "/Users/manav/R8248330")
85 !3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: FullDebug, file: !48, enums: !47, retainedTypes: !47, subprograms: !46, globals: !47, imports: !47)
85 !3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: FullDebug, file: !48, enums: !47, retainedTypes: !47, globals: !47, imports: !47)
8686 !4 = !{!5, !7, !0, !9}
8787 !5 = !DIDerivedType(tag: DW_TAG_member, name: "Data", line: 7, size: 64, align: 64, file: !48, scope: !1, baseType: !6)
8888 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !48, baseType: null)
9595 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
9696 !14 = !DISubroutineType(types: !15)
9797 !15 = !{null, !12}
98 !16 = distinct !DISubprogram(name: "SVal", linkageName: "_ZN4SValC1Ev", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !48, scope: !1, type: !14)
99 !17 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi4SVal", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !48, scope: !2, type: !18)
98 !16 = distinct !DISubprogram(name: "SVal", linkageName: "_ZN4SValC1Ev", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !48, scope: !1, type: !14)
99 !17 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi4SVal", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !48, scope: !2, type: !18)
100100 !18 = !DISubroutineType(types: !19)
101101 !19 = !{!13, !13, !1}
102 !20 = distinct !DISubprogram(name: "main", linkageName: "main", line: 23, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !48, scope: !2, type: !21)
102 !20 = distinct !DISubprogram(name: "main", linkageName: "main", line: 23, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !48, scope: !2, type: !21)
103103 !21 = !DISubroutineType(types: !22)
104104 !22 = !{!13}
105105 !23 = !DILocalVariable(name: "i", line: 16, arg: 1, scope: !17, file: !2, type: !13)
125125 !43 = !DILocation(line: 26, scope: !39)
126126 !44 = !DILocalVariable(name: "k", line: 26, scope: !39, file: !2, type: !13)
127127 !45 = !DILocation(line: 27, scope: !39)
128 !46 = !{!16, !17, !20}
129128 !47 = !{}
130129 !48 = !DIFile(filename: "small.cc", directory: "/Users/manav/R8248330")
131130 !49 = !{i32 1, !"Debug Info Version", i32 3}
7777 !llvm.dbg.cu = !{!2}
7878 !llvm.module.flags = !{!49}
7979
80 !0 = distinct !DISubprogram(name: "get1", linkageName: "get1", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 4, file: !47, scope: !1, type: !3, variables: !42)
80 !0 = distinct !DISubprogram(name: "get1", linkageName: "get1", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 4, file: !47, scope: !1, type: !3, variables: !42)
8181 !1 = !DIFile(filename: "foo.c", directory: "/tmp/")
82 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2369.8)", isOptimized: true, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, subprograms: !40, globals: !41, imports: !48)
82 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2369.8)", isOptimized: true, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, globals: !41, imports: !48)
8383 !3 = !DISubroutineType(types: !4)
8484 !4 = !{!5, !5}
8585 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "_Bool", size: 8, align: 8, encoding: DW_ATE_boolean)
86 !6 = distinct !DISubprogram(name: "get2", linkageName: "get2", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 7, file: !47, scope: !1, type: !3, variables: !43)
87 !7 = distinct !DISubprogram(name: "get3", linkageName: "get3", line: 10, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 10, file: !47, scope: !1, type: !3, variables: !44)
88 !8 = distinct !DISubprogram(name: "get4", linkageName: "get4", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 13, file: !47, scope: !1, type: !3, variables: !45)
89 !9 = distinct !DISubprogram(name: "get5", linkageName: "get5", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 16, file: !47, scope: !1, type: !3, variables: !46)
86 !6 = distinct !DISubprogram(name: "get2", linkageName: "get2", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 7, file: !47, scope: !1, type: !3, variables: !43)
87 !7 = distinct !DISubprogram(name: "get3", linkageName: "get3", line: 10, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 10, file: !47, scope: !1, type: !3, variables: !44)
88 !8 = distinct !DISubprogram(name: "get4", linkageName: "get4", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 13, file: !47, scope: !1, type: !3, variables: !45)
89 !9 = distinct !DISubprogram(name: "get5", linkageName: "get5", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, scopeLine: 16, file: !47, scope: !1, type: !3, variables: !46)
9090 !10 = !DILocalVariable(name: "a", line: 4, arg: 1, scope: !0, file: !1, type: !5)
9191 !11 = !DILocalVariable(name: "b", line: 4, scope: !12, file: !1, type: !5)
9292 !12 = distinct !DILexicalBlock(line: 4, column: 0, file: !47, scope: !0)
117117 !37 = !DILocation(line: 13, scope: !26)
118118 !38 = !DILocation(line: 16, scope: !9)
119119 !39 = !DILocation(line: 16, scope: !29)
120 !40 = !{!0, !6, !7, !8, !9}
121120 !41 = !{!13, !14, !15, !16, !17}
122121 !42 = !{!10, !11}
123122 !43 = !{!18, !19}
7272 !llvm.dbg.cu = !{!0}
7373 !llvm.module.flags = !{!49}
7474
75 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, subprograms: !40, globals: !41, imports: !48)
76 !1 = distinct !DISubprogram(name: "get1", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !47, scope: !2, type: !3, variables: !42)
75 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, globals: !41, imports: !48)
76 !1 = distinct !DISubprogram(name: "get1", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 5, file: !47, scope: !2, type: !3, variables: !42)
7777 !2 = !DIFile(filename: "ss3.c", directory: "/private/tmp")
7878 !3 = !DISubroutineType(types: !4)
7979 !4 = !{!5}
8080 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
81 !6 = distinct !DISubprogram(name: "get2", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 8, file: !47, scope: !2, type: !3, variables: !43)
82 !7 = distinct !DISubprogram(name: "get3", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 11, file: !47, scope: !2, type: !3, variables: !44)
83 !8 = distinct !DISubprogram(name: "get4", line: 14, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 14, file: !47, scope: !2, type: !3, variables: !45)
84 !9 = distinct !DISubprogram(name: "get5", line: 17, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 17, file: !47, scope: !2, type: !3, variables: !46)
81 !6 = distinct !DISubprogram(name: "get2", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 8, file: !47, scope: !2, type: !3, variables: !43)
82 !7 = distinct !DISubprogram(name: "get3", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 11, file: !47, scope: !2, type: !3, variables: !44)
83 !8 = distinct !DISubprogram(name: "get4", line: 14, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 14, file: !47, scope: !2, type: !3, variables: !45)
84 !9 = distinct !DISubprogram(name: "get5", line: 17, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 17, file: !47, scope: !2, type: !3, variables: !46)
8585 !10 = !DILocalVariable(name: "a", line: 5, arg: 1, scope: !1, file: !2, type: !5)
8686 !11 = !DILocalVariable(name: "b", line: 5, scope: !12, file: !2, type: !5)
8787 !12 = distinct !DILexicalBlock(line: 5, column: 19, file: !47, scope: !1)
109109 !37 = !DILocation(line: 14, column: 32, scope: !21)
110110 !38 = !DILocation(line: 17, column: 16, scope: !9)
111111 !39 = !DILocation(line: 17, column: 32, scope: !29)
112 !40 = !{!1, !6, !7, !8, !9}
113112 !41 = !{!25, !26}
114113 !42 = !{!10, !11}
115114 !43 = !{!13, !14}
676676 !llvm.dbg.cu = !{!0}
677677 !llvm.module.flags = !{!3}
678678
679 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "LLVM", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, subprograms: !2, globals: !2, imports: !2)
679 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "LLVM", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
680680 !1 = !DIFile(filename: "a.cpp", directory: "b")
681681 !2 = !{}
682682 !3 = !{i32 2, !"Debug Info Version", i32 3}
7878 !llvm.dbg.cu = !{!0}
7979 !llvm.module.flags = !{!33}
8080
81 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 182024) (llvm/trunk 182023)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !15, imports: !2)
81 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 182024) (llvm/trunk 182023)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !15, imports: !2)
8282 !1 = !DIFile(filename: "pr16110.c", directory: "/d/b")
8383 !2 = !{}
84 !3 = !{!4}
85 !4 = distinct !DISubprogram(name: "pr16110", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !9)
84 !4 = distinct !DISubprogram(name: "pr16110", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !0, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !9)
8685 !5 = !DIFile(filename: "pr16110.c", directory: "/d/b")
8786 !6 = !DISubroutineType(types: !7)
8887 !7 = !{!8}
2424 !llvm.module.flags = !{!9, !10}
2525 !llvm.ident = !{!11}
2626
27 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
27 !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 !3 = !{!4}
31 !4 = distinct !DISubprogram(name: "sum", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
3231 !5 = !DIFile(filename: "var.c", directory: "/tmp")
3332 !6 = !DISubroutineType(types: !7)
3433 !7 = !{!8, !8}
124124 !llvm.module.flags = !{!10, !11}
125125 !llvm.ident = !{!12}
126126
127 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
127 !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 !3 = !{!4}
131 !4 = distinct !DISubprogram(name: "test", linkageName: "_Z4testiiiiiddddd", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
132131 !5 = !DIFile(filename: "exp.cpp", directory: "/tmp")
133132 !6 = !DISubroutineType(types: !7)
134133 !7 = !{null, !8, !8, !8, !8, !8, !9, !9, !9, !9, !9}
3131 !llvm.dbg.cu = !{!0}
3232 !llvm.module.flags = !{!33}
3333
34 !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: !{}, subprograms: !30, imports: null)
35 !1 = distinct !DISubprogram(name: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 11, file: !2, scope: !2, type: !3, variables: !31)
34 !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)
3636 !2 = !DIFile(filename: "one.c", directory: "/Volumes/Athwagate/R10048772")
3737 !3 = !DISubroutineType(types: !4)
3838 !4 = !{null}
6161 !27 = distinct !DILexicalBlock(line: 11, column: 107, file: !2, scope: !1)
6262 !28 = !DILocation(line: 13, column: 5, scope: !27)
6363 !29 = !DILocation(line: 14, column: 1, scope: !27)
64 !30 = !{!1}
6564 !31 = !{!5, !13, !14, !17, !18, !19}
6665 !32 = !DIFile(filename: "one.c", directory: "/Volumes/Athwagate/R10048772")
6766 !33 = !{i32 1, !"Debug Info Version", i32 3}
110110 !llvm.dbg.cu = !{!0}
111111 !llvm.module.flags = !{!162}
112112
113 !0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "Apple clang version 2.1", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, file: !153, enums: !147, retainedTypes: !{}, subprograms: !148)
113 !0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "Apple clang version 2.1", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, file: !153, enums: !147, retainedTypes: !{})
114114 !1 = !DICompositeType(tag: DW_TAG_enumeration_type, line: 248, size: 32, align: 32, file: !160, scope: !0, elements: !3)
115115 !2 = !DIFile(filename: "header.h", directory: "/Volumes/Sandbox/llvm")
116116 !3 = !{!4}
133133 !20 = !DIFile(filename: "header4.h", directory: "/Volumes/Sandbox/llvm")
134134 !21 = !{!22}
135135 !22 = !DIEnumerator(name: "Eleven", value: 0) ; [ DW_TAG_enumerator ]
136 !23 = distinct !DISubprogram(name: "foobar_func_block_invoke_0", line: 609, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 609, file: !152, scope: !24, type: !25)
136 !23 = distinct !DISubprogram(name: "foobar_func_block_invoke_0", line: 609, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 609, file: !152, scope: !24, type: !25)
137137 !24 = !DIFile(filename: "MyLibrary.m", directory: "/Volumes/Sandbox/llvm")
138138 !25 = !DISubroutineType(types: !26)
139139 !26 = !{null}
258258 !145 = !DILocation(line: 613, column: 17, scope: !142)
259259 !146 = !DILocation(line: 615, column: 13, scope: !142)
260260 !147 = !{!1, !1, !5, !5, !9, !14, !19, !19, !14, !14, !14, !19, !19, !19}
261 !148 = !{!23}
262261 !149 = !DIFile(filename: "header3.h", directory: "/Volumes/Sandbox/llvm")
263262 !150 = !DIFile(filename: "Private.h", directory: "/Volumes/Sandbox/llvm")
264263 !151 = !DIFile(filename: "header4.h", directory: "/Volumes/Sandbox/llvm")
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, 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, variables: !51)
4545 !1 = !DIFile(filename: "build2.c", directory: "/private/tmp")
46 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !54, enums: !{}, retainedTypes: !{}, subprograms: !50, imports: null)
46 !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)
4848 !4 = !{!5}
4949 !5 = !DIDerivedType(tag: DW_TAG_typedef, name: "v4f32", line: 14, file: !54, scope: !2, baseType: !6)
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, 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, variables: !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, 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, variables: !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}
9191 !47 = distinct !DILexicalBlock(line: 41, column: 28, file: !15, scope: !14)
9292 !48 = !DILocation(line: 95, column: 3, scope: !25)
9393 !49 = !DILocation(line: 99, column: 3, scope: !25)
94 !50 = !{!0, !10, !14}
9594 !51 = !{!18}
9695 !52 = !{!19, !20, !24, !26, !27, !28, !29}
9796 !53 = !{!30}
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, 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, variables: !43)
6262 !1 = !DIFile(filename: "a.c", directory: "/tmp/")
63 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "(LLVM build 00)", isOptimized: true, emissionKind: FullDebug, file: !46, enums: !47, retainedTypes: !47, subprograms: !42, imports: null)
63 !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)
6565 !4 = !{!5, !6, !7, !8}
6666 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
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, 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, 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, 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)
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)
105105 !39 = !DILocation(line: 6, scope: !28, inlinedAt: !37)
106106 !40 = !DILocation(line: 22, scope: !25)
107107 !41 = !DILocation(line: 23, scope: !25)
108 !42 = !{!0, !9, !10}
109108 !43 = !{!16, !17, !18}
110109 !44 = !{!19, !20, !21}
111110 !45 = !{!22, !23, !24}
2020 !llvm.dbg.cu = !{!0}
2121 !llvm.module.flags = !{!7, !8}
2222
23 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "", isOptimized: false, subprograms: !{!3}, emissionKind: FullDebug)
23 !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, 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, variables: !2)
2727 !4 = !DISubroutineType(types: !5)
2828 !5 = !{null}
2929 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3737 !llvm.dbg.cu = !{!2}
3838 !llvm.module.flags = !{!56}
3939
40 !0 = distinct !DISubprogram(name: "test0001", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3, file: !54, scope: !1, type: !3, variables: !51)
40 !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)
4141 !1 = !DIFile(filename: "build2.c", directory: "/private/tmp")
42 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !54, enums: !{}, retainedTypes: !{}, subprograms: !50, imports: null)
42 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !54, enums: !{}, retainedTypes: !{}, imports: null)
4343 !3 = !DISubroutineType(types: !4)
4444 !4 = !{!5}
4545 !5 = !DIDerivedType(tag: DW_TAG_typedef, name: "v4f32", line: 14, file: !54, scope: !2, baseType: !6)
4747 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
4848 !8 = !{!9}
4949 !9 = !DISubrange(count: 4)
50 !10 = distinct !DISubprogram(name: "main", line: 59, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 59, file: !54, scope: !1, type: !11, variables: !52)
50 !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)
5151 !11 = !DISubroutineType(types: !12)
5252 !12 = !{!13}
5353 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
54 !14 = distinct !DISubprogram(name: "printFV", line: 41, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 41, file: !55, scope: !15, type: !16, variables: !53)
54 !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)
5555 !15 = !DIFile(filename: "/Volumes/Lalgate/work/llvm/projects/llvm-test/SingleSource/UnitTests/Vector/helpers.h", directory: "/private/tmp")
5656 !16 = !DISubroutineType(types: !17)
5757 !17 = !{null}
8787 !47 = distinct !DILexicalBlock(line: 41, column: 28, file: !55, scope: !14)
8888 !48 = !DILocation(line: 95, column: 3, scope: !25)
8989 !49 = !DILocation(line: 99, column: 3, scope: !25)
90 !50 = !{!0, !10, !14}
9190 !51 = !{!18}
9291 !52 = !{!19, !20, !24, !26, !27, !28, !29}
9392 !53 = !{!30}
6464 !llvm.dbg.cu = !{!2}
6565 !llvm.module.flags = !{!53}
6666
67 !0 = distinct !DISubprogram(name: "inlineprinter", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !51, scope: !1, type: !3, variables: !48)
67 !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)
6868 !1 = !DIFile(filename: "a.c", directory: "/private/tmp")
69 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 129915)", isOptimized: true, emissionKind: FullDebug, file: !51, enums: !52, retainedTypes: !52, subprograms: !47, imports: null)
69 !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)
7070 !3 = !DISubroutineType(types: !4)
7171 !4 = !{!5}
7272 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
73 !6 = distinct !DISubprogram(name: "printer", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 12, file: !51, scope: !1, type: !3, variables: !49)
74 !7 = distinct !DISubprogram(name: "main", line: 18, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 18, file: !51, scope: !1, type: !3, variables: !50)
73 !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)
74 !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)
7575 !8 = !DILocalVariable(name: "ptr", line: 4, arg: 1, scope: !0, file: !1, type: !9)
7676 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !2, baseType: null)
7777 !10 = !DILocalVariable(name: "val", line: 4, arg: 2, scope: !0, file: !1, type: !11)
116116 !44 = !DILocation(line: 6, column: 3, scope: !28, inlinedAt: !40)
117117 !45 = !DILocation(line: 22, column: 3, scope: !23)
118118 !46 = !DILocation(line: 23, column: 1, scope: !23)
119 !47 = !{!0, !6, !7}
120119 !48 = !{!8, !10, !12}
121120 !49 = !{!14, !15, !16}
122121 !50 = !{!17, !18, !22}
4242 !llvm.dbg.cu = !{!0}
4343 !llvm.module.flags = !{!20}
4444
45 !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, subprograms: !16, imports: null)
46 !1 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !18, scope: !2, type: !3, variables: !17)
45 !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)
46 !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)
4747 !2 = !DIFile(filename: "k.cc", directory: "/private/tmp")
4848 !3 = !DISubroutineType(types: !4)
4949 !4 = !{null}
5858 !13 = !DILocation(line: 8, column: 20, scope: !9)
5959 !14 = !DILocation(line: 7, column: 20, scope: !10)
6060 !15 = !DILocation(line: 10, column: 1, scope: !6)
61 !16 = !{!1}
6261 !17 = !{!5, !8}
6362 !18 = !DIFile(filename: "k.cc", directory: "/private/tmp")
6463 !19 = !{}
3838 ; ARM-linux .cfi_same_value r5
3939 }
4040
41 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
41 !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 !3 = !{!4}
45 !4 = distinct !DISubprogram(name: "test_basic", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
4645 !5 = !DIFile(filename: "var.c", directory: "/tmp")
4746 !6 = !DISubroutineType(types: !7)
4847 !7 = !{!8, !8}
3030 !llvm.dbg.cu = !{!0}
3131 !llvm.module.flags = !{!8, !9}
3232
33 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
33 !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 !3 = !{!4}
37 !4 = distinct !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, 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, variables: !2)
3837 !5 = !DIFile(filename: "tmp.c", directory: "/Users/tim/llvm/build")
3938 !6 = !DISubroutineType(types: !7)
4039 !7 = !{null}
4040 !llvm.module.flags = !{!11, !12}
4141 !llvm.ident = !{!13}
4242
43 !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, subprograms: !3)
43 !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 !3 = !{!4}
47 !4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !8)
4847 !5 = !DISubroutineType(types: !6)
4948 !6 = !{!7, !7, !7}
5049 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3636 !llvm.dbg.cu = !{!0}
3737 !llvm.module.flags = !{!29}
3838
39 !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, subprograms: !3, globals: !2)
39 !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 !3 = !{!5}
42 !5 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !11)
4342 !6 = !DIFile(filename: "hwloop-dbg.c", directory: "/usr2/kparzysz/s.hex/t")
4443 !7 = !DISubroutineType(types: !8)
4544 !8 = !{null, !9, !9}
1313 !llvm.dbg.cu = !{!2}
1414 !llvm.module.flags = !{!13}
1515
16 !0 = distinct !DISubprogram(name: "main", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: !1, type: !3)
16 !0 = distinct !DISubprogram(name: "main", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !12, scope: !1, type: !3)
1717 !1 = !DIFile(filename: "/tmp/x.c", directory: "/Users/manav")
18 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 120996)", isOptimized: false, emissionKind: FullDebug, file: !12, enums: !6, retainedTypes: !6, subprograms: !11)
18 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 120996)", isOptimized: false, emissionKind: FullDebug, file: !12, enums: !6, retainedTypes: !6)
1919 !3 = !DISubroutineType(types: !4)
2020 !4 = !{!5}
2121 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2424 !8 = distinct !DILexicalBlock(line: 2, column: 12, file: !12, scope: !0)
2525 !9 = !DILocation(line: 3, column: 11, scope: !8)
2626 !10 = !DILocation(line: 4, column: 2, scope: !8)
27 !11 = !{!0}
2827 !12 = !DIFile(filename: "/tmp/x.c", directory: "/Users/manav")
2928 !13 = !{i32 1, !"Debug Info Version", i32 3}
3838 !llvm.module.flags = !{!22, !23, !24, !25}
3939 !llvm.ident = !{!26}
4040
41 !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, subprograms: !3, globals: !2, imports: !2)
41 !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 !3 = !{!4}
45 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !17)
4645 !5 = !DISubroutineType(types: !6)
4746 !6 = !{!7, !8, !11, !12, !16}
4847 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4949 !llvm.module.flags = !{!22, !23, !24, !25}
5050 !llvm.ident = !{!26}
5151
52 !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, subprograms: !3, globals: !2, imports: !2)
52 !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 !3 = !{!4}
56 !4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !17)
5756 !5 = !DISubroutineType(types: !6)
5857 !6 = !{!7, !8, !11, !12, !16}
5958 !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
1919 !llvm.module.flags = !{!9, !10}
2020 !llvm.ident = !{!11}
2121
22 !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, subprograms: !3, globals: !2, imports: !2)
22 !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 !3 = !{!4}
26 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
2726 !5 = !DIFile(filename: "test.c", directory: "")
2827 !6 = !DISubroutineType(types: !7)
2928 !7 = !{!8, !8}
1919 !llvm.module.flags = !{!9, !10}
2020 !llvm.ident = !{!11}
2121
22 !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, subprograms: !3, globals: !2, imports: !2)
22 !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 !3 = !{!4}
26 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
2726 !5 = !DIFile(filename: "test.c", directory: "")
2827 !6 = !DISubroutineType(types: !7)
2928 !7 = !{!8, !8}
3030 !llvm.module.flags = !{!9, !10}
3131 !llvm.ident = !{!11}
3232
33 !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, subprograms: !3, globals: !2, imports: !2)
33 !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 !3 = !{!4}
37 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
3837 !5 = !DIFile(filename: "test.c", directory: "")
3938 !6 = !DISubroutineType(types: !7)
4039 !7 = !{!8, !8}
6160 body: |
6261 bb.0.entry:
6362 liveins: %edi
64 ; CHECK: DBG_VALUE debug-use _, 0, !12, !13, debug-location !14
65 ; CHECK: %eax = COPY %0, debug-location !15
66 ; CHECK: RETQ %eax, debug-location !15
63 ; CHECK: DBG_VALUE debug-use _, 0, !11, !12, debug-location !13
64 ; CHECK: %eax = COPY %0, debug-location !14
65 ; CHECK: RETQ %eax, debug-location !14
6766 %0 = COPY %edi
6867 DBG_VALUE debug-use _, 0, !12, !13, debug-location !14
6968 MOV32mr %stack.0.x.addr, 1, _, 0, _, %0
8584 liveins: %edi
8685
8786 %0 = COPY %edi
88 ; CHECK: DBG_VALUE _, i32 0, !12, !13
89 ; CHECK-NEXT: DBG_VALUE _, i64 -22, !12, !13
90 ; CHECK-NEXT: DBG_VALUE _, i128 123492148938512984928424384934328985928, !12, !13
87 ; CHECK: DBG_VALUE _, i32 0, !11, !12
88 ; CHECK-NEXT: DBG_VALUE _, i64 -22, !11, !12
89 ; CHECK-NEXT: DBG_VALUE _, i128 123492148938512984928424384934328985928, !11, !12
9190 DBG_VALUE _, i32 0, !12, !13
9291 DBG_VALUE _, i64 -22, !12, !13
9392 DBG_VALUE _, i128 123492148938512984928424384934328985928, !12, !13
2121 !llvm.dbg.cu = !{!0}
2222 !llvm.module.flags = !{!3}
2323
24 !0 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, subprograms: !{!5})
24 !0 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2)
2525 !1 = !DIFile(filename: "t.c", directory: "")
2626 !2 = !{}
2727 !3 = !{i32 1, !"Debug Info Version", i32 3}
2828 !4 = !DILocalVariable(name: "x", scope: !5, file: !1, line: 16, type: !6)
29 !5 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false)
29 !5 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false, unit: !0)
3030 !6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
3131 !7 = !DIExpression()
3232 !8 = !DILocation(line: 0, scope: !5)
2121 !llvm.module.flags = !{!9, !10}
2222 !llvm.ident = !{!11}
2323
24 !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, subprograms: !3, globals: !2, imports: !2)
24 !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 !3 = !{!4}
28 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
2928 !5 = !DIFile(filename: "test.c", directory: "")
3029 !6 = !DISubroutineType(types: !7)
3130 !7 = !{!8, !8}
5352 bb.0.entry:
5453 liveins: %edi
5554 ; CHECK: %0 = COPY %edi
56 ; CHECK-NEXT: DBG_VALUE _, 0, !12, !13
55 ; CHECK-NEXT: DBG_VALUE _, 0, !11, !12
5756 %0 = COPY %edi
5857 DBG_VALUE _, 0, !12, ! 13
5958 MOV32mr %stack.0.x.addr, 1, _, 0, _, %0
3030 !llvm.dbg.cu = !{!0}
3131 !llvm.module.flags = !{!3}
3232
33 !0 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2,
34 subprograms: !{!5})
33 !0 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2)
3534 !1 = !DIFile(filename: "t.c", directory: "")
3635 !2 = !{}
3736 !3 = !{i32 1, !"Debug Info Version", i32 3}
3837 !4 = !DILocalVariable(name: "x", scope: !5, file: !1, line: 16, type: !9)
39 !5 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false)
38 !5 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false, unit: !0)
4039 !6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
4140 !7 = !DIExpression()
4241 !8 = !DILocation(line: 0, scope: !5)
5251 maxAlignment: 16
5352 # CHECK-LABEL: foo
5453 # CHECK: stack:
55 # CHECK: - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!6',
56 # CHECK-NEXT: di-expression: '!11', di-location: '!12' }
54 # CHECK: - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!4',
55 # CHECK-NEXT: di-expression: '!10', di-location: '!11' }
5756 stack:
5857 - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!4',
5958 di-expression: '!7', di-location: '!8' }
1919 !llvm.module.flags = !{!9, !10}
2020 !llvm.ident = !{!11}
2121
22 !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, subprograms: !3, globals: !2, imports: !2)
22 !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 !3 = !{!4}
26 !4 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, 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, variables: !2)
2726 !5 = !DIFile(filename: "test.c", directory: "")
2827 !6 = !DISubroutineType(types: !7)
2928 !7 = !{!8, !8}
2929 !llvm.dbg.cu = !{!0}
3030 !llvm.module.flags = !{!8, !9}
3131
32 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, subprograms: !3)
32 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
3333 !1 = !DIFile(filename: "bar.cu", directory: "/source/dir")
3434 !2 = !{}
35 !3 = !{!4, !7}
36 !4 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
35 !4 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
3736 !5 = !DIFile(filename: "foo.h", directory: "/source/dir")
3837 !6 = !DISubroutineType(types: !2)
39 !7 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !6, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
38 !7 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !6, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
4039 !8 = !{i32 2, !"Dwarf Version", i32 4}
4140 !9 = !{i32 2, !"Debug Info Version", i32 3}
4241 !10 = !DILocation(line: 1, column: 31, scope: !4)
1616 !llvm.dbg.cu = !{!0}
1717 !llvm.module.flags = !{!22}
1818
19 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1", isOptimized: true, emissionKind: FullDebug, file: !21, enums: !1, retainedTypes: !1, subprograms: !3, globals: !1, imports: !1)
19 !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 !3 = !{!5}
22 !5 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !13)
2322 !6 = !DIFile(filename: "dbg.c", directory: "/src")
2423 !7 = !DISubroutineType(types: !8)
2524 !8 = !{!9, !9, !10}
5353 !llvm.dbg.cu = !{!0}
5454 !llvm.module.flags = !{!438, !464}
5555
56 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 190311)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !298, imports: !2)
56 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 190311)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !298, imports: !2)
5757 !1 = !DIFile(filename: "bt.c", directory: "/home/hfinkel/src/NPB2.3-omp-C/BT")
5858 !2 = !{}
59 !3 = !{!4, !82, !102, !114, !132, !145, !154, !155, !162, !183, !200, !201, !207, !208, !215, !221, !230, !238, !246, !255, !260, !261, !268, !274, !279, !280, !287, !293}
60 !4 = distinct !DISubprogram(name: "main", line: 74, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 74, file: !1, scope: !5, type: !6, variables: !12)
59 !4 = distinct !DISubprogram(name: "main", line: 74, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 74, file: !1, scope: !5, type: !6, variables: !12)
6160 !5 = !DIFile(filename: "bt.c", directory: "/home/hfinkel/src/NPB2.3-omp-C/BT")
6261 !6 = !DISubroutineType(types: !7)
6362 !7 = !{!8, !8, !9}
135134 !79 = !DICompositeType(tag: DW_TAG_array_type, size: 160, align: 8, baseType: !11, elements: !80)
136135 !80 = !{!81}
137136 !81 = !DISubrange(count: 20)
138 !82 = distinct !DISubprogram(name: "verify", line: 2388, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2388, file: !1, scope: !5, type: !83, variables: !86)
137 !82 = distinct !DISubprogram(name: "verify", line: 2388, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2388, file: !1, scope: !5, type: !83, variables: !86)
139138 !83 = !DISubroutineType(types: !84)
140139 !84 = !{null, !8, !10, !85}
141140 !85 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !24)
155154 !99 = !DILocalVariable(name: "xcr", line: 2398, scope: !82, file: !5, type: !91)
156155 !100 = !DILocalVariable(name: "dtref", line: 2398, scope: !82, file: !5, type: !20)
157156 !101 = !DILocalVariable(name: "m", line: 2399, scope: !82, file: !5, type: !8)
158 !102 = distinct !DISubprogram(name: "rhs_norm", line: 266, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 266, file: !1, scope: !5, type: !103, variables: !106)
157 !102 = distinct !DISubprogram(name: "rhs_norm", line: 266, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 266, file: !1, scope: !5, type: !103, variables: !106)
159158 !103 = !DISubroutineType(types: !104)
160159 !104 = !{null, !105}
161160 !105 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !20)
167166 !111 = !DILocalVariable(name: "d", line: 271, scope: !102, file: !5, type: !8)
168167 !112 = !DILocalVariable(name: "m", line: 271, scope: !102, file: !5, type: !8)
169168 !113 = !DILocalVariable(name: "add", line: 272, scope: !102, file: !5, type: !20)
170 !114 = distinct !DISubprogram(name: "compute_rhs", line: 1767, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1767, file: !1, scope: !5, type: !115, variables: !117)
169 !114 = distinct !DISubprogram(name: "compute_rhs", line: 1767, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1767, file: !1, scope: !5, type: !115, variables: !117)
171170 !115 = !DISubroutineType(types: !116)
172171 !116 = !{null}
173172 !117 = !{!118, !119, !120, !121, !122, !123, !124, !125, !126, !127, !128, !129, !130, !131}
185184 !129 = !DILocalVariable(name: "wijk", line: 1770, scope: !114, file: !5, type: !20)
186185 !130 = !DILocalVariable(name: "wp1", line: 1770, scope: !114, file: !5, type: !20)
187186 !131 = !DILocalVariable(name: "wm1", line: 1770, scope: !114, file: !5, type: !20)
188 !132 = distinct !DISubprogram(name: "error_norm", line: 225, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 225, file: !1, scope: !5, type: !103, variables: !133)
187 !132 = distinct !DISubprogram(name: "error_norm", line: 225, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 225, file: !1, scope: !5, type: !103, variables: !133)
189188 !133 = !{!134, !135, !136, !137, !138, !139, !140, !141, !142, !143, !144}
190189 !134 = !DILocalVariable(name: "rms", line: 225, arg: 1, scope: !132, file: !5, type: !105)
191190 !135 = !DILocalVariable(name: "i", line: 232, scope: !132, file: !5, type: !8)
198197 !142 = !DILocalVariable(name: "zeta", line: 233, scope: !132, file: !5, type: !20)
199198 !143 = !DILocalVariable(name: "u_exact", line: 233, scope: !132, file: !5, type: !91)
200199 !144 = !DILocalVariable(name: "add", line: 233, scope: !132, file: !5, type: !20)
201 !145 = distinct !DISubprogram(name: "exact_solution", line: 643, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 644, file: !1, scope: !5, type: !146, variables: !148)
200 !145 = distinct !DISubprogram(name: "exact_solution", line: 643, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 644, file: !1, scope: !5, type: !146, variables: !148)
202201 !146 = !DISubroutineType(types: !147)
203202 !147 = !{null, !20, !20, !20, !105}
204203 !148 = !{!149, !150, !151, !152, !153}
207206 !151 = !DILocalVariable(name: "zeta", line: 643, arg: 3, scope: !145, file: !5, type: !20)
208207 !152 = !DILocalVariable(name: "dtemp", line: 644, arg: 4, scope: !145, file: !5, type: !105)
209208 !153 = !DILocalVariable(name: "m", line: 653, scope: !145, file: !5, type: !8)
210 !154 = distinct !DISubprogram(name: "set_constants", line: 2191, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2191, file: !1, scope: !5, type: !115, variables: !2)
211 !155 = distinct !DISubprogram(name: "lhsinit", line: 855, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 855, file: !1, scope: !5, type: !115, variables: !156)
209 !154 = distinct !DISubprogram(name: "set_constants", line: 2191, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2191, file: !1, scope: !5, type: !115, variables: !2)
210 !155 = distinct !DISubprogram(name: "lhsinit", line: 855, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 855, file: !1, scope: !5, type: !115, variables: !156)
212211 !156 = !{!157, !158, !159, !160, !161}
213212 !157 = !DILocalVariable(name: "i", line: 857, scope: !155, file: !5, type: !8)
214213 !158 = !DILocalVariable(name: "j", line: 857, scope: !155, file: !5, type: !8)
215214 !159 = !DILocalVariable(name: "k", line: 857, scope: !155, file: !5, type: !8)
216215 !160 = !DILocalVariable(name: "m", line: 857, scope: !155, file: !5, type: !8)
217216 !161 = !DILocalVariable(name: "n", line: 857, scope: !155, file: !5, type: !8)
218 !162 = distinct !DISubprogram(name: "initialize", line: 669, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 669, file: !1, scope: !5, type: !115, variables: !163)
217 !162 = distinct !DISubprogram(name: "initialize", line: 669, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 669, file: !1, scope: !5, type: !115, variables: !163)
219218 !163 = !{!164, !165, !166, !167, !168, !169, !170, !171, !172, !173, !174, !179, !180, !181, !182}
220219 !164 = !DILocalVariable(name: "i", line: 679, scope: !162, file: !5, type: !8)
221220 !165 = !DILocalVariable(name: "j", line: 679, scope: !162, file: !5, type: !8)
236235 !180 = !DILocalVariable(name: "Peta", line: 680, scope: !162, file: !5, type: !20)
237236 !181 = !DILocalVariable(name: "Pzeta", line: 680, scope: !162, file: !5, type: !20)
238237 !182 = !DILocalVariable(name: "temp", line: 680, scope: !162, file: !5, type: !91)
239 !183 = distinct !DISubprogram(name: "exact_rhs", line: 301, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 301, file: !1, scope: !5, type: !115, variables: !184)
238 !183 = distinct !DISubprogram(name: "exact_rhs", line: 301, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 301, file: !1, scope: !5, type: !115, variables: !184)
240239 !184 = !{!185, !186, !187, !188, !189, !190, !191, !192, !193, !194, !195, !196, !197, !198, !199}
241240 !185 = !DILocalVariable(name: "dtemp", line: 310, scope: !183, file: !5, type: !91)
242241 !186 = !DILocalVariable(name: "xi", line: 310, scope: !183, file: !5, type: !20)
253252 !197 = !DILocalVariable(name: "jm1", line: 311, scope: !183, file: !5, type: !8)
254253 !198 = !DILocalVariable(name: "km1", line: 311, scope: !183, file: !5, type: !8)
255254 !199 = !DILocalVariable(name: "kp1", line: 311, scope: !183, file: !5, type: !8)
256 !200 = distinct !DISubprogram(name: "adi", line: 210, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 210, file: !1, scope: !5, type: !115, variables: !2)
257 !201 = distinct !DISubprogram(name: "add", line: 187, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 187, file: !1, scope: !5, type: !115, variables: !202)
255 !200 = distinct !DISubprogram(name: "adi", line: 210, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 210, file: !1, scope: !5, type: !115, variables: !2)
256 !201 = distinct !DISubprogram(name: "add", line: 187, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 187, file: !1, scope: !5, type: !115, variables: !202)
258257 !202 = !{!203, !204, !205, !206}
259258 !203 = !DILocalVariable(name: "i", line: 193, scope: !201, file: !5, type: !8)
260259 !204 = !DILocalVariable(name: "j", line: 193, scope: !201, file: !5, type: !8)
261260 !205 = !DILocalVariable(name: "k", line: 193, scope: !201, file: !5, type: !8)
262261 !206 = !DILocalVariable(name: "m", line: 193, scope: !201, file: !5, type: !8)
263 !207 = distinct !DISubprogram(name: "z_solve", line: 3457, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3457, file: !1, scope: !5, type: !115, variables: !2)
264 !208 = distinct !DISubprogram(name: "z_backsubstitute", line: 3480, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3480, file: !1, scope: !5, type: !115, variables: !209)
262 !207 = distinct !DISubprogram(name: "z_solve", line: 3457, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3457, file: !1, scope: !5, type: !115, variables: !2)
263 !208 = distinct !DISubprogram(name: "z_backsubstitute", line: 3480, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3480, file: !1, scope: !5, type: !115, variables: !209)
265264 !209 = !{!210, !211, !212, !213, !214}
266265 !210 = !DILocalVariable(name: "i", line: 3492, scope: !208, file: !5, type: !8)
267266 !211 = !DILocalVariable(name: "j", line: 3492, scope: !208, file: !5, type: !8)
268267 !212 = !DILocalVariable(name: "k", line: 3492, scope: !208, file: !5, type: !8)
269268 !213 = !DILocalVariable(name: "m", line: 3492, scope: !208, file: !5, type: !8)
270269 !214 = !DILocalVariable(name: "n", line: 3492, scope: !208, file: !5, type: !8)
271 !215 = distinct !DISubprogram(name: "z_solve_cell", line: 3512, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3512, file: !1, scope: !5, type: !115, variables: !216)
270 !215 = distinct !DISubprogram(name: "z_solve_cell", line: 3512, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3512, file: !1, scope: !5, type: !115, variables: !216)
272271 !216 = !{!217, !218, !219, !220}
273272 !217 = !DILocalVariable(name: "i", line: 3527, scope: !215, file: !5, type: !8)
274273 !218 = !DILocalVariable(name: "j", line: 3527, scope: !215, file: !5, type: !8)
275274 !219 = !DILocalVariable(name: "k", line: 3527, scope: !215, file: !5, type: !8)
276275 !220 = !DILocalVariable(name: "ksize", line: 3527, scope: !215, file: !5, type: !8)
277 !221 = distinct !DISubprogram(name: "binvrhs", line: 3154, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3154, file: !1, scope: !5, type: !222, variables: !225)
276 !221 = distinct !DISubprogram(name: "binvrhs", line: 3154, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3154, file: !1, scope: !5, type: !222, variables: !225)
278277 !222 = !DISubroutineType(types: !223)
279278 !223 = !{null, !224, !105}
280279 !224 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !91)
283282 !227 = !DILocalVariable(name: "r", line: 3154, arg: 2, scope: !221, file: !5, type: !105)
284283 !228 = !DILocalVariable(name: "pivot", line: 3159, scope: !221, file: !5, type: !20)
285284 !229 = !DILocalVariable(name: "coeff", line: 3159, scope: !221, file: !5, type: !20)
286 !230 = distinct !DISubprogram(name: "matmul_sub", line: 2841, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2842, file: !1, scope: !5, type: !231, variables: !233)
285 !230 = distinct !DISubprogram(name: "matmul_sub", line: 2841, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2842, file: !1, scope: !5, type: !231, variables: !233)
287286 !231 = !DISubroutineType(types: !232)
288287 !232 = !{null, !224, !224, !224}
289288 !233 = !{!234, !235, !236, !237}
291290 !235 = !DILocalVariable(name: "bblock", line: 2841, arg: 2, scope: !230, file: !5, type: !224)
292291 !236 = !DILocalVariable(name: "cblock", line: 2842, arg: 3, scope: !230, file: !5, type: !224)
293292 !237 = !DILocalVariable(name: "j", line: 2851, scope: !230, file: !5, type: !8)
294 !238 = distinct !DISubprogram(name: "matvec_sub", line: 2814, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2814, file: !1, scope: !5, type: !239, variables: !241)
293 !238 = distinct !DISubprogram(name: "matvec_sub", line: 2814, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2814, file: !1, scope: !5, type: !239, variables: !241)
295294 !239 = !DISubroutineType(types: !240)
296295 !240 = !{null, !224, !105, !105}
297296 !241 = !{!242, !243, !244, !245}
299298 !243 = !DILocalVariable(name: "avec", line: 2814, arg: 2, scope: !238, file: !5, type: !105)
300299 !244 = !DILocalVariable(name: "bvec", line: 2814, arg: 3, scope: !238, file: !5, type: !105)
301300 !245 = !DILocalVariable(name: "i", line: 2823, scope: !238, file: !5, type: !8)
302 !246 = distinct !DISubprogram(name: "binvcrhs", line: 2885, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2885, file: !1, scope: !5, type: !247, variables: !249)
301 !246 = distinct !DISubprogram(name: "binvcrhs", line: 2885, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2885, file: !1, scope: !5, type: !247, variables: !249)
303302 !247 = !DISubroutineType(types: !248)
304303 !248 = !{null, !224, !224, !105}
305304 !249 = !{!250, !251, !252, !253, !254}
308307 !252 = !DILocalVariable(name: "r", line: 2885, arg: 3, scope: !246, file: !5, type: !105)
309308 !253 = !DILocalVariable(name: "pivot", line: 2890, scope: !246, file: !5, type: !20)
310309 !254 = !DILocalVariable(name: "coeff", line: 2890, scope: !246, file: !5, type: !20)
311 !255 = distinct !DISubprogram(name: "lhsz", line: 1475, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1475, file: !1, scope: !5, type: !115, variables: !256)
310 !255 = distinct !DISubprogram(name: "lhsz", line: 1475, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1475, file: !1, scope: !5, type: !115, variables: !256)
312311 !256 = !{!257, !258, !259}
313312 !257 = !DILocalVariable(name: "i", line: 1484, scope: !255, file: !5, type: !8)
314313 !258 = !DILocalVariable(name: "j", line: 1484, scope: !255, file: !5, type: !8)
315314 !259 = !DILocalVariable(name: "k", line: 1484, scope: !255, file: !5, type: !8)
316 !260 = distinct !DISubprogram(name: "y_solve", line: 3299, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3299, file: !1, scope: !5, type: !115, variables: !2)
317 !261 = distinct !DISubprogram(name: "y_backsubstitute", line: 3323, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3323, file: !1, scope: !5, type: !115, variables: !262)
315 !260 = distinct !DISubprogram(name: "y_solve", line: 3299, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3299, file: !1, scope: !5, type: !115, variables: !2)
316 !261 = distinct !DISubprogram(name: "y_backsubstitute", line: 3323, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3323, file: !1, scope: !5, type: !115, variables: !262)
318317 !262 = !{!263, !264, !265, !266, !267}
319318 !263 = !DILocalVariable(name: "i", line: 3335, scope: !261, file: !5, type: !8)
320319 !264 = !DILocalVariable(name: "j", line: 3335, scope: !261, file: !5, type: !8)
321320 !265 = !DILocalVariable(name: "k", line: 3335, scope: !261, file: !5, type: !8)
322321 !266 = !DILocalVariable(name: "m", line: 3335, scope: !261, file: !5, type: !8)
323322 !267 = !DILocalVariable(name: "n", line: 3335, scope: !261, file: !5, type: !8)
324 !268 = distinct !DISubprogram(name: "y_solve_cell", line: 3355, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3355, file: !1, scope: !5, type: !115, variables: !269)
323 !268 = distinct !DISubprogram(name: "y_solve_cell", line: 3355, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3355, file: !1, scope: !5, type: !115, variables: !269)
325324 !269 = !{!270, !271, !272, !273}
326325 !270 = !DILocalVariable(name: "i", line: 3370, scope: !268, file: !5, type: !8)
327326 !271 = !DILocalVariable(name: "j", line: 3370, scope: !268, file: !5, type: !8)
328327 !272 = !DILocalVariable(name: "k", line: 3370, scope: !268, file: !5, type: !8)
329328 !273 = !DILocalVariable(name: "jsize", line: 3370, scope: !268, file: !5, type: !8)
330 !274 = distinct !DISubprogram(name: "lhsy", line: 1181, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1181, file: !1, scope: !5, type: !115, variables: !275)
329 !274 = distinct !DISubprogram(name: "lhsy", line: 1181, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1181, file: !1, scope: !5, type: !115, variables: !275)
331330 !275 = !{!276, !277, !278}
332331 !276 = !DILocalVariable(name: "i", line: 1190, scope: !274, file: !5, type: !8)
333332 !277 = !DILocalVariable(name: "j", line: 1190, scope: !274, file: !5, type: !8)
334333 !278 = !DILocalVariable(name: "k", line: 1190, scope: !274, file: !5, type: !8)
335 !279 = distinct !DISubprogram(name: "x_solve", line: 2658, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2658, file: !1, scope: !5, type: !115, variables: !2)
336 !280 = distinct !DISubprogram(name: "x_backsubstitute", line: 2684, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2684, file: !1, scope: !5, type: !115, variables: !281)
334 !279 = distinct !DISubprogram(name: "x_solve", line: 2658, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2658, file: !1, scope: !5, type: !115, variables: !2)
335 !280 = distinct !DISubprogram(name: "x_backsubstitute", line: 2684, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2684, file: !1, scope: !5, type: !115, variables: !281)
337336 !281 = !{!282, !283, !284, !285, !286}
338337 !282 = !DILocalVariable(name: "i", line: 2696, scope: !280, file: !5, type: !8)
339338 !283 = !DILocalVariable(name: "j", line: 2696, scope: !280, file: !5, type: !8)
340339 !284 = !DILocalVariable(name: "k", line: 2696, scope: !280, file: !5, type: !8)
341340 !285 = !DILocalVariable(name: "m", line: 2696, scope: !280, file: !5, type: !8)
342341 !286 = !DILocalVariable(name: "n", line: 2696, scope: !280, file: !5, type: !8)
343 !287 = distinct !DISubprogram(name: "x_solve_cell", line: 2716, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2716, file: !1, scope: !5, type: !115, variables: !288)
342 !287 = distinct !DISubprogram(name: "x_solve_cell", line: 2716, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2716, file: !1, scope: !5, type: !115, variables: !288)
344343 !288 = !{!289, !290, !291, !292}
345344 !289 = !DILocalVariable(name: "i", line: 2728, scope: !287, file: !5, type: !8)
346345 !290 = !DILocalVariable(name: "j", line: 2728, scope: !287, file: !5, type: !8)
347346 !291 = !DILocalVariable(name: "k", line: 2728, scope: !287, file: !5, type: !8)
348347 !292 = !DILocalVariable(name: "isize", line: 2728, scope: !287, file: !5, type: !8)
349 !293 = distinct !DISubprogram(name: "lhsx", line: 898, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 898, file: !1, scope: !5, type: !115, variables: !294)
348 !293 = distinct !DISubprogram(name: "lhsx", line: 898, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 898, file: !1, scope: !5, type: !115, variables: !294)
350349 !294 = !{!295, !296, !297}
351350 !295 = !DILocalVariable(name: "i", line: 907, scope: !293, file: !5, type: !8)
352351 !296 = !DILocalVariable(name: "j", line: 907, scope: !293, file: !5, type: !8)
5555 !llvm.module.flags = !{!29, !30}
5656 !llvm.ident = !{!31}
5757
58 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (git://github.com/llvm-mirror/clang.git e0848b6353721eb1b278a5bbea257bbf6316251e) (git://github.com/llvm-mirror/llvm.git 8724a428dfd5e78d7865bb01783708e83f9ed128)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, subprograms: !5, globals: !23)
58 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (git://github.com/llvm-mirror/clang.git e0848b6353721eb1b278a5bbea257bbf6316251e) (git://github.com/llvm-mirror/llvm.git 8724a428dfd5e78d7865bb01783708e83f9ed128)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, globals: !23)
5959 !1 = !DIFile(filename: "testcase.i", directory: "/tmp/glibc.build")
6060 !2 = !{}
6161 !3 = !{!4}
6262 !4 = !DIBasicType(name: "double", size: 64, align: 64, encoding: DW_ATE_float)
63 !5 = !{!6, !18}
64 !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, 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, variables: !10)
6564 !7 = !DISubroutineType(types: !8)
6665 !8 = !{!4, !4, !9, !9}
6766 !9 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
7372 !15 = !DILocalVariable(name: "f2", scope: !6, file: !1, line: 17, type: !4)
7473 !16 = !DILocalVariable(name: "tmp_value", scope: !6, file: !1, line: 18, type: !4)
7574 !17 = !DILocalVariable(name: "precision_places", scope: !6, file: !1, line: 19, type: !9)
76 !18 = distinct !DISubprogram(name: "php_intpow10", scope: !1, file: !1, line: 1, type: !19, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !21)
7776 !19 = !DISubroutineType(types: !20)
7877 !20 = !{!4, !9}
7978 !21 = !{!22}
2020 !llvm.dbg.cu = !{!0}
2121 !llvm.module.flags = !{!8, !11}
2222
23 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
23 !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 !3 = !{!4}
27 !4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, 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, variables: !2)
2827 !5 = !DIFile(filename: "/tmp/unwind-dw2.c", directory: "/tmp")
2928 !6 = !DISubroutineType(types: !7)
3029 !7 = !{null}
5050 !0 = !DILocation(line: 46, scope: !1)
5151 !1 = distinct !DILexicalBlock(line: 44, column: 0, file: !101, scope: !2)
5252 !2 = distinct !DILexicalBlock(line: 44, column: 0, file: !101, scope: !3)
53 !3 = distinct !DISubprogram(name: "getClosestDiagonal3", linkageName: "_Z19getClosestDiagonal3ii", line: 44, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !101, scope: null, type: !6)
53 !3 = distinct !DISubprogram(name: "getClosestDiagonal3", linkageName: "_Z19getClosestDiagonal3ii", line: 44, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !5, file: !101, scope: null, type: !6)
5454 !4 = !DIFile(filename: "ggEdgeDiscrepancy.cc", directory: "/Volumes/Home/grosbaj/sources/llvm-externals/speccpu2000/benchspec/CINT2000/252.eon/src")
55 !5 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 00)", isOptimized: true, emissionKind: FullDebug, file: !101, enums: !102, retainedTypes: !102, subprograms: !{!3, !37, !41, !42, !77})
55 !5 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 00)", isOptimized: true, emissionKind: FullDebug, file: !101, enums: !102, retainedTypes: !102)
5656 !6 = !DISubroutineType(types: !7)
5757 !7 = !{!8, !22, !22}
5858 !8 = !DICompositeType(tag: DW_TAG_structure_type, name: "ggVector3", line: 66, size: 192, align: 32, file: !99, elements: !10)
8686 !34 = !DIDerivedType(tag: DW_TAG_const_type, size: 192, align: 32, file: !101, scope: !4, baseType: !8)
8787 !35 = !DISubprogram(name: "y", linkageName: "_ZNK9ggVector31yEv", line: 83, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !31)
8888 !36 = !DISubprogram(name: "z", linkageName: "_ZNK9ggVector31zEv", line: 84, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !31)
89 !37 = distinct !DISubprogram(name: "x", linkageName: "_ZN9ggVector31xEv", line: 85, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !38)
89 !37 = distinct !DISubprogram(name: "x", linkageName: "_ZN9ggVector31xEv", line: 85, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !5, file: !9, scope: !8, type: !38)
9090 !38 = !DISubroutineType(types: !39)
9191 !39 = !{!40, !19}
9292 !40 = !DIDerivedType(tag: DW_TAG_reference_type, name: "double", size: 32, align: 32, file: !101, scope: !4, baseType: !13)
93 !41 = distinct !DISubprogram(name: "y", linkageName: "_ZN9ggVector31yEv", line: 86, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !38)
94 !42 = distinct !DISubprogram(name: "z", linkageName: "_ZN9ggVector31zEv", line: 87, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !38)
93 !41 = distinct !DISubprogram(name: "y", linkageName: "_ZN9ggVector31yEv", line: 86, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !5, file: !9, scope: !8, type: !38)
94 !42 = distinct !DISubprogram(name: "z", linkageName: "_ZN9ggVector31zEv", line: 87, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !5, file: !9, scope: !8, type: !38)
9595 !43 = !DISubprogram(name: "SetX", linkageName: "_ZN9ggVector34SetXEd", line: 88, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !44)
9696 !44 = !DISubroutineType(types: !45)
9797 !45 = !{null, !19, !13}
126126 !74 = !DISubprogram(name: "operator/=", linkageName: "_ZN9ggVector3dVEd", line: 324, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !72)
127127 !75 = !DISubprogram(name: "length", linkageName: "_ZNK9ggVector36lengthEv", line: 121, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !31)
128128 !76 = !DISubprogram(name: "squaredLength", linkageName: "_ZNK9ggVector313squaredLengthEv", line: 122, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !31)
129 !77 = distinct !DISubprogram(name: "MakeUnitVector", linkageName: "_ZN9ggVector314MakeUnitVectorEv", line: 217, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !24)
129 !77 = distinct !DISubprogram(name: "MakeUnitVector", linkageName: "_ZN9ggVector314MakeUnitVectorEv", line: 217, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !5, file: !9, scope: !8, type: !24)
130130 !78 = !DISubprogram(name: "Perturb", linkageName: "_ZNK9ggVector37PerturbEdd", line: 126, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !9, scope: !8, type: !79)
131131 !79 = !DISubroutineType(types: !80)
132132 !80 = !{!8, !33, !13, !13}
382382 !llvm.dbg.cu = !{!1}
383383
384384 !0 = !{i32 2, !"Debug Info Version", i32 3}
385 !1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, subprograms: !4)
385 !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 !4 = !{!5}
389 !5 = distinct !DISubprogram(name: "test12", scope: !2, file: !2, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, 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, variables: !3)
390389 !6 = !DISubroutineType(types: !7)
391390 !7 = !{null}
392391 !8 = !DILocation(line: 1, scope: !5)
7777
7878 !llvm.dbg.cu = !{!2}
7979 !0 = !DILocalVariable(name: "s1", line: 2, arg: 1, scope: !1, file: !2, type: !6)
80 !1 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !2, type: !3)
80 !1 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, scope: !2, type: !3)
8181 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !17, enums: !18, retainedTypes: !18)
8282 !3 = !DISubroutineType(types: !4)
8383 !4 = !{!5, !6}
2424 !llvm.dbg.cu = !{!3}
2525 !0 = !DILocation(line: 5, column: 2, scope: !1)
2626 !1 = distinct !DILexicalBlock(line: 1, column: 1, file: null, scope: !2)
27 !2 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !3)
27 !2 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scope: !3)
2828 !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang 1.1", isOptimized: true, emissionKind: FullDebug, file: !8, retainedTypes: !9)
2929 !4 = !DILocalVariable(name: "count_", line: 5, scope: !5, file: !3, type: !6)
3030 !5 = distinct !DILexicalBlock(line: 1, column: 1, file: null, scope: !1)
3131 !llvm.module.flags = !{!21}
3232
3333 !0 = !DILocalVariable(name: "my_r0", line: 11, arg: 1, scope: !1, file: !2, type: !7)
34 !1 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 11, file: !19, scope: !2, type: !4)
34 !1 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 11, file: !19, scope: !2, type: !4)
3535 !2 = !DIFile(filename: "b2.c", directory: "/tmp/")
36 !3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: FullDebug, file: !19, enums: !20, retainedTypes: !20, subprograms: !18)
36 !3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: FullDebug, file: !19, enums: !20, retainedTypes: !20)
3737 !4 = !DISubroutineType(types: !5)
3838 !5 = !{!6, !7}
3939 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float)
4848 !15 = !DILocation(line: 11, scope: !1)
4949 !16 = !DILocation(line: 12, scope: !17)
5050 !17 = distinct !DILexicalBlock(line: 11, column: 0, file: !19, scope: !1)
51 !18 = !{!1}
5251 !19 = !DIFile(filename: "b2.c", directory: "/tmp/")
5352 !20 = !{}
5453 !21 = !{i32 1, !"Debug Info Version", i32 3}
2828 !7 = !DIDerivedType(tag: DW_TAG_member, name: "z", line: 1, size: 64, align: 64, offset: 128, file: !15, scope: !2, baseType: !5)
2929 !8 = !DILocalVariable(name: "t", line: 5, scope: !9, file: !0, type: !2)
3030 !9 = distinct !DILexicalBlock(line: 0, column: 0, file: null, scope: !10)
31 !10 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !0, type: !11)
31 !10 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scope: !0, type: !11)
3232 !11 = !DISubroutineType(types: !12)
3333 !12 = !{!13}
3434 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
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, 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, variables: !43)
203203 !2 = !DIFile(filename: "libgcc2.c", directory: "/Users/yash/clean/LG.D/gcc/../../llvmgcc/gcc")
204 !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, subprograms: !44, imports: null)
204 !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)
206206 !5 = !{!6, !9, !9, !9, !9}
207207 !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "SCtype", line: 170, file: !46, scope: !7, baseType: !8)
242242 !41 = !DILocation(line: 1965, scope: !15)
243243 !42 = !DILocation(line: 1969, scope: !15)
244244 !43 = !{!0, !11, !12, !13, !14, !16, !17, !18}
245 !44 = !{!1}
246245 !45 = !DIFile(filename: "libgcc2.c", directory: "/Users/yash/clean/LG.D/gcc/../../llvmgcc/gcc")
247246 !46 = !DIFile(filename: "libgcc2.h", directory: "/Users/yash/clean/LG.D/gcc/../../llvmgcc/gcc")
248247 !47 = !{}
2525
2626 !0 = !DIGlobalVariable(name: "ret", line: 7, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !3)
2727 !1 = !DIFile(filename: "foo.c", directory: "/tmp/")
28 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !36, enums: !37, retainedTypes: !37, subprograms: !32, globals: !31, imports: !37)
28 !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !36, enums: !37, retainedTypes: !37, globals: !31, imports: !37)
2929 !3 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3030 !4 = !DILocalVariable(name: "x", line: 12, arg: 1, scope: !5, file: !1, type: !3)
31 !5 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 13, file: !36, scope: !1, type: !6, variables: !33)
31 !5 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2, scopeLine: 13, file: !36, scope: !1, type: !6, variables: !33)
3232 !6 = !DISubroutineType(types: !7)
3333 !7 = !{null, !3}
3434 !8 = !DILocalVariable(name: "myvar", line: 17, arg: 1, scope: !9, file: !1, type: !13)
35 !9 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 17, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 17, file: !36, scope: !1, type: !10, variables: !34)
35 !9 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 17, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2, scopeLine: 17, file: !36, scope: !1, type: !10, variables: !34)
3636 !10 = !DISubroutineType(types: !11)
3737 !11 = !{!12, !13}
3838 !12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !36, scope: !1, baseType: null)
4242 !16 = !DIDerivedType(tag: DW_TAG_member, name: "c", line: 3, size: 32, align: 32, file: !36, scope: !14, baseType: !3)
4343 !17 = !DIDerivedType(tag: DW_TAG_member, name: "d", line: 4, size: 64, align: 64, offset: 64, file: !36, scope: !14, baseType: !13)
4444 !18 = !DILocalVariable(name: "argc", line: 22, arg: 1, scope: !19, file: !1, type: !3)
45 !19 = distinct !DISubprogram(name: "main", linkageName: "main", line: 22, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 22, file: !36, scope: !1, type: !20, variables: !35)
45 !19 = distinct !DISubprogram(name: "main", linkageName: "main", line: 22, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2, scopeLine: 22, file: !36, scope: !1, type: !20, variables: !35)
4646 !20 = !DISubroutineType(types: !21)
4747 !21 = !{!3, !3, !22}
4848 !22 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !36, scope: !1, baseType: !23)
5555 !29 = distinct !DILexicalBlock(line: 17, column: 0, file: !36, scope: !9)
5656 !30 = !DILocation(line: 19, scope: !29)
5757 !31 = !{!0}
58 !32 = !{!5, !9, !19}
5958 !33 = !{!4}
6059 !34 = !{!8}
6160 !35 = !{!18, !25, !26}
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, 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, variables: !15)
2929 !2 = !DIFile(filename: "f.c", directory: "/tmp")
30 !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, subprograms: !17, imports: null)
30 !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, 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, variables: !16)
3636 !9 = !DILocation(line: 3, scope: !10)
3737 !10 = distinct !DILexicalBlock(line: 2, column: 0, file: !18, scope: !1)
3838 !11 = !{i32 1}
4141 !14 = distinct !DILexicalBlock(line: 6, column: 0, file: !18, scope: !8)
4242 !15 = !{!0}
4343 !16 = !{!7}
44 !17 = !{!1, !8}
4544 !18 = !DIFile(filename: "f.c", directory: "/tmp")
4645 !19 = !{}
4746
2323 !llvm.dbg.lv = !{!0, !14, !15, !16, !17, !24, !25, !28}
2424
2525 !0 = !DILocalVariable(name: "this", line: 11, arg: 1, scope: !1, file: !3, type: !12)
26 !1 = distinct !DISubprogram(name: "bar", linkageName: "_ZN3foo3barEi", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 11, file: !31, scope: !2, type: !9)
26 !1 = distinct !DISubprogram(name: "bar", linkageName: "_ZN3foo3barEi", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !4, scopeLine: 11, file: !31, scope: !2, type: !9)
2727 !2 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 3, size: 32, align: 32, file: !31, scope: !3, elements: !5)
2828 !3 = !DIFile(filename: "foo.cp", directory: "/tmp/")
29 !4 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 LLVM build", isOptimized: true, emissionKind: FullDebug, file: !31, enums: !32, retainedTypes: !32, subprograms: !33)
29 !4 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 LLVM build", isOptimized: true, emissionKind: FullDebug, file: !31, enums: !32, retainedTypes: !32)
3030 !5 = !{!6, !1, !8}
3131 !6 = !DIDerivedType(tag: DW_TAG_member, name: "y", line: 8, size: 32, align: 32, file: !31, scope: !2, baseType: !7)
3232 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
33 !8 = distinct !DISubprogram(name: "baz", linkageName: "_ZN3foo3bazEi", line: 15, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 15, file: !31, scope: !2, type: !9)
33 !8 = distinct !DISubprogram(name: "baz", linkageName: "_ZN3foo3bazEi", line: 15, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !4, scopeLine: 15, file: !31, scope: !2, type: !9)
3434 !9 = !DISubroutineType(types: !10)
3535 !10 = !{!7, !11, !7}
3636 !11 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, file: !31, scope: !3, baseType: !2)
4040 !15 = !DILocalVariable(name: "this", line: 15, arg: 1, scope: !8, file: !3, type: !12)
4141 !16 = !DILocalVariable(name: "x", line: 15, arg: 2, scope: !8, file: !3, type: !7)
4242 !17 = !DILocalVariable(name: "argc", line: 19, arg: 1, scope: !18, file: !3, type: !7)
43 !18 = distinct !DISubprogram(name: "main", linkageName: "main", line: 19, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 19, file: !31, scope: !3, type: !19)
43 !18 = distinct !DISubprogram(name: "main", linkageName: "main", line: 19, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !4, scopeLine: 19, file: !31, scope: !3, type: !19)
4444 !19 = !DISubroutineType(types: !20)
4545 !20 = !{!7, !7, !21}
4646 !21 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !31, scope: !3, baseType: !22)
5555 !30 = distinct !DILexicalBlock(line: 15, column: 0, file: !31, scope: !8)
5656 !31 = !DIFile(filename: "foo.cp", directory: "/tmp/")
5757 !32 = !{}
58 !33 = !{!1, !8, !18}
5958 !34 = !{i32 1, !"Debug Info Version", i32 3}
99 !39 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", isOptimized: true, emissionKind: FullDebug, file: !109, enums: !108, retainedTypes: !108)
1010 !46 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !109, baseType: !47)
1111 !47 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
12 !97 = distinct !DISubprogram(name: "main", linkageName: "main", line: 73, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !39, type: !98)
12 !97 = distinct !DISubprogram(name: "main", linkageName: "main", line: 73, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !39, scope: !39, type: !98)
1313 !98 = !DISubroutineType(types: !99)
1414 !99 = !{!100}
1515 !100 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
8080 !0 = !DISubprogram(name: "SVal", line: 11, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, scopeLine: 11, file: !47, scope: !1, type: !14)
8181 !1 = !DICompositeType(tag: DW_TAG_structure_type, name: "SVal", line: 1, size: 128, align: 64, file: !47, scope: !2, elements: !4)
8282 !2 = !DIFile(filename: "small.cc", directory: "/Users/manav/R8248330")
83 !3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, subprograms: !46, imports: null)
83 !3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: FullDebug, file: !47, enums: !48, retainedTypes: !48, imports: null)
8484 !4 = !{!5, !7, !0, !9}
8585 !5 = !DIDerivedType(tag: DW_TAG_member, name: "Data", line: 7, size: 64, align: 64, file: !47, scope: !1, baseType: !6)
8686 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !47, scope: !2, baseType: null)
9393 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
9494 !14 = !DISubroutineType(types: !15)
9595 !15 = !{null, !12}
96 !16 = distinct !DISubprogram(name: "SVal", linkageName: "_ZN4SValC1Ev", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 11, file: !47, scope: !1, type: !14)
97 !17 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi4SVal", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 16, file: !47, scope: !2, type: !18)
96 !16 = distinct !DISubprogram(name: "SVal", linkageName: "_ZN4SValC1Ev", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 11, file: !47, scope: !1, type: !14)
97 !17 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi4SVal", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 16, file: !47, scope: !2, type: !18)
9898 !18 = !DISubroutineType(types: !19)
9999 !19 = !{!13, !13, !1}
100 !20 = distinct !DISubprogram(name: "main", linkageName: "main", line: 23, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 23, file: !47, scope: !2, type: !21)
100 !20 = distinct !DISubprogram(name: "main", linkageName: "main", line: 23, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 23, file: !47, scope: !2, type: !21)
101101 !21 = !DISubroutineType(types: !22)
102102 !22 = !{!13}
103103 !23 = !DILocalVariable(name: "i", line: 16, arg: 1, scope: !17, file: !2, type: !13)
1414 !llvm.dbg.cu = !{!2}
1515 !llvm.module.flags = !{!17}
1616
17 !0 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 53, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !14, scope: !1, type: !3)
17 !0 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 53, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !14, scope: !1, type: !3)
1818 !1 = !DIFile(filename: "", directory: "/private/tmp")
19 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 114084)", isOptimized: false, emissionKind: FullDebug, file: !15, enums: !16, retainedTypes: !16, subprograms: !13)
19 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 114084)", isOptimized: false, emissionKind: FullDebug, file: !15, enums: !16, retainedTypes: !16)
2020 !3 = !DISubroutineType(types: !4)
2121 !4 = !{!5}
2222 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
23 !6 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !15, scope: !7, type: !3)
23 !6 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !15, scope: !7, type: !3)
2424 !7 = !DIFile(filename: "bug.c", directory: "/private/tmp")
2525 !8 = !DILocation(line: 53, column: 13, scope: !9)
2626 !9 = distinct !DILexicalBlock(line: 53, column: 11, file: !14, scope: !0)
2727 !10 = !DILocation(line: 4, column: 13, scope: !11)
2828 !11 = distinct !DILexicalBlock(line: 4, column: 13, file: !15, scope: !12)
2929 !12 = distinct !DILexicalBlock(line: 4, column: 11, file: !15, scope: !6)
30 !13 = !{!0, !6}
3130 !14 = !DIFile(filename: "", directory: "/private/tmp")
3231 !15 = !DIFile(filename: "bug.c", directory: "/private/tmp")
3332 !16 = !{}
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, 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, variables: !16)
2121 !1 = !DIFile(filename: "one.c", directory: "/private/tmp")
22 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 117922)", isOptimized: true, emissionKind: FullDebug, file: !17, enums: !18, retainedTypes: !18, subprograms: !15, imports: null)
22 !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)
2424 !4 = !{!5}
2525 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3232 !12 = !DILocation(line: 3, column: 47, scope: !0)
3333 !13 = !DILocation(line: 4, column: 2, scope: !14)
3434 !14 = distinct !DILexicalBlock(line: 3, column: 50, file: !17, scope: !0)
35 !15 = !{!0}
3635 !16 = !{!6}
3736 !17 = !DIFile(filename: "one.c", directory: "/private/tmp")
3837 !18 = !{}
7777 !llvm.dbg.cu = !{!2}
7878 !llvm.module.flags = !{!33}
7979
80 !0 = distinct !DISubprogram(name: "gcd", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, file: !31, scope: !1, type: !3, variables: !29)
80 !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)
8181 !1 = !DIFile(filename: "rem_small.c", directory: "/private/tmp")
82 !2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 124117)", isOptimized: true, emissionKind: FullDebug, file: !31, enums: !32, retainedTypes: !32, subprograms: !28, imports: null)
82 !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)
8383 !3 = !DISubroutineType(types: !4)
8484 !4 = !{!5}
85