llvm.org GIT mirror llvm / 7766e56
Revert "[IR] Remove the DIExpression field from DIGlobalVariable." This reverts commit 289902 while investigating bot berakage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@289906 91177308-0d34-0410-b5e6-96231b3b80d8 Adrian Prantl 3 years ago
188 changed file(s) with 656 addition(s) and 1019 deletion(s). Raw diff Collapse all Expand all
251251 METADATA_MACRO_FILE = 34, // [distinct, macinfo, line, file, ...]
252252 METADATA_STRINGS = 35, // [count, offset] blob([lengths][chars])
253253 METADATA_GLOBAL_DECL_ATTACHMENT = 36, // [valueid, n x [id, mdnode]]
254 METADATA_GLOBAL_VAR_EXPR = 37, // [distinct, var, expr]
255254 };
256255
257256 // The constants block (CONSTANTS_BLOCK_ID) describes emission for each
448448 /// implicitly uniques the values returned.
449449 DISubrange *getOrCreateSubrange(int64_t Lo, int64_t Count);
450450
451 /// Create a new descriptor for the specified variable.
451 /// Create a new descriptor for the specified
452 /// variable.
452453 /// \param Context Variable scope.
453454 /// \param Name Name of the variable.
454455 /// \param LinkageName Mangled name of the variable.
462463 /// \param Decl Reference to the corresponding declaration.
463464 /// \param AlignInBits Variable alignment(or 0 if no alignment attr was
464465 /// specified)
465 DIGlobalVariableExpression *createGlobalVariableExpression(
466 DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File,
467 unsigned LineNo, DIType *Ty, bool isLocalToUnit,
468 DIExpression *Expr = nullptr, MDNode *Decl = nullptr,
469 uint32_t AlignInBits = 0);
466 DIGlobalVariable *createGlobalVariable(DIScope *Context, StringRef Name,
467 StringRef LinkageName, DIFile *File,
468 unsigned LineNo, DIType *Ty,
469 bool isLocalToUnit,
470 DIExpression *Expr = nullptr,
471 MDNode *Decl = nullptr,
472 uint32_t AlignInBits = 0);
470473
471474 /// Identical to createGlobalVariable
472475 /// except that the resulting DbgNode is temporary and meant to be RAUWed.
473476 DIGlobalVariable *createTempGlobalVariableFwdDecl(
474477 DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File,
475 unsigned LineNo, DIType *Ty, bool isLocalToUnit, MDNode *Decl = nullptr,
476 uint32_t AlignInBits = 0);
478 unsigned LineNo, DIType *Ty, bool isLocalToUnit, DIExpression *Expr,
479 MDNode *Decl = nullptr, uint32_t AlignInBits = 0);
477480
478481 /// Create a new descriptor for an auto variable. This is a local variable
479482 /// that is not a subprogram parameter.
8888 void processSubprogram(DISubprogram *SP);
8989 void processScope(DIScope *Scope);
9090 bool addCompileUnit(DICompileUnit *CU);
91 bool addGlobalVariable(DIGlobalVariableExpression *DIG);
91 bool addGlobalVariable(DIGlobalVariable *DIG);
9292 bool addSubprogram(DISubprogram *SP);
9393 bool addType(DIType *DT);
9494 bool addScope(DIScope *Scope);
9797 typedef SmallVectorImpl::const_iterator
9898 compile_unit_iterator;
9999 typedef SmallVectorImpl::const_iterator subprogram_iterator;
100 typedef SmallVectorImpl::const_iterator
101 global_variable_expression_iterator;
100 typedef SmallVectorImpl::const_iterator
101 global_variable_iterator;
102102 typedef SmallVectorImpl::const_iterator type_iterator;
103103 typedef SmallVectorImpl::const_iterator scope_iterator;
104104
110110 return make_range(SPs.begin(), SPs.end());
111111 }
112112
113 iterator_rangeexpression_iterator> global_variables() const {
113 iterator_rangeiterator> global_variables() const {
114114 return make_range(GVs.begin(), GVs.end());
115115 }
116116
131131 private:
132132 SmallVector CUs;
133133 SmallVector SPs;
134 SmallVectorExpression *, 8> GVs;
134 SmallVector *, 8> GVs;
135135 SmallVector TYs;
136136 SmallVector Scopes;
137137 SmallPtrSet NodesSeen;
10371037 StringRef Producer, bool IsOptimized, StringRef Flags,
10381038 unsigned RuntimeVersion, StringRef SplitDebugFilename,
10391039 unsigned EmissionKind, DICompositeTypeArray EnumTypes,
1040 DIScopeArray RetainedTypes,
1041 DIGlobalVariableExpressionArray GlobalVariables,
1040 DIScopeArray RetainedTypes, DIGlobalVariableArray GlobalVariables,
10421041 DIImportedEntityArray ImportedEntities, DIMacroNodeArray Macros,
10431042 uint64_t DWOId, bool SplitDebugInlining, StorageType Storage,
10441043 bool ShouldCreate = true) {
10781077 bool IsOptimized, StringRef Flags, unsigned RuntimeVersion,
10791078 StringRef SplitDebugFilename, DebugEmissionKind EmissionKind,
10801079 DICompositeTypeArray EnumTypes, DIScopeArray RetainedTypes,
1081 DIGlobalVariableExpressionArray GlobalVariables,
1080 DIGlobalVariableArray GlobalVariables,
10821081 DIImportedEntityArray ImportedEntities, DIMacroNodeArray Macros,
10831082 uint64_t DWOId, bool SplitDebugInlining),
10841083 (SourceLanguage, File, Producer, IsOptimized, Flags, RuntimeVersion,
11131112 DIScopeArray getRetainedTypes() const {
11141113 return cast_or_null(getRawRetainedTypes());
11151114 }
1116 DIGlobalVariableExpressionArray getGlobalVariables() const {
1115 DIGlobalVariableArray getGlobalVariables() const {
11171116 return cast_or_null(getRawGlobalVariables());
11181117 }
11191118 DIImportedEntityArray getImportedEntities() const {
11521151 void replaceRetainedTypes(DITypeArray N) {
11531152 replaceOperandWith(5, N.get());
11541153 }
1155 void replaceGlobalVariables(DIGlobalVariableExpressionArray N) {
1154 void replaceGlobalVariables(DIGlobalVariableArray N) {
11561155 replaceOperandWith(6, N.get());
11571156 }
11581157 void replaceImportedEntities(DIImportedEntityArray N) {
19811980 /// Return the size of this fragment in bits.
19821981 uint64_t getFragmentSizeInBits() const;
19831982
1984 /// Determine whether this represents a standalone constant value.
1985 bool isConstant() const;
1986
19871983 typedef ArrayRef::iterator element_iterator;
19881984 element_iterator elements_begin() const { return getElements().begin(); }
19891985 element_iterator elements_end() const { return getElements().end(); }
21032099 IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition) {}
21042100 ~DIGlobalVariable() = default;
21052101
2106 static DIGlobalVariable *getImpl(LLVMContext &Context, DIScope *Scope,
2107 StringRef Name, StringRef LinkageName,
2108 DIFile *File, unsigned Line, DITypeRef Type,
2109 bool IsLocalToUnit, bool IsDefinition,
2110 DIDerivedType *StaticDataMemberDeclaration,
2111 uint32_t AlignInBits, StorageType Storage,
2112 bool ShouldCreate = true) {
2102 static DIGlobalVariable *
2103 getImpl(LLVMContext &Context, DIScope *Scope, StringRef Name,
2104 StringRef LinkageName, DIFile *File, unsigned Line, DITypeRef Type,
2105 bool IsLocalToUnit, bool IsDefinition, DIExpression *Expr,
2106 DIDerivedType *StaticDataMemberDeclaration, uint32_t AlignInBits,
2107 StorageType Storage, bool ShouldCreate = true) {
21132108 return getImpl(Context, Scope, getCanonicalMDString(Context, Name),
21142109 getCanonicalMDString(Context, LinkageName), File, Line, Type,
2115 IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration,
2116 AlignInBits, Storage, ShouldCreate);
2110 IsLocalToUnit, IsDefinition, Expr,
2111 StaticDataMemberDeclaration, AlignInBits, Storage,
2112 ShouldCreate);
21172113 }
21182114 static DIGlobalVariable *
21192115 getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name,
21202116 MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
2121 bool IsLocalToUnit, bool IsDefinition,
2117 bool IsLocalToUnit, bool IsDefinition, Metadata *Expr,
21222118 Metadata *StaticDataMemberDeclaration, uint32_t AlignInBits,
21232119 StorageType Storage, bool ShouldCreate = true);
21242120
21252121 TempDIGlobalVariable cloneImpl() const {
21262122 return getTemporary(getContext(), getScope(), getName(), getLinkageName(),
21272123 getFile(), getLine(), getType(), isLocalToUnit(),
2128 isDefinition(), getStaticDataMemberDeclaration(),
2129 getAlignInBits());
2124 isDefinition(), getExpr(),
2125 getStaticDataMemberDeclaration(), getAlignInBits());
21302126 }
21312127
21322128 public:
21342130 (DIScope * Scope, StringRef Name, StringRef LinkageName,
21352131 DIFile *File, unsigned Line, DITypeRef Type,
21362132 bool IsLocalToUnit, bool IsDefinition,
2133 DIExpression *Expr,
21372134 DIDerivedType *StaticDataMemberDeclaration,
21382135 uint32_t AlignInBits),
21392136 (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
2140 IsDefinition, StaticDataMemberDeclaration, AlignInBits))
2137 IsDefinition, Expr, StaticDataMemberDeclaration,
2138 AlignInBits))
21412139 DEFINE_MDNODE_GET(DIGlobalVariable,
21422140 (Metadata * Scope, MDString *Name, MDString *LinkageName,
21432141 Metadata *File, unsigned Line, Metadata *Type,
21442142 bool IsLocalToUnit, bool IsDefinition,
2145 Metadata *StaticDataMemberDeclaration,
2143 Metadata *Expr, Metadata *StaticDataMemberDeclaration,
21462144 uint32_t AlignInBits),
21472145 (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
2148 IsDefinition, StaticDataMemberDeclaration, AlignInBits))
2146 IsDefinition, Expr, StaticDataMemberDeclaration,
2147 AlignInBits))
21492148
21502149 TempDIGlobalVariable clone() const { return cloneImpl(); }
21512150
21532152 bool isDefinition() const { return IsDefinition; }
21542153 StringRef getDisplayName() const { return getStringOperand(4); }
21552154 StringRef getLinkageName() const { return getStringOperand(5); }
2155 DIExpression *getExpr() const {
2156 return cast_or_null(getRawExpr());
2157 }
2158 void replaceExpr(DIExpression *E) {
2159 replaceOperandWith(6, E);
2160 }
21562161 DIDerivedType *getStaticDataMemberDeclaration() const {
21572162 return cast_or_null(getRawStaticDataMemberDeclaration());
21582163 }
21592164
21602165 MDString *getRawLinkageName() const { return getOperandAs(5); }
2161 Metadata *getRawStaticDataMemberDeclaration() const { return getOperand(6); }
2166 Metadata *getRawExpr() const { return getOperand(6); }
2167 Metadata *getRawStaticDataMemberDeclaration() const { return getOperand(7); }
21622168
21632169 static bool classof(const Metadata *MD) {
21642170 return MD->getMetadataID() == DIGlobalVariableKind;
23842390 }
23852391 };
23862392
2387 /// A pair of DIGlobalVariable and DIExpression.
2388 class DIGlobalVariableExpression : public MDNode {
2389 friend class LLVMContextImpl;
2390 friend class MDNode;
2391
2392 DIGlobalVariableExpression(LLVMContext &C, StorageType Storage,
2393 ArrayRef Ops)
2394 : MDNode(C, DIGlobalVariableExpressionKind, Storage, Ops) {}
2395 ~DIGlobalVariableExpression() = default;
2396
2397 static DIGlobalVariableExpression *
2398 getImpl(LLVMContext &Context, Metadata *Variable, Metadata *Expression,
2399 StorageType Storage, bool ShouldCreate = true);
2400
2401 TempDIGlobalVariableExpression cloneImpl() const {
2402 return getTemporary(getContext(), getVariable(), getExpression());
2403 }
2404
2405 public:
2406 DEFINE_MDNODE_GET(DIGlobalVariableExpression,
2407 (Metadata * Variable, Metadata *Expression),
2408 (Variable, Expression))
2409
2410 TempDIGlobalVariableExpression clone() const { return cloneImpl(); }
2411
2412 Metadata *getRawVariable() const { return getOperand(0); }
2413 DIGlobalVariable *getVariable() const {
2414 return cast_or_null(getRawVariable());
2415 }
2416 Metadata *getRawExpression() const { return getOperand(1); }
2417 DIExpression *getExpression() const {
2418 return cast_or_null(getRawExpression());
2419 }
2420
2421 static bool classof(const Metadata *MD) {
2422 return MD->getMetadataID() == DIGlobalVariableExpressionKind;
2423 }
2424 };
2425
24262393 /// Macro Info DWARF-like metadata node.
24272394 ///
24282395 /// A metadata node with a DWARF macro info (i.e., a constant named
1919 #ifndef LLVM_IR_GLOBALVARIABLE_H
2020 #define LLVM_IR_GLOBALVARIABLE_H
2121
22 #include "llvm/ADT/PointerUnion.h"
2322 #include "llvm/ADT/Twine.h"
2423 #include "llvm/ADT/ilist_node.h"
2524 #include "llvm/IR/GlobalObject.h"
3130 namespace llvm {
3231
3332 class Constant;
33 class DIGlobalVariable;
3434 class Module;
3535
3636 template class SymbolTableListTraits;
37 class DIGlobalVariable;
38 class DIGlobalVariableExpression;
3937
4038 class GlobalVariable : public GlobalObject, public ilist_node {
4139 friend class SymbolTableListTraits;
171169 /// drops not only the reference to the initializer but also to any metadata.
172170 void dropAllReferences();
173171
174 /// Attach a DIGlobalVariableExpression.
175 void addDebugInfo(DIGlobalVariableExpression *GV);
176
177 /// Fill the vector with all debug info attachements.
178 void getDebugInfo(SmallVectorImpl &GVs) const;
172 void addDebugInfo(DIGlobalVariable *GV);
173 void getDebugInfo(SmallVectorImpl &GVs) const;
179174
180175 // Methods for support type inquiry through isa, cast, and dyn_cast:
181176 static inline bool classof(const Value *V) {
8181 HANDLE_MDNODE_LEAF_UNIQUABLE(MDTuple)
8282 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocation)
8383 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIExpression)
84 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariableExpression)
8584 HANDLE_SPECIALIZED_MDNODE_BRANCH(DINode)
8685 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(GenericDINode)
8786 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubrange)
9090 O << '\n';
9191 }
9292
93 for (auto GVU : Finder.global_variables()) {
94 const auto *GV = GVU->getVariable();
93 for (const DIGlobalVariable *GV : Finder.global_variables()) {
9594 O << "Global variable: " << GV->getName();
9695 printFile(O, GV->getFilename(), GV->getDirectory(), GV->getLine());
9796 if (!GV->getLinkageName().empty())
41964196 /// ParseDIGlobalVariable:
41974197 /// ::= !DIGlobalVariable(scope: !0, name: "foo", linkageName: "foo",
41984198 /// file: !1, line: 7, type: !2, isLocal: false,
4199 /// isDefinition: true, declaration: !3, align: 8)
4199 /// isDefinition: true, variable: i32* @foo,
4200 /// declaration: !3, align: 8)
42004201 bool LLParser::ParseDIGlobalVariable(MDNode *&Result, bool IsDistinct) {
42014202 #define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
42024203 REQUIRED(name, MDStringField, (/* AllowEmpty */ false)); \
42074208 OPTIONAL(type, MDField, ); \
42084209 OPTIONAL(isLocal, MDBoolField, ); \
42094210 OPTIONAL(isDefinition, MDBoolField, (true)); \
4211 OPTIONAL(expr, MDField, ); \
42104212 OPTIONAL(declaration, MDField, ); \
42114213 OPTIONAL(align, MDUnsignedField, (0, UINT32_MAX));
42124214 PARSE_MD_FIELDS();
42154217 Result = GET_OR_DISTINCT(DIGlobalVariable,
42164218 (Context, scope.Val, name.Val, linkageName.Val,
42174219 file.Val, line.Val, type.Val, isLocal.Val,
4218 isDefinition.Val, declaration.Val, align.Val));
4220 isDefinition.Val, expr.Val, declaration.Val,
4221 align.Val));
42194222 return false;
42204223 }
42214224
42804283 return true;
42814284
42824285 Result = GET_OR_DISTINCT(DIExpression, (Context, Elements));
4283 return false;
4284 }
4285
4286 /// ParseDIGlobalVariableExpression:
4287 /// ::= !DIGlobalVariableExpression(var: !0, expr: !1)
4288 bool LLParser::ParseDIGlobalVariableExpression(MDNode *&Result,
4289 bool IsDistinct) {
4290 #define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \
4291 REQUIRED(var, MDField, ); \
4292 OPTIONAL(expr, MDField, );
4293 PARSE_MD_FIELDS();
4294 #undef VISIT_MD_FIELDS
4295
4296 Result =
4297 GET_OR_DISTINCT(DIGlobalVariableExpression, (Context, var.Val, expr.Val));
42984286 return false;
42994287 }
43004288
977977 DIGlobalVariable,
978978 (Context, getMDOrNull(Record[1]), getMDString(Record[2]),
979979 getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
980 getDITypeRefOrNull(Record[6]), Record[7], Record[8],
980 getDITypeRefOrNull(Record[6]), Record[7], Record[8], Expr,
981981 getMDOrNull(Record[10]), AlignInBits));
982
983 if (Expr || Attach) {
984 auto *DGVE = DIGlobalVariableExpression::getDistinct(Context, DGV, Expr);
985 MetadataList.assignValue(DGVE, NextMetadataNo++);
986 if (Attach)
987 Attach->addDebugInfo(DGVE);
988 } else
989 MetadataList.assignValue(DGV, NextMetadataNo++);
982 MetadataList.assignValue(DGV, NextMetadataNo++);
983
984 if (Attach)
985 Attach->addDebugInfo(DGV);
990986
991987 break;
992988 }
10341030 GET_OR_DISTINCT(DIExpression,
10351031 (Context, makeArrayRef(Record).slice(1))),
10361032 NextMetadataNo++);
1037 break;
1038 }
1039 case bitc::METADATA_GLOBAL_VAR_EXPR: {
1040 if (Record.size() != 3)
1041 return error("Invalid record");
1042
1043 IsDistinct = Record[0];
1044 MetadataList.assignValue(GET_OR_DISTINCT(DIGlobalVariableExpression,
1045 (Context, getMDOrNull(Record[1]),
1046 getMDOrNull(Record[2]))),
1047 NextMetadataNo++);
10481033 break;
10491034 }
10501035 case bitc::METADATA_OBJC_PROPERTY: {
209209 SmallVectorImpl &Record, unsigned Abbrev);
210210 void writeDIExpression(const DIExpression *N,
211211 SmallVectorImpl &Record, unsigned Abbrev);
212 void writeDIGlobalVariableExpression(const DIGlobalVariableExpression *N,
213 SmallVectorImpl &Record,
214 unsigned Abbrev);
215212 void writeDIObjCProperty(const DIObjCProperty *N,
216213 SmallVectorImpl &Record, unsigned Abbrev);
217214 void writeDIImportedEntity(const DIImportedEntity *N,
16851682 Record.push_back(VE.getMetadataOrNullID(N->getType()));
16861683 Record.push_back(N->isLocalToUnit());
16871684 Record.push_back(N->isDefinition());
1688 Record.push_back(/* expr */ 0);
1685 Record.push_back(VE.getMetadataOrNullID(N->getRawExpr()));
16891686 Record.push_back(VE.getMetadataOrNullID(N->getStaticDataMemberDeclaration()));
16901687 Record.push_back(N->getAlignInBits());
16911688
17341731 Record.append(N->elements_begin(), N->elements_end());
17351732
17361733 Stream.EmitRecord(bitc::METADATA_EXPRESSION, Record, Abbrev);
1737 Record.clear();
1738 }
1739
1740 void ModuleBitcodeWriter::writeDIGlobalVariableExpression(
1741 const DIGlobalVariableExpression *N, SmallVectorImpl &Record,
1742 unsigned Abbrev) {
1743 Record.push_back(N->isDistinct());
1744 Record.push_back(VE.getMetadataOrNullID(N->getVariable()));
1745 Record.push_back(VE.getMetadataOrNullID(N->getExpression()));
1746
1747 Stream.EmitRecord(bitc::METADATA_GLOBAL_VAR_EXPR, Record, Abbrev);
17481734 Record.clear();
17491735 }
17501736
21802180 }
21812181
21822182 void CodeViewDebug::emitDebugInfoForGlobals() {
2183 DenseMap
2184 GlobalMap;
2183 DenseMap GlobalMap;
21852184 for (const GlobalVariable &GV : MMI->getModule()->globals()) {
2186 SmallVector GVEs;
2187 GV.getDebugInfo(GVEs);
2188 for (const auto *GVE : GVEs)
2189 GlobalMap[GVE] = &GV;
2185 SmallVector MDs;
2186 GV.getMetadata(LLVMContext::MD_dbg, MDs);
2187 for (MDNode *MD : MDs)
2188 GlobalMap[cast(MD)] = &GV;
21902189 }
21912190
21922191 NamedMDNode *CUs = MMI->getModule()->getNamedMetadata("llvm.dbg.cu");
21982197 // it if we have at least one global to emit.
21992198 switchToDebugSectionForSymbol(nullptr);
22002199 MCSymbol *EndLabel = nullptr;
2201 for (const auto *GVE : CU->getGlobalVariables()) {
2202 if (const auto *GV = GlobalMap.lookup(GVE))
2200 for (const DIGlobalVariable *G : CU->getGlobalVariables()) {
2201 if (const auto *GV = GlobalMap.lookup(G))
22032202 if (!GV->hasComdat() && !GV->isDeclarationForLinker()) {
22042203 if (!EndLabel) {
22052204 OS.AddComment("Symbol subsection for globals");
22062205 EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols);
22072206 }
2208 // FIXME: emitDebugInfoForGlobal() doesn't handle DIExpressions.
2209 emitDebugInfoForGlobal(GVE->getVariable(), GV, Asm->getSymbol(GV));
2207 emitDebugInfoForGlobal(G, GV, Asm->getSymbol(GV));
22102208 }
22112209 }
22122210 if (EndLabel)
22142212
22152213 // Second, emit each global that is in a comdat into its own .debug$S
22162214 // section along with its own symbol substream.
2217 for (const auto *GVE : CU->getGlobalVariables()) {
2218 if (const auto *GV = GlobalMap.lookup(GVE)) {
2215 for (const DIGlobalVariable *G : CU->getGlobalVariables()) {
2216 if (const auto *GV = GlobalMap.lookup(G)) {
22192217 if (GV->hasComdat()) {
22202218 MCSymbol *GVSym = Asm->getSymbol(GV);
22212219 OS.AddComment("Symbol subsection for " +
22222220 Twine(GlobalValue::getRealLinkageName(GV->getName())));
22232221 switchToDebugSectionForSymbol(GVSym);
22242222 EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols);
2225 // FIXME: emitDebugInfoForGlobal() doesn't handle DIExpressions.
2226 emitDebugInfoForGlobal(GVE->getVariable(), GV, GVSym);
2223 emitDebugInfoForGlobal(G, GV, GVSym);
22272224 endCVSubsection(EndLabel);
22282225 }
22292226 }
7272 Asm->OutStreamer->hasRawTextSupport() ? 0 : getUniqueID());
7373 }
7474
75 /// getOrCreateGlobalVariableDIE - get or create global variable DIE.
7576 DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
76 const DIGlobalVariable *GV, ArrayRef GlobalExprs) {
77 const DIGlobalVariable *GV, const GlobalVariable *Global) {
7778 // Check for pre-existence.
7879 if (DIE *Die = getDIE(GV))
7980 return Die;
126127
127128 // Add location.
128129 bool addToAccelTable = false;
129 DIELoc *Loc = nullptr;
130 std::unique_ptr DwarfExpr;
131 bool AllConstant = std::all_of(
132 GlobalExprs.begin(), GlobalExprs.end(),
133 [&](const GlobalExpr GE) {
134 return GE.Expr && GE.Expr->isConstant();
135 });
136
137 for (const auto &GE : GlobalExprs) {
138 const GlobalVariable *Global = GE.Var;
139 const DIExpression *Expr = GE.Expr;
140 // For compatibility with DWARF 3 and earlier,
141 // DW_AT_location(DW_OP_constu, X, DW_OP_stack_value) becomes
142 // DW_AT_const_value(X).
143 if (GlobalExprs.size() == 1 && Expr && Expr->isConstant()) {
144 addConstantValue(*VariableDIE, /*Unsigned=*/true, Expr->getElement(1));
145 // We cannot describe the location of dllimport'd variables: the
146 // computation of their address requires loads from the IAT.
147 } else if ((Global && !Global->hasDLLImportStorageClass()) || AllConstant) {
148 if (!Loc) {
149 Loc = new (DIEValueAllocator) DIELoc;
150 DwarfExpr = llvm::make_unique(*Asm, *this, *Loc);
130
131 DIExpression *Expr = GV->getExpr();
132
133 // For compatibility with DWARF 3 and earlier,
134 // DW_AT_location(DW_OP_constu, X, DW_OP_stack_value) becomes
135 // DW_AT_const_value(X).
136 if (Expr && Expr->getNumElements() == 3 &&
137 Expr->getElement(0) == dwarf::DW_OP_constu &&
138 Expr->getElement(2) == dwarf::DW_OP_stack_value) {
139 addConstantValue(*VariableDIE, /*Unsigned=*/true, Expr->getElement(1));
140 // We cannot describe the location of dllimport'd variables: the computation
141 // of their address requires loads from the IAT.
142 } else if (!Global || !Global->hasDLLImportStorageClass()) {
143 DIELoc *Loc = new (DIEValueAllocator) DIELoc;
144 if (Global) {
145 addToAccelTable = true;
146 const MCSymbol *Sym = Asm->getSymbol(Global);
147 if (Global->isThreadLocal()) {
148 if (Asm->TM.Options.EmulatedTLS) {
149 // TODO: add debug info for emulated thread local mode.
150 } else {
151 // FIXME: Make this work with -gsplit-dwarf.
152 unsigned PointerSize = Asm->getDataLayout().getPointerSize();
153 assert((PointerSize == 4 || PointerSize == 8) &&
154 "Add support for other sizes if necessary");
155 // Based on GCC's support for TLS:
156 if (!DD->useSplitDwarf()) {
157 // 1) Start with a constNu of the appropriate pointer size
158 addUInt(*Loc, dwarf::DW_FORM_data1, PointerSize == 4
159 ? dwarf::DW_OP_const4u
160 : dwarf::DW_OP_const8u);
161 // 2) containing the (relocated) offset of the TLS variable
162 // within the module's TLS block.
163 addExpr(*Loc, dwarf::DW_FORM_udata,
164 Asm->getObjFileLowering().getDebugThreadLocalSymbol(Sym));
165 } else {
166 addUInt(*Loc, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_const_index);
167 addUInt(*Loc, dwarf::DW_FORM_udata,
168 DD->getAddressPool().getIndex(Sym, /* TLS */ true));
169 }
170 // 3) followed by an OP to make the debugger do a TLS lookup.
171 addUInt(*Loc, dwarf::DW_FORM_data1,
172 DD->useGNUTLSOpcode() ? dwarf::DW_OP_GNU_push_tls_address
173 : dwarf::DW_OP_form_tls_address);
174 }
175 } else {
176 DD->addArangeLabel(SymbolCU(this, Sym));
177 addOpAddress(*Loc, Sym);
151178 }
152 addToAccelTable = true;
153 if (Global) {
154 const MCSymbol *Sym = Asm->getSymbol(Global);
155 if (Global->isThreadLocal()) {
156 if (Asm->TM.Options.EmulatedTLS) {
157 // TODO: add debug info for emulated thread local mode.
158 } else {
159 // FIXME: Make this work with -gsplit-dwarf.
160 unsigned PointerSize = Asm->getDataLayout().getPointerSize();
161 assert((PointerSize == 4 || PointerSize == 8) &&
162 "Add support for other sizes if necessary");
163 // Based on GCC's support for TLS:
164 if (!DD->useSplitDwarf()) {
165 // 1) Start with a constNu of the appropriate pointer size
166 addUInt(*Loc, dwarf::DW_FORM_data1,
167 PointerSize == 4 ? dwarf::DW_OP_const4u
168 : dwarf::DW_OP_const8u);
169 // 2) containing the (relocated) offset of the TLS variable
170 // within the module's TLS block.
171 addExpr(*Loc, dwarf::DW_FORM_udata,
172 Asm->getObjFileLowering().getDebugThreadLocalSymbol(Sym));
173 } else {
174 addUInt(*Loc, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_const_index);
175 addUInt(*Loc, dwarf::DW_FORM_udata,
176 DD->getAddressPool().getIndex(Sym, /* TLS */ true));
177 }
178 // 3) followed by an OP to make the debugger do a TLS lookup.
179 addUInt(*Loc, dwarf::DW_FORM_data1,
180 DD->useGNUTLSOpcode() ? dwarf::DW_OP_GNU_push_tls_address
181 : dwarf::DW_OP_form_tls_address);
182 }
183 } else {
184 DD->addArangeLabel(SymbolCU(this, Sym));
185 addOpAddress(*Loc, Sym);
186 }
187 }
179
188180 if (Expr) {
189 DwarfExpr->addFragmentOffset(Expr);
190 DwarfExpr->AddExpression(Expr);
181 DIEDwarfExpression DwarfExpr(*Asm, *this, *Loc);
182 DwarfExpr.addFragmentOffset(Expr);
183 DwarfExpr.AddExpression(Expr);
184 DwarfExpr.finalize();
191185 }
192186 }
193 }
194 if (Loc)
195 addBlock(*VariableDIE, dwarf::DW_AT_location, DwarfExpr->finalize());
196
197 if (DD->useAllLinkageNames())
198 addLinkageName(*VariableDIE, GV->getLinkageName());
187
188 addBlock(*VariableDIE, dwarf::DW_AT_location, Loc);
189
190 if (DD->useAllLinkageNames())
191 addLinkageName(*VariableDIE, GV->getLinkageName());
192 }
199193
200194 if (addToAccelTable) {
201195 DD->addAccelName(GV->getName(), *VariableDIE);
508502 DwarfExpr.addFragmentOffset(Expr);
509503 DwarfExpr.AddUnsignedConstant(DVInsn->getOperand(0).getImm());
510504 DwarfExpr.AddExpression(Expr);
511 addBlock(*VariableDie, dwarf::DW_AT_location, DwarfExpr.finalize());
505 DwarfExpr.finalize();
506 addBlock(*VariableDie, dwarf::DW_AT_location, Loc);
512507 } else
513508 addConstantValue(*VariableDie, DVInsn->getOperand(0), DV.getType());
514509 } else if (DVInsn->getOperand(0).isFPImm())
538533 DwarfExpr.AddExpression(*Expr);
539534 ++Expr;
540535 }
541 addBlock(*VariableDie, dwarf::DW_AT_location, DwarfExpr.finalize());
536 DwarfExpr.finalize();
537 addBlock(*VariableDie, dwarf::DW_AT_location, Loc);
542538
543539 return VariableDie;
544540 }
657653 else if (auto *T = dyn_cast(Entity))
658654 EntityDie = getOrCreateTypeDIE(T);
659655 else if (auto *GV = dyn_cast(Entity))
660 EntityDie = getOrCreateGlobalVariableDIE(GV, {});
656 EntityDie = getOrCreateGlobalVariableDIE(GV, nullptr);
661657 else
662658 EntityDie = getDIE(Entity);
663659 assert(EntityDie);
743739 if (!validReg)
744740 return;
745741
742 Expr.finalize();
743
746744 // Now attach the location information to the DIE.
747 addBlock(Die, Attribute, Expr.finalize());
745 addBlock(Die, Attribute, Loc);
748746 }
749747
750748 /// Start with the address based on the location provided, and generate the
9090 /// Apply the DW_AT_stmt_list from this compile unit to the specified DIE.
9191 void applyStmtList(DIE &D);
9292
93 /// A pair of GlobalVariable and DIExpression.
94 struct GlobalExpr {
95 const GlobalVariable *Var;
96 const DIExpression *Expr;
97 };
98
99 /// Get or create global variable DIE.
100 DIE *
101 getOrCreateGlobalVariableDIE(const DIGlobalVariable *GV,
102 ArrayRef GlobalExprs);
93 /// getOrCreateGlobalVariableDIE - get or create global variable DIE.
94 DIE *getOrCreateGlobalVariableDIE(const DIGlobalVariable *GV,
95 const GlobalVariable *Global);
10396
10497 /// addLabelAddress - Add a dwarf label attribute data and value using
10598 /// either DW_FORM_addr or DW_FORM_GNU_addr_index.
463463 D->addChild(TheCU.constructImportedEntityDIE(N));
464464 }
465465
466 /// Sort and unique GVEs by comparing their fragment offset.
467 static SmallVectorImpl &
468 sortGlobalExprs(SmallVectorImpl &GVEs) {
469 std::sort(GVEs.begin(), GVEs.end(),
470 [](DwarfCompileUnit::GlobalExpr A, DwarfCompileUnit::GlobalExpr B) {
471 if (A.Expr != B.Expr && A.Expr && B.Expr &&
472 A.Expr->isFragment() && B.Expr->isFragment())
473 return A.Expr->getFragmentOffsetInBits() <
474 B.Expr->getFragmentOffsetInBits();
475 return false;
476 });
477 GVEs.erase(std::unique(GVEs.begin(), GVEs.end(),
478 [](DwarfCompileUnit::GlobalExpr A,
479 DwarfCompileUnit::GlobalExpr B) {
480 return A.Expr == B.Expr;
481 }),
482 GVEs.end());
483 return GVEs;
484 }
485
486466 // Emit all Dwarf sections that should come prior to the content. Create
487467 // global DIEs and emit initial debug info sections. This is invoked by
488468 // the target AsmPrinter.
499479 // Tell MMI whether we have debug info.
500480 MMI->setDebugInfoAvailability(NumDebugCUs > 0);
501481 SingleCU = NumDebugCUs == 1;
502 DenseMap>
503 GVMap;
482
483 DenseMap GVMap;
504484 for (const GlobalVariable &Global : M->globals()) {
505 SmallVectorExpression *, 1> GVs;
485 SmallVector *, 1> GVs;
506486 Global.getDebugInfo(GVs);
507 for (auto *GVE : GVs)
508 GVMap[GVE->getVariable()].push_back({&Global, GVE->getExpression()});
487 for (auto &GV : GVs)
488 GVMap[GV] = &Global;
509489 }
510490
511491 for (DICompileUnit *CUNode : M->debug_compile_units()) {
512492 DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
513493 for (auto *IE : CUNode->getImportedEntities())
514494 CU.addImportedEntity(IE);
515
516 // Global Variables.
517 for (auto *GVE : CUNode->getGlobalVariables())
518 GVMap[GVE->getVariable()].push_back({nullptr, GVE->getExpression()});
519 DenseSet Processed;
520 for (auto *GVE : CUNode->getGlobalVariables()) {
521 DIGlobalVariable *GV = GVE->getVariable();
522 if (Processed.insert(GV).second)
523 CU.getOrCreateGlobalVariableDIE(GV, sortGlobalExprs(GVMap[GV]));
524 }
525
495 for (auto *GV : CUNode->getGlobalVariables())
496 CU.getOrCreateGlobalVariableDIE(GV, GVMap.lookup(GV));
526497 for (auto *Ty : CUNode->getEnumTypes()) {
527498 // The enum types array by design contains pointers to
528499 // MDNodes rather than DIRefs. Unique them here.
214214 void EmitUnsigned(uint64_t Value) override;
215215 bool isFrameRegister(const TargetRegisterInfo &TRI,
216216 unsigned MachineReg) override;
217 DIELoc *finalize() {
218 DwarfExpression::finalize();
219 return &DIE;
220 }
221217 };
222218 }
223219
18261826 Printer.printMetadata("type", N->getRawType());
18271827 Printer.printBool("isLocal", N->isLocalToUnit());
18281828 Printer.printBool("isDefinition", N->isDefinition());
1829 Printer.printMetadata("expr", N->getExpr());
18291830 Printer.printMetadata("declaration", N->getRawStaticDataMemberDeclaration());
18301831 Printer.printInt("align", N->getAlignInBits());
18311832 Out << ")";
18651866 for (const auto &I : N->getElements())
18661867 Out << FS << I;
18671868 }
1868 Out << ")";
1869 }
1870
1871 static void writeDIGlobalVariableExpression(raw_ostream &Out,
1872 const DIGlobalVariableExpression *N,
1873 TypePrinting *TypePrinter,
1874 SlotTracker *Machine,
1875 const Module *Context) {
1876 Out << "!DIGlobalVariableExpression(";
1877 MDFieldPrinter Printer(Out, TypePrinter, Machine, Context);
1878 Printer.printMetadata("var", N->getVariable());
1879 Printer.printMetadata("expr", N->getExpression());
18801869 Out << ")";
18811870 }
18821871
531531 #endif
532532 }
533533
534 DIGlobalVariableExpression *DIBuilder::createGlobalVariableExpression(
534 DIGlobalVariable *DIBuilder::createGlobalVariable(
535535 DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F,
536 unsigned LineNumber, DIType *Ty, bool isLocalToUnit, DIExpression *Expr,
537 MDNode *Decl, uint32_t AlignInBits) {
536 unsigned LineNumber, DIType *Ty, bool isLocalToUnit,
537 DIExpression *Expr, MDNode *Decl, uint32_t AlignInBits) {
538538 checkGlobalVariableScope(Context);
539539
540 auto *GV = DIGlobalVariable::getDistinct(
540 auto *N = DIGlobalVariable::getDistinct(
541541 VMContext, cast_or_null(Context), Name, LinkageName, F,
542 LineNumber, Ty, isLocalToUnit, true, cast_or_null(Decl),
543 AlignInBits);
544 auto *N = DIGlobalVariableExpression::get(VMContext, GV, Expr);
542 LineNumber, Ty, isLocalToUnit, true, Expr,
543 cast_or_null(Decl), AlignInBits);
545544 AllGVs.push_back(N);
546545 return N;
547546 }
548547
549548 DIGlobalVariable *DIBuilder::createTempGlobalVariableFwdDecl(
550549 DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F,
551 unsigned LineNumber, DIType *Ty, bool isLocalToUnit, MDNode *Decl,
552 uint32_t AlignInBits) {
550 unsigned LineNumber, DIType *Ty, bool isLocalToUnit,
551 DIExpression *Expr, MDNode *Decl, uint32_t AlignInBits) {
553552 checkGlobalVariableScope(Context);
554553
555554 return DIGlobalVariable::getTemporary(
556555 VMContext, cast_or_null(Context), Name, LinkageName, F,
557 LineNumber, Ty, isLocalToUnit, false,
556 LineNumber, Ty, isLocalToUnit, false, Expr,
558557 cast_or_null(Decl), AlignInBits)
559558 .release();
560559 }
5252 void DebugInfoFinder::processModule(const Module &M) {
5353 for (auto *CU : M.debug_compile_units()) {
5454 addCompileUnit(CU);
55 for (auto DIG : CU->getGlobalVariables()) {
56 if (!addGlobalVariable(DIG))
57 continue;
58 auto *GV = DIG->getVariable();
59 processScope(GV->getScope());
60 processType(GV->getType().resolve());
55 for (auto *DIG : CU->getGlobalVariables()) {
56 if (addGlobalVariable(DIG)) {
57 processScope(DIG->getScope());
58 processType(DIG->getType().resolve());
59 }
6160 }
6261 for (auto *ET : CU->getEnumTypes())
6362 processType(ET);
206205 return true;
207206 }
208207
209 bool DebugInfoFinder::addGlobalVariable(DIGlobalVariableExpression *DIG) {
208 bool DebugInfoFinder::addGlobalVariable(DIGlobalVariable *DIG) {
209 if (!DIG)
210 return false;
211
210212 if (!NodesSeen.insert(DIG).second)
211213 return false;
212214
513513 DIGlobalVariable::getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name,
514514 MDString *LinkageName, Metadata *File, unsigned Line,
515515 Metadata *Type, bool IsLocalToUnit, bool IsDefinition,
516 Metadata *Variable,
516517 Metadata *StaticDataMemberDeclaration,
517 uint32_t AlignInBits, StorageType Storage,
518 bool ShouldCreate) {
518 uint32_t AlignInBits,
519 StorageType Storage, bool ShouldCreate) {
519520 assert(isCanonical(Name) && "Expected canonical MDString");
520521 assert(isCanonical(LinkageName) && "Expected canonical MDString");
521522 DEFINE_GETIMPL_LOOKUP(DIGlobalVariable,
522523 (Scope, Name, LinkageName, File, Line, Type,
523 IsLocalToUnit, IsDefinition,
524 IsLocalToUnit, IsDefinition, Variable,
524525 StaticDataMemberDeclaration, AlignInBits));
525 Metadata *Ops[] = {
526 Scope, Name, File, Type, Name, LinkageName, StaticDataMemberDeclaration};
526 Metadata *Ops[] = {Scope, Name, File, Type,
527 Name, LinkageName, Variable, StaticDataMemberDeclaration};
527528 DEFINE_GETIMPL_STORE(DIGlobalVariable,
528529 (Line, IsLocalToUnit, IsDefinition, AlignInBits),
529530 Ops);
579580 default:
580581 return false;
581582 case dwarf::DW_OP_LLVM_fragment:
582 // A fragment operator must appear at the end.
583 case dwarf::DW_OP_stack_value:
584 // We only support fragment and stack value expressions which appear at
585 // the end.
583586 return I->get() + I->getSize() == E->get();
584 case dwarf::DW_OP_stack_value: {
585 // Must be the last one or followed by a DW_OP_LLVM_fragment.
586 if (I->get() + I->getSize() == E->get())
587 break;
588 auto J = I;
589 if ((++J)->getOp() != dwarf::DW_OP_LLVM_fragment)
590 return false;
591 break;
592 }
593587 case dwarf::DW_OP_constu:
594588 case dwarf::DW_OP_plus:
595589 case dwarf::DW_OP_minus:
616610 uint64_t DIExpression::getFragmentSizeInBits() const {
617611 assert(isFragment() && "Expected fragment");
618612 return getElement(getNumElements() - 1);
619 }
620
621 bool DIExpression::isConstant() const {
622 // Recognize DW_OP_constu C DW_OP_stack_value (DW_OP_LLVM_fragment Len Ofs)?.
623 if (getNumElements() != 3 && getNumElements() != 6)
624 return false;
625 if (getElement(0) != dwarf::DW_OP_constu ||
626 getElement(2) != dwarf::DW_OP_stack_value)
627 return false;
628 if (getNumElements() == 6 && getElement(3) != dwarf::DW_OP_LLVM_fragment)
629 return false;
630 return true;
631 }
632
633 DIGlobalVariableExpression *
634 DIGlobalVariableExpression::getImpl(LLVMContext &Context, Metadata *Variable,
635 Metadata *Expression, StorageType Storage,
636 bool ShouldCreate) {
637 DEFINE_GETIMPL_LOOKUP(DIGlobalVariableExpression, (Variable, Expression));
638 Metadata *Ops[] = {Variable, Expression};
639 DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS(DIGlobalVariableExpression, Ops);
640613 }
641614
642615 DIObjCProperty *DIObjCProperty::getImpl(
762762 Metadata *Type;
763763 bool IsLocalToUnit;
764764 bool IsDefinition;
765 Metadata *Expr;
765766 Metadata *StaticDataMemberDeclaration;
766767 uint32_t AlignInBits;
767768
768769 MDNodeKeyImpl(Metadata *Scope, MDString *Name, MDString *LinkageName,
769770 Metadata *File, unsigned Line, Metadata *Type,
770771 bool IsLocalToUnit, bool IsDefinition,
771 Metadata *StaticDataMemberDeclaration, uint32_t AlignInBits)
772 Metadata *Expr, Metadata *StaticDataMemberDeclaration,
773 uint32_t AlignInBits)
772774 : Scope(Scope), Name(Name), LinkageName(LinkageName), File(File),
773775 Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit),
774 IsDefinition(IsDefinition),
776 IsDefinition(IsDefinition), Expr(Expr),
775777 StaticDataMemberDeclaration(StaticDataMemberDeclaration),
776778 AlignInBits(AlignInBits) {}
777779 MDNodeKeyImpl(const DIGlobalVariable *N)
779781 LinkageName(N->getRawLinkageName()), File(N->getRawFile()),
780782 Line(N->getLine()), Type(N->getRawType()),
781783 IsLocalToUnit(N->isLocalToUnit()), IsDefinition(N->isDefinition()),
784 Expr(N->getRawExpr()),
782785 StaticDataMemberDeclaration(N->getRawStaticDataMemberDeclaration()),
783786 AlignInBits(N->getAlignInBits()) {}
784787
788791 File == RHS->getRawFile() && Line == RHS->getLine() &&
789792 Type == RHS->getRawType() && IsLocalToUnit == RHS->isLocalToUnit() &&
790793 IsDefinition == RHS->isDefinition() &&
794 Expr == RHS->getRawExpr() &&
791795 StaticDataMemberDeclaration ==
792796 RHS->getRawStaticDataMemberDeclaration() &&
793797 AlignInBits == RHS->getAlignInBits();
801805 // generated IR is random for each run and test fails with Align included.
802806 // TODO: make hashing work fine with such situations
803807 return hash_combine(Scope, Name, LinkageName, File, Line, Type,
804 IsLocalToUnit, IsDefinition, /* AlignInBits, */
808 IsLocalToUnit, IsDefinition, /* AlignInBits, */ Expr,
805809 StaticDataMemberDeclaration);
806810 }
807811 };
856860 unsigned getHashValue() const {
857861 return hash_combine_range(Elements.begin(), Elements.end());
858862 }
859 };
860
861 template <> struct MDNodeKeyImpl {
862 Metadata *Variable;
863 Metadata *Expression;
864
865 MDNodeKeyImpl(Metadata *Variable, Metadata *Expression)
866 : Variable(Variable), Expression(Expression) {}
867 MDNodeKeyImpl(const DIGlobalVariableExpression *N)
868 : Variable(N->getRawVariable()), Expression(N->getRawExpression()) {}
869
870 bool isKeyOf(const DIGlobalVariableExpression *RHS) const {
871 return Variable == RHS->getRawVariable() &&
872 Expression == RHS->getRawExpression();
873 }
874 unsigned getHashValue() const { return hash_combine(Variable, Expression); }
875863 };
876864
877865 template <> struct MDNodeKeyImpl {
14181418 // If an offset adjustment was specified we need to modify the DIExpression
14191419 // to prepend the adjustment:
14201420 // !DIExpression(DW_OP_plus, Offset, [original expr])
1421 auto *Attachment = MD.second;
14221421 if (Offset != 0 && MD.first == LLVMContext::MD_dbg) {
1423 DIGlobalVariable *GV = dyn_cast(Attachment);
1424 DIExpression *E = nullptr;
1425 if (!GV) {
1426 auto *GVE = cast(Attachment);
1427 GV = GVE->getVariable();
1428 E = GVE->getExpression();
1429 }
1422 DIGlobalVariable *GV = cast(MD.second);
1423 DIExpression *E = GV->getExpr();
14301424 ArrayRef OrigElements;
14311425 if (E)
14321426 OrigElements = E->getElements();
14341428 Elements[0] = dwarf::DW_OP_plus;
14351429 Elements[1] = Offset;
14361430 std::copy(OrigElements.begin(), OrigElements.end(), Elements.begin() + 2);
1437 E = DIExpression::get(getContext(), Elements);
1438 Attachment = DIGlobalVariableExpression::get(getContext(), GV, E);
1431 GV->replaceExpr(DIExpression::get(getContext(), Elements));
14391432 }
1440 addMetadata(MD.first, *Attachment);
1433 addMetadata(MD.first, *MD.second);
14411434 }
14421435 }
14431436
14581451 return cast_or_null(getMetadata(LLVMContext::MD_dbg));
14591452 }
14601453
1461 void GlobalVariable::addDebugInfo(DIGlobalVariableExpression *GV) {
1454 void GlobalVariable::addDebugInfo(DIGlobalVariable *GV) {
14621455 addMetadata(LLVMContext::MD_dbg, *GV);
14631456 }
14641457
14651458 void GlobalVariable::getDebugInfo(
1466 SmallVectorImplExpression *> &GVs) const {
1459 SmallVectorImpl *> &GVs) const {
14671460 SmallVector MDs;
14681461 getMetadata(LLVMContext::MD_dbg, MDs);
14691462 for (MDNode *MD : MDs)
1470 GVs.push_back(cast(MD));
1471 }
1463 GVs.push_back(cast(MD));
1464 }
593593 "Global variable initializer type does not match global "
594594 "variable type!",
595595 &GV);
596
596597 // If the global has common linkage, it must have a zero initializer and
597598 // cannot be constant.
598599 if (GV.hasCommonLinkage()) {
658659 GV.hasAvailableExternallyLinkage(),
659660 "Global is marked as dllimport, but not external", &GV);
660661
661 // Visit any debug info attachments.
662 SmallVector MDs;
663 GV.getMetadata(LLVMContext::MD_dbg, MDs);
664 for (auto *MD : MDs)
665 if (auto *GVE = dyn_cast(MD))
666 visitDIGlobalVariableExpression(*GVE);
667 else
668 AssertDI(false, "!dbg attachment of global variable must be a "
669 "DIGlobalVariableExpression");
670
671662 if (!GV.hasInitializer()) {
672663 visitGlobalValue(GV);
673664 return;
10101001 if (auto *Array = N.getRawGlobalVariables()) {
10111002 AssertDI(isa(Array), "invalid global variable list", &N, Array);
10121003 for (Metadata *Op : N.getGlobalVariables()->operands()) {
1013 AssertDI(Op && (isa(Op)),
1014 "invalid global variable ref", &N, Op);
1004 AssertDI(Op && isa(Op), "invalid global variable ref",
1005 &N, Op);
10151006 }
10161007 }
10171008 if (auto *Array = N.getRawImportedEntities()) {
11541145
11551146 AssertDI(N.getTag() == dwarf::DW_TAG_variable, "invalid tag", &N);
11561147 AssertDI(!N.getName().empty(), "missing global variable name", &N);
1148 if (auto *V = N.getRawExpr())
1149 AssertDI(isa(V), "invalid expression location", &N, V);
11571150 if (auto *Member = N.getRawStaticDataMemberDeclaration()) {
11581151 AssertDI(isa(Member),
11591152 "invalid static data member declaration", &N, Member);
11711164
11721165 void Verifier::visitDIExpression(const DIExpression &N) {
11731166 AssertDI(N.isValid(), "invalid expression", &N);
1174 }
1175
1176 void Verifier::visitDIGlobalVariableExpression(
1177 const DIGlobalVariableExpression &GVE) {
1178 AssertDI(GVE.getVariable(), "missing variable");
1179 if (auto *Var = GVE.getVariable())
1180 visitDIGlobalVariable(*Var);
1181 if (auto *Expr = GVE.getExpression())
1182 visitDIExpression(*Expr);
11831167 }
11841168
11851169 void Verifier::visitDIObjCProperty(const DIObjCProperty &N) {
312312 // replace the current list of potentially dead global variables/functions
313313 // with the live list.
314314 SmallVector LiveGlobalVariables;
315 DenseSet VisitedSet;
316
317 std::set LiveGVs;
315 DenseSet VisitedSet;
316
317 std::set LiveGVs;
318318 for (GlobalVariable &GV : M.globals()) {
319 SmallVector GVEs;
320 GV.getDebugInfo(GVEs);
321 for (auto *GVE : GVEs)
322 LiveGVs.insert(GVE);
319 SmallVector DIs;
320 GV.getDebugInfo(DIs);
321 for (DIGlobalVariable *DI : DIs)
322 LiveGVs.insert(DI);
323323 }
324324
325325 for (DICompileUnit *DIC : F.compile_units()) {
326326 // Create our live global variable list.
327327 bool GlobalVariableChange = false;
328 for (auto *DIG : DIC->getGlobalVariables()) {
329 if (DIG->getExpression() && DIG->getExpression()->isConstant())
330 LiveGVs.insert(DIG);
331
328 for (DIGlobalVariable *DIG : DIC->getGlobalVariables()) {
332329 // Make sure we only visit each global variable only once.
333330 if (!VisitedSet.insert(DIG).second)
334331 continue;
16541654
16551655 // Transfer the debug info. The payload starts at offset zero so we can
16561656 // copy the debug info over as is.
1657 SmallVectorExpression *, 1> GVs;
1657 SmallVector *, 1> GVs;
16581658 G->getDebugInfo(GVs);
16591659 for (auto *GV : GVs)
16601660 NewGlobal->addDebugInfo(GV);
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, !8, !9, !10}
6 !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
77
88 !0 = !DIFile(filename: "scope.h", directory: "/path/to/dir")
99 !1 = distinct !{}
1616 file: !2, line: 7, type: !3, isLocal: true,
1717 isDefinition: false, align: 32)
1818
19 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "Class", size: 8, align: 8)
20 !7 = !DIDerivedType(tag: DW_TAG_member, name: "mem", flags: DIFlagStaticMember, scope: !6, baseType: !3)
19 ; CHECK: !6 = !DIGlobalVariable(name: "foo", scope: !0, isLocal: false, isDefinition: true, expr: !7)
20 ; CHECK: !7 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
21 !6 = !DIGlobalVariable(name: "foo", scope: !0, expr: !DIExpression(DW_OP_constu, 42, DW_OP_stack_value))
2122
22 ; CHECK: !8 = !DIGlobalVariable(name: "mem", scope: !0, isLocal: false, isDefinition: true, declaration: !7)
23 !8 = !DIGlobalVariable(name: "mem", scope: !0, declaration: !7)
23 !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "Class", size: 8, align: 8)
24 !8 = !DIDerivedType(tag: DW_TAG_member, name: "mem", flags: DIFlagStaticMember, scope: !7, baseType: !3)
25
26 ; CHECK: !10 = !DIGlobalVariable(name: "mem", scope: !0, isLocal: false, isDefinition: true, declaration: !9)
27 !9 = !DIGlobalVariable(name: "mem", scope: !0, declaration: !8)
+0
-23
test/Assembler/diglobalvariableexpression.ll less more
None ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
1 ; RUN: verify-uselistorder %s
2
3 @foo = global i32 0
4
5 ; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7}
6 !named = !{!0, !1, !2, !3, !4, !5, !6, !7}
7
8 !0 = !DIFile(filename: "scope.h", directory: "/path/to/dir")
9 !1 = distinct !{}
10 !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
11 !3 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
12 !4 = distinct !{}
13
14 ; CHECK: !5 = !DIGlobalVariable(name: "foo", linkageName: "foo", scope: !0, file: !2, line: 7, type: !3, isLocal: true, isDefinition: false, align: 32)
15 !5 = !DIGlobalVariable(name: "foo", linkageName: "foo", scope: !0,
16 file: !2, line: 7, type: !3, isLocal: true,
17 isDefinition: false, align: 32)
18
19 ; CHECK: !6 = !DIGlobalVariableExpression(var: !5, expr: !7)
20 !6 = !DIGlobalVariableExpression(var: !5, expr: !7)
21 ; CHECK: !7 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
22 !7 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
+0
-26
test/Bitcode/DIGlobalVariableExpr.ll less more
None ; RUN: llvm-dis -o - %s.bc | FileCheck %s
1
2 ; CHECK: @g = common global i32 0, align 4, !dbg ![[G:[0-9]+]]
3 ; CHECK: ![[G]] = {{.*}}!DIGlobalVariableExpression(var: ![[GVAR:[0-9]+]], expr: ![[GEXPR:[0-9]+]])
4 ; CHECK: ![[GVAR]] = distinct !DIGlobalVariable(name: "g",
5 ; CHECK: !DIGlobalVariableExpression(var: ![[CVAR:[0-9]+]], expr: ![[CEXPR:[0-9]+]])
6 ; CHECK: ![[CVAR]] = distinct !DIGlobalVariable(name: "c",
7 ; CHECK: ![[CEXPR]] = !DIExpression(DW_OP_constu, 23, DW_OP_stack_value)
8 ; CHECK: ![[GEXPR]] = !DIExpression(DW_OP_plus, 1)
9 @g = common global i32 0, align 4, !dbg !0
10
11 !llvm.dbg.cu = !{!1}
12 !llvm.module.flags = !{!6, !7, !8}
13 !llvm.ident = !{!9}
14
15 !0 = distinct !DIGlobalVariable(name: "g", scope: !1, file: !2, line: 1, type: !5, isLocal: false, isDefinition: true, expr: !DIExpression(DW_OP_plus, 1))
16 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 (trunk 286129) (llvm/trunk 286128)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
17 !2 = !DIFile(filename: "a.c", directory: "/")
18 !3 = !{}
19 !4 = !{!0, !10}
20 !5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
21 !6 = !{i32 2, !"Dwarf Version", i32 4}
22 !7 = !{i32 2, !"Debug Info Version", i32 3}
23 !8 = !{i32 1, !"PIC Level", i32 2}
24 !9 = !{!"clang version 4.0.0 (trunk 286129) (llvm/trunk 286128)"}
25 !10 = distinct !DIGlobalVariable(name: "c", scope: !1, file: !2, line: 1, type: !5, isLocal: false, isDefinition: true, expr: !DIExpression(DW_OP_constu, 23, DW_OP_stack_value))
test/Bitcode/DIGlobalVariableExpr.ll.bc less more
Binary diff not shown
0 ; RUN: llvm-dis -o - %s.bc | FileCheck %s
11
2 !llvm.dbg.cu = !{!0}
3 !llvm.module.flags = !{!7, !8}
2 ; CHECK: !0 = distinct !DIGlobalVariable(name: "a", scope: null, isLocal: false, isDefinition: true, expr: !1)
3 ; CHECK: !1 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
44
5 ; CHECK: !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.1", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !3)
6 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.1", isOptimized: true, runtimeVersion: 0, emissionKind: 1, enums: !2, globals: !3)
7 !1 = !DIFile(filename: "g.c", directory: "/")
8 !2 = !{}
9 ; CHECK: !3 = !{!4}
10 !3 = !{!4}
11 ; CHECK: !4 = {{.*}}!DIGlobalVariableExpression(var: !5, expr: !8)
12 ; CHECK: !5 = !DIGlobalVariable(name: "c", scope: !0, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true)
13 ; CHECK: !8 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
14 !4 = !DIGlobalVariable(name: "c", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32 42)
15 !5 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !6)
16 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
17 !7 = !{i32 2, !"Dwarf Version", i32 2}
18 !8 = !{i32 2, !"Debug Info Version", i32 3}
5 !named = !{!0}
196
7 !0 = distinct !DIGlobalVariable(name: "a", variable: i32 42)
1717 ; CHECK-NEXT: !7 = !DILocalVariable(name: "V1", scope: !6, type: !2)
1818 ; CHECK-NEXT: !8 = !DIObjCProperty(name: "P1", type: !1)
1919 ; CHECK-NEXT: !9 = !DITemplateTypeParameter(type: !1)
20 ; CHECK-NEXT: !10 = distinct !DIGlobalVariableExpression(var: !11)
21 ; CHECK-NEXT: !11 = !DIGlobalVariable(name: "G",{{.*}} type: !1,
22 ; CHECK-NEXT: !12 = !DITemplateValueParameter(type: !1, value: i32* @G1)
23 ; CHECK-NEXT: !13 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "T2", scope: !0, entity: !1)
24 ; CHECK-NEXT: !14 = !DICompositeType(tag: DW_TAG_structure_type, name: "T3", file: !0, elements: !15, identifier: "T3")
25 ; CHECK-NEXT: !15 = !{!16}
26 ; CHECK-NEXT: !16 = !DISubprogram(scope: !14,
27 ; CHECK-NEXT: !17 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type,{{.*}} extraData: !14)
20 ; CHECK-NEXT: !10 = !DIGlobalVariable(name: "G",{{.*}} type: !1,
21 ; CHECK-NEXT: !11 = !DITemplateValueParameter(type: !1, value: i32* @G1)
22 ; CHECK-NEXT: !12 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "T2", scope: !0, entity: !1)
23 ; CHECK-NEXT: !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "T3", file: !0, elements: !14, identifier: "T3")
24 ; CHECK-NEXT: !14 = !{!15}
25 ; CHECK-NEXT: !15 = !DISubprogram(scope: !13,
26 ; CHECK-NEXT: !16 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type,{{.*}} extraData: !13)
2827
2928 !0 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
3029 !1 = !DICompositeType(tag: DW_TAG_structure_type, name: "T1", file: !0, identifier: "T1")
1919
2020 !llvm.dbg.cu = !{!0}
2121
22 !0 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "vsplive", line: 617, isLocal: true, isDefinition: true, scope: !1, file: !2, type: !6))
22 !0 = !DIGlobalVariable(name: "vsplive", line: 617, isLocal: true, isDefinition: true, scope: !1, file: !2, type: !6)
2323 !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")
2525 !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})
5959 !11 = distinct !DILexicalBlock(line: 5, column: 1, file: !26, scope: !1)
6060 !12 = !DILocalVariable(name: "c", line: 7, scope: !11, file: !2, type: !13)
6161 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
62 !14 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "length", linkageName: "length", line: 1, isLocal: false, isDefinition: true, scope: !2, file: !2, type: !13))
62 !14 = !DIGlobalVariable(name: "length", linkageName: "length", line: 1, isLocal: false, isDefinition: true, scope: !2, file: !2, type: !13)
6363 !15 = !DILocation(line: 4, column: 24, scope: !1)
6464 !16 = !DILocation(line: 4, column: 43, scope: !1)
6565 !17 = !DILocation(line: 9, column: 2, scope: !11)
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)
93 !13 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x1", line: 3, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5))
94 !14 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x2", line: 6, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5))
95 !15 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x3", line: 9, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5))
96 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x4", line: 12, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5))
97 !17 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x5", line: 15, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5))
93 !13 = !DIGlobalVariable(name: "x1", line: 3, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
94 !14 = !DIGlobalVariable(name: "x2", line: 6, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
95 !15 = !DIGlobalVariable(name: "x3", line: 9, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
96 !16 = !DIGlobalVariable(name: "x4", line: 12, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
97 !17 = !DIGlobalVariable(name: "x5", line: 15, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
9898 !18 = !DILocalVariable(name: "a", line: 7, arg: 1, scope: !6, file: !1, type: !5)
9999 !19 = !DILocalVariable(name: "b", line: 7, scope: !20, file: !1, type: !5)
100100 !20 = distinct !DILexicalBlock(line: 7, column: 0, file: !47, scope: !6)
9494 !19 = !DILocalVariable(name: "a", line: 14, arg: 1, scope: !8, file: !2, type: !5)
9595 !20 = !DILocalVariable(name: "b", line: 14, scope: !21, file: !2, type: !5)
9696 !21 = distinct !DILexicalBlock(line: 14, column: 19, file: !47, scope: !8)
97 !25 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x1", line: 4, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5))
98 !26 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x2", line: 7, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5))
97 !25 = !DIGlobalVariable(name: "x1", line: 4, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5)
98 !26 = !DIGlobalVariable(name: "x2", line: 7, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5)
9999 !27 = !DILocalVariable(name: "a", line: 17, arg: 1, scope: !9, file: !2, type: !5)
100100 !28 = !DILocalVariable(name: "b", line: 17, scope: !29, file: !2, type: !5)
101101 !29 = distinct !DILexicalBlock(line: 17, column: 19, file: !47, scope: !9)
9393 !13 = distinct !DILexicalBlock(line: 12, column: 0, file: !1, scope: !4)
9494 !14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !8)
9595 !15 = !{!16, !18, !19, !20}
96 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !17))
96 !16 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !17)
9797 !17 = !DIBasicType(tag: DW_TAG_base_type, name: "long long int", size: 64, align: 32, encoding: DW_ATE_signed)
98 !18 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8))
99 !19 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8))
100 !20 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "d", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8))
98 !18 = !DIGlobalVariable(name: "b", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
99 !19 = !DIGlobalVariable(name: "c", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
100 !20 = !DIGlobalVariable(name: "d", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
101101 !21 = !DILocation(line: 10, scope: !22)
102102 !22 = distinct !DILexicalBlock(line: 10, column: 0, file: !1, scope: !4)
103103 !26 = !DILocation(line: 12, scope: !13)
2525 !llvm.module.flags = !{!12, !13}
2626 !llvm.ident = !{!14}
2727
28 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "myvar_c", scope: !1, file: !2, line: 3, type: !5, isLocal: true, isDefinition: true))
28 !0 = distinct !DIGlobalVariable(name: "myvar_c", scope: !1, file: !2, line: 3, type: !5, isLocal: true, isDefinition: true)
2929 !1 = distinct !DISubprogram(name: "testprog", scope: !2, file: !2, line: 1, type: !3, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !6, variables: !9)
3030 !2 = !DIFile(filename: "testprog.c", directory: "/w/llvm/bld")
3131 !3 = !DISubroutineType(types: !4)
4141 !3 = !{!4}
4242 ; Find list of global variables and make sure it's the one used by DICompileUnit
4343 ; CHECK: [[GLOBALSNODE]] = !{[[GVNODE:![0-9]+]]}
44 !4 = !DIGlobalVariableExpression(var: distinct !DIGlobalVariable(name: "static_var", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true))
44 !4 = distinct !DIGlobalVariable(name: "static_var", scope: !0, file: !1, line: 2, type: !5, isLocal: false,
45 isDefinition: true)
4546 ; Debug info must also be updated to reflect new address space.
4647 ; CHECK: [[GVNODE]] = distinct !DIGlobalVariable(name: "static_var"
4748 ; CHECK-SAME: scope: [[CUNODE]]
351351 !296 = !DILocalVariable(name: "j", line: 907, scope: !293, file: !5, type: !8)
352352 !297 = !DILocalVariable(name: "k", line: 907, scope: !293, file: !5, type: !8)
353353 !298 = !{!299, !304, !305, !309, !310, !311, !312, !313, !314, !315, !316, !317, !318, !319, !320, !321, !322, !323, !324, !325, !326, !327, !328, !329, !330, !331, !332, !333, !334, !335, !336, !337, !338, !339, !340, !341, !342, !343, !347, !350, !351, !352, !353, !354, !355, !356, !360, !361, !362, !363, !364, !365, !366, !367, !368, !369, !370, !371, !372, !373, !374, !375, !376, !377, !378, !379, !380, !381, !382, !383, !384, !385, !386, !387, !388, !389, !390, !391, !392, !393, !394, !395, !396, !397, !398, !399, !400, !401, !402, !403, !404, !405, !406, !407, !408, !409, !410, !411, !412, !413, !414, !415, !416, !417, !418, !419, !422, !426, !427, !430, !431, !434, !435, !436, !437}
354 !299 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "grid_points", line: 28, isLocal: true, isDefinition: true, scope: null, file: !300, type: !302))
354 !299 = !DIGlobalVariable(name: "grid_points", line: 28, isLocal: true, isDefinition: true, scope: null, file: !300, type: !302)
355355 !300 = !DIFile(filename: "./header.h", directory: "/home/hfinkel/src/NPB2.3-omp-C/BT")
356356 !301 = !{!"./header.h", !"/home/hfinkel/src/NPB2.3-omp-C/BT"}
357357 !302 = !DICompositeType(tag: DW_TAG_array_type, size: 96, align: 32, baseType: !8, elements: !303)
358358 !303 = !{!178}
359 !304 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dt", line: 35, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
360 !305 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "rhs", line: 68, isLocal: true, isDefinition: true, scope: null, file: !300, type: !306))
359 !304 = !DIGlobalVariable(name: "dt", line: 35, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
360 !305 = !DIGlobalVariable(name: "rhs", line: 68, isLocal: true, isDefinition: true, scope: null, file: !300, type: !306)
361361 !306 = !DICompositeType(tag: DW_TAG_array_type, size: 1385839040, align: 64, baseType: !20, elements: !307)
362362 !307 = !{!308, !308, !308, !93}
363363 !308 = !DISubrange(count: 163)
364 !309 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zzcon5", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
365 !310 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zzcon4", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
366 !311 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zzcon3", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
367 !312 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz5tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
368 !313 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz4tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
369 !314 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz3tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
370 !315 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zzcon2", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
371 !316 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz2tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
372 !317 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tz2", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
373 !318 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz1tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
374 !319 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "yycon5", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
375 !320 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "yycon4", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
376 !321 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "yycon3", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
377 !322 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy5ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
378 !323 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy4ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
379 !324 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy3ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
380 !325 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "yycon2", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
381 !326 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy2ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
382 !327 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ty2", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
383 !328 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy1ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
384 !329 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dssp", line: 35, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
385 !330 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c1", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
386 !331 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "xxcon5", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
387 !332 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "xxcon4", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
388 !333 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "xxcon3", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
389 !334 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx5tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
390 !335 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx4tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
391 !336 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx3tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
392 !337 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c2", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
393 !338 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "con43", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
394 !339 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "xxcon2", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
395 !340 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx2tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
396 !341 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tx2", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
397 !342 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx1tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
398 !343 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "forcing", line: 66, isLocal: true, isDefinition: true, scope: null, file: !300, type: !344))
364 !309 = !DIGlobalVariable(name: "zzcon5", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
365 !310 = !DIGlobalVariable(name: "zzcon4", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
366 !311 = !DIGlobalVariable(name: "zzcon3", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
367 !312 = !DIGlobalVariable(name: "dz5tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
368 !313 = !DIGlobalVariable(name: "dz4tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
369 !314 = !DIGlobalVariable(name: "dz3tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
370 !315 = !DIGlobalVariable(name: "zzcon2", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
371 !316 = !DIGlobalVariable(name: "dz2tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
372 !317 = !DIGlobalVariable(name: "tz2", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
373 !318 = !DIGlobalVariable(name: "dz1tz1", line: 43, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
374 !319 = !DIGlobalVariable(name: "yycon5", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
375 !320 = !DIGlobalVariable(name: "yycon4", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
376 !321 = !DIGlobalVariable(name: "yycon3", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
377 !322 = !DIGlobalVariable(name: "dy5ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
378 !323 = !DIGlobalVariable(name: "dy4ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
379 !324 = !DIGlobalVariable(name: "dy3ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
380 !325 = !DIGlobalVariable(name: "yycon2", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
381 !326 = !DIGlobalVariable(name: "dy2ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
382 !327 = !DIGlobalVariable(name: "ty2", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
383 !328 = !DIGlobalVariable(name: "dy1ty1", line: 41, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
384 !329 = !DIGlobalVariable(name: "dssp", line: 35, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
385 !330 = !DIGlobalVariable(name: "c1", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
386 !331 = !DIGlobalVariable(name: "xxcon5", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
387 !332 = !DIGlobalVariable(name: "xxcon4", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
388 !333 = !DIGlobalVariable(name: "xxcon3", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
389 !334 = !DIGlobalVariable(name: "dx5tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
390 !335 = !DIGlobalVariable(name: "dx4tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
391 !336 = !DIGlobalVariable(name: "dx3tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
392 !337 = !DIGlobalVariable(name: "c2", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
393 !338 = !DIGlobalVariable(name: "con43", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
394 !339 = !DIGlobalVariable(name: "xxcon2", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
395 !340 = !DIGlobalVariable(name: "dx2tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
396 !341 = !DIGlobalVariable(name: "tx2", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
397 !342 = !DIGlobalVariable(name: "dx1tx1", line: 39, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
398 !343 = !DIGlobalVariable(name: "forcing", line: 66, isLocal: true, isDefinition: true, scope: null, file: !300, type: !344)
399399 !344 = !DICompositeType(tag: DW_TAG_array_type, size: 1663006848, align: 64, baseType: !20, elements: !345)
400400 !345 = !{!308, !308, !308, !346}
401401 !346 = !DISubrange(count: 6)
402 !347 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "qs", line: 63, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348))
402 !347 = !DIGlobalVariable(name: "qs", line: 63, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348)
403403 !348 = !DICompositeType(tag: DW_TAG_array_type, size: 277167808, align: 64, baseType: !20, elements: !349)
404404 !349 = !{!308, !308, !308}
405 !350 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "square", line: 65, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348))
406 !351 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ws", line: 62, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348))
407 !352 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "vs", line: 61, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348))
408 !353 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "us", line: 60, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348))
409 !354 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "rho_i", line: 64, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348))
410 !355 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "u", line: 67, isLocal: true, isDefinition: true, scope: null, file: !300, type: !306))
411 !356 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ce", line: 36, isLocal: true, isDefinition: true, scope: null, file: !300, type: !357))
405 !350 = !DIGlobalVariable(name: "square", line: 65, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348)
406 !351 = !DIGlobalVariable(name: "ws", line: 62, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348)
407 !352 = !DIGlobalVariable(name: "vs", line: 61, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348)
408 !353 = !DIGlobalVariable(name: "us", line: 60, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348)
409 !354 = !DIGlobalVariable(name: "rho_i", line: 64, isLocal: true, isDefinition: true, scope: null, file: !300, type: !348)
410 !355 = !DIGlobalVariable(name: "u", line: 67, isLocal: true, isDefinition: true, scope: null, file: !300, type: !306)
411 !356 = !DIGlobalVariable(name: "ce", line: 36, isLocal: true, isDefinition: true, scope: null, file: !300, type: !357)
412412 !357 = !DICompositeType(tag: DW_TAG_array_type, size: 4160, align: 64, baseType: !20, elements: !358)
413413 !358 = !{!93, !359}
414414 !359 = !DISubrange(count: 13)
415 !360 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dnzm1", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
416 !361 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dnym1", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
417 !362 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dnxm1", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
418 !363 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zzcon1", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
419 !364 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "yycon1", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
420 !365 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "xxcon1", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
421 !366 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "con16", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
422 !367 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c2iv", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
423 !368 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c3c4tz3", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
424 !369 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c3c4ty3", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
425 !370 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c3c4tx3", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
426 !371 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "comz6", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
427 !372 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "comz5", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
428 !373 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "comz4", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
429 !374 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "comz1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
430 !375 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dtdssp", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
431 !376 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c2dttz1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
432 !377 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c2dtty1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
433 !378 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c2dttx1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
434 !379 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dttz2", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
435 !380 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dttz1", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
436 !381 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dtty2", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
437 !382 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dtty1", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
438 !383 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dttx2", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
439 !384 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dttx1", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
440 !385 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c5dssp", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
441 !386 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c4dssp", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
442 !387 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dzmax", line: 37, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
443 !388 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dymax", line: 37, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
444 !389 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dxmax", line: 37, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
445 !390 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz5", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
446 !391 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz4", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
447 !392 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz3", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
448 !393 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz2", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
449 !394 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dz1", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
450 !395 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy5", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
451 !396 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy4", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
452 !397 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy3", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
453 !398 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy2", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
454 !399 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dy1", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
455 !400 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx5", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
456 !401 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx4", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
457 !402 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx3", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
458 !403 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx2", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
459 !404 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "dx1", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
460 !405 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tz3", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
461 !406 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tz1", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
462 !407 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ty3", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
463 !408 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ty1", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
464 !409 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tx3", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
465 !410 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tx1", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
466 !411 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "conz1", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
467 !412 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c1345", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
468 !413 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c3c4", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
469 !414 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c1c5", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
470 !415 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c1c2", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
471 !416 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c5", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
472 !417 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c4", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
473 !418 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c3", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
474 !419 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "lhs", line: 69, isLocal: true, isDefinition: true, scope: null, file: !300, type: !420))
415 !360 = !DIGlobalVariable(name: "dnzm1", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
416 !361 = !DIGlobalVariable(name: "dnym1", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
417 !362 = !DIGlobalVariable(name: "dnxm1", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
418 !363 = !DIGlobalVariable(name: "zzcon1", line: 42, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
419 !364 = !DIGlobalVariable(name: "yycon1", line: 40, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
420 !365 = !DIGlobalVariable(name: "xxcon1", line: 38, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
421 !366 = !DIGlobalVariable(name: "con16", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
422 !367 = !DIGlobalVariable(name: "c2iv", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
423 !368 = !DIGlobalVariable(name: "c3c4tz3", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
424 !369 = !DIGlobalVariable(name: "c3c4ty3", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
425 !370 = !DIGlobalVariable(name: "c3c4tx3", line: 48, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
426 !371 = !DIGlobalVariable(name: "comz6", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
427 !372 = !DIGlobalVariable(name: "comz5", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
428 !373 = !DIGlobalVariable(name: "comz4", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
429 !374 = !DIGlobalVariable(name: "comz1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
430 !375 = !DIGlobalVariable(name: "dtdssp", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
431 !376 = !DIGlobalVariable(name: "c2dttz1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
432 !377 = !DIGlobalVariable(name: "c2dtty1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
433 !378 = !DIGlobalVariable(name: "c2dttx1", line: 47, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
434 !379 = !DIGlobalVariable(name: "dttz2", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
435 !380 = !DIGlobalVariable(name: "dttz1", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
436 !381 = !DIGlobalVariable(name: "dtty2", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
437 !382 = !DIGlobalVariable(name: "dtty1", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
438 !383 = !DIGlobalVariable(name: "dttx2", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
439 !384 = !DIGlobalVariable(name: "dttx1", line: 46, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
440 !385 = !DIGlobalVariable(name: "c5dssp", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
441 !386 = !DIGlobalVariable(name: "c4dssp", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
442 !387 = !DIGlobalVariable(name: "dzmax", line: 37, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
443 !388 = !DIGlobalVariable(name: "dymax", line: 37, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
444 !389 = !DIGlobalVariable(name: "dxmax", line: 37, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
445 !390 = !DIGlobalVariable(name: "dz5", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
446 !391 = !DIGlobalVariable(name: "dz4", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
447 !392 = !DIGlobalVariable(name: "dz3", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
448 !393 = !DIGlobalVariable(name: "dz2", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
449 !394 = !DIGlobalVariable(name: "dz1", line: 34, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
450 !395 = !DIGlobalVariable(name: "dy5", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
451 !396 = !DIGlobalVariable(name: "dy4", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
452 !397 = !DIGlobalVariable(name: "dy3", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
453 !398 = !DIGlobalVariable(name: "dy2", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
454 !399 = !DIGlobalVariable(name: "dy1", line: 33, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
455 !400 = !DIGlobalVariable(name: "dx5", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
456 !401 = !DIGlobalVariable(name: "dx4", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
457 !402 = !DIGlobalVariable(name: "dx3", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
458 !403 = !DIGlobalVariable(name: "dx2", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
459 !404 = !DIGlobalVariable(name: "dx1", line: 32, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
460 !405 = !DIGlobalVariable(name: "tz3", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
461 !406 = !DIGlobalVariable(name: "tz1", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
462 !407 = !DIGlobalVariable(name: "ty3", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
463 !408 = !DIGlobalVariable(name: "ty1", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
464 !409 = !DIGlobalVariable(name: "tx3", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
465 !410 = !DIGlobalVariable(name: "tx1", line: 31, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
466 !411 = !DIGlobalVariable(name: "conz1", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
467 !412 = !DIGlobalVariable(name: "c1345", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
468 !413 = !DIGlobalVariable(name: "c3c4", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
469 !414 = !DIGlobalVariable(name: "c1c5", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
470 !415 = !DIGlobalVariable(name: "c1c2", line: 44, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
471 !416 = !DIGlobalVariable(name: "c5", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
472 !417 = !DIGlobalVariable(name: "c4", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
473 !418 = !DIGlobalVariable(name: "c3", line: 45, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
474 !419 = !DIGlobalVariable(name: "lhs", line: 69, isLocal: true, isDefinition: true, scope: null, file: !300, type: !420)
475475 !420 = !DICompositeType(tag: DW_TAG_array_type, size: 20787585600, align: 64, baseType: !20, elements: !421)
476476 !421 = !{!308, !308, !308, !178, !93, !93}
477 !422 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "q", line: 73, isLocal: true, isDefinition: true, scope: null, file: !300, type: !423))
477 !422 = !DIGlobalVariable(name: "q", line: 73, isLocal: true, isDefinition: true, scope: null, file: !300, type: !423)
478478 !423 = !DICompositeType(tag: DW_TAG_array_type, size: 10368, align: 64, baseType: !20, elements: !424)
479479 !424 = !{!425}
480480 !425 = !DISubrange(count: 162)
481 !426 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "cuf", line: 72, isLocal: true, isDefinition: true, scope: null, file: !300, type: !423))
482 !427 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "buf", line: 75, isLocal: true, isDefinition: true, scope: null, file: !300, type: !428))
481 !426 = !DIGlobalVariable(name: "cuf", line: 72, isLocal: true, isDefinition: true, scope: null, file: !300, type: !423)
482 !427 = !DIGlobalVariable(name: "buf", line: 75, isLocal: true, isDefinition: true, scope: null, file: !300, type: !428)
483483 !428 = !DICompositeType(tag: DW_TAG_array_type, size: 51840, align: 64, baseType: !20, elements: !429)
484484 !429 = !{!425, !93}
485 !430 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ue", line: 74, isLocal: true, isDefinition: true, scope: null, file: !300, type: !428))
486 !431 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "njac", line: 86, isLocal: true, isDefinition: true, scope: null, file: !300, type: !432))
485 !430 = !DIGlobalVariable(name: "ue", line: 74, isLocal: true, isDefinition: true, scope: null, file: !300, type: !428)
486 !431 = !DIGlobalVariable(name: "njac", line: 86, isLocal: true, isDefinition: true, scope: null, file: !300, type: !432)
487487 !432 = !DICompositeType(tag: DW_TAG_array_type, size: 6886684800, align: 64, baseType: !20, elements: !433)
488488 !433 = !{!308, !308, !425, !93, !93}
489 !434 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "fjac", line: 84, isLocal: true, isDefinition: true, scope: null, file: !300, type: !432))
490 !435 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tmp3", line: 88, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
491 !436 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tmp2", line: 88, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
492 !437 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tmp1", line: 88, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20))
489 !434 = !DIGlobalVariable(name: "fjac", line: 84, isLocal: true, isDefinition: true, scope: null, file: !300, type: !432)
490 !435 = !DIGlobalVariable(name: "tmp3", line: 88, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
491 !436 = !DIGlobalVariable(name: "tmp2", line: 88, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
492 !437 = !DIGlobalVariable(name: "tmp1", line: 88, isLocal: true, isDefinition: true, scope: null, file: !300, type: !20)
493493 !438 = !{i32 2, !"Dwarf Version", i32 4}
494494 !439 = !DILocation(line: 1898, scope: !440)
495495 !440 = distinct !DILexicalBlock(line: 1898, column: 0, file: !1, scope: !114)
4444 !1 = !DIFile(filename: "crash.c", directory: "wasm/tests")
4545 !2 = !{}
4646 !3 = !{!4}
47 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "key", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true))
47 !4 = distinct !DIGlobalVariable(name: "key", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true)
4848 !5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 120, align: 8, elements: !9)
4949 !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !7, line: 185, baseType: !8)
5050 !7 = !DIFile(filename: "wasm/emscripten/system/include/libc/bits/alltypes.h", directory: "wasm/tests")
2323 !llvm.dbg.cu = !{!2}
2424 !llvm.module.flags = !{!38}
2525
26 !0 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ret", line: 7, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !3))
26 !0 = !DIGlobalVariable(name: "ret", line: 7, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !3)
2727 !1 = !DIFile(filename: "foo.c", directory: "/tmp/")
2828 !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)
115115 !llvm.module.flags = !{!7, !8, !9}
116116 !llvm.ident = !{!10}
117117
118 !0 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ld_ptr", scope: !1, file: !2, line: 17, type: !5, isLocal: false, isDefinition: true))
118 !0 = distinct !DIGlobalVariable(name: "ld_ptr", scope: !1, file: !2, line: 17, type: !5, isLocal: false, isDefinition: true)
119119 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 (trunk 281495)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
120120 !2 = !DIFile(filename: "fp128-g.c", directory: "/disk5/chh/Debug/ld.loop")
121121 !3 = !{}
6363 !19 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
6464 !20 = !DILocalVariable(name: "value", line: 16, scope: !4, file: !6, type: !14)
6565 !21 = !{!22, !23}
66 !22 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "g1", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14))
67 !23 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "g2", line: 6, isLocal: false, isDefinition: true, scope: null, file: !6, type: !19))
66 !22 = !DIGlobalVariable(name: "g1", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14)
67 !23 = !DIGlobalVariable(name: "g2", line: 6, isLocal: false, isDefinition: true, scope: null, file: !6, type: !19)
6868 !24 = !{i32 2, !"Dwarf Version", i32 2}
6969 !25 = !{i32 2, !"Debug Info Version", i32 3}
8181 !18 = !DILocalVariable(name: "c", line: 7, scope: !13, file: !14, type: !4)
8282 !19 = !DILocalVariable(name: "lc", line: 8, scope: !13, file: !14, type: !11)
8383 !20 = !{!21}
84 !21 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "argc", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !11))
84 !21 = !DIGlobalVariable(name: "argc", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !11)
8585 !22 = !{i32 2, !"Dwarf Version", i32 4}
8686 !23 = !{i32 2, !"Debug Info Version", i32 3}
8787 !25 = !DILocation(line: 8, column: 3, scope: !13)
2121 !7 = !{!8}
2222 !8 = !DIBasicType(tag: DW_TAG_base_type, size: 32, align: 32, encoding: DW_ATE_signed)
2323 !9 = !{!10}
24 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", linkageName: "_ZL1i", line: 1, isLocal: true, isDefinition: true, scope: null, file: !1, type: !8))
24 !10 = !DIGlobalVariable(name: "i", linkageName: "_ZL1i", line: 1, isLocal: true, isDefinition: true, scope: null, file: !1, type: !8)
2525 !11 = !{i32 2, !"Dwarf Version", i32 3}
2626 !13 = !{i32 1, !"Debug Info Version", i32 3}
1212 !1 = !DIFile(filename: "-", directory: "/work/validation")
1313 !2 = !{}
1414 !3 = !{!4}
15 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !7))
15 !4 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !7)
1616 !5 = !DIFile(filename: "", directory: "/work/validation")
1717 !6 = !{!"", !"/work/validation"}
1818 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
5757 !1 = !DIFile(filename: "bitfields.c", directory: "/")
5858 !2 = !{}
5959 !3 = !{!4}
60 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true))
60 !4 = !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true)
6161 !5 = !DIFile(filename: "bitfields.c", directory: "/")
6262 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, elements: !7)
6363 !7 = !{!8, !10, !11, !12}
199199 !38 = !DILocalVariable(name: "c", line: 19, scope: !34, file: !26, type: !4)
200200 !39 = !DILocalVariable(name: "d", line: 20, scope: !34, file: !26, type: !14)
201201 !40 = !{!41, !42}
202 !41 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !26, type: !20))
203 !42 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", line: 7, isLocal: false, isDefinition: true, scope: null, file: !26, type: !12))
202 !41 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !26, type: !20)
203 !42 = !DIGlobalVariable(name: "b", line: 7, isLocal: false, isDefinition: true, scope: null, file: !26, type: !12)
204204 !43 = !{i32 2, !"Dwarf Version", i32 2}
205205 !44 = !{i32 2, !"Debug Info Version", i32 3}
206206 !45 = !{!"clang version 3.7.0 "}
2121 !1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm")
2222 !2 = !{}
2323 !3 = !{!4}
24 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true))
24 !4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true)
2525 !5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !1, line: 1, size: 32, elements: !6)
2626 !6 = !{!7, !9, !10, !11}
2727 ; CHECK: DW_TAG_member
2929 !1 = !DIFile(filename: "test.i", directory: "/")
3030 !2 = !{}
3131 !3 = !{!4}
32 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true))
32 !4 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true)
3333 !5 = !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 1, size: 48, align: 8, elements: !6)
3434 !6 = !{!7, !9}
3535 !7 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !5, file: !1, line: 2, baseType: !8, size: 8, align: 8)
3838 !5 = !DISubroutineType(types: !6)
3939 !6 = !{null}
4040 !7 = !{!8, !10}
41 !8 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ch", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true))
41 !8 = !DIGlobalVariable(name: "ch", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true)
4242 !9 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
43 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 2, type: !11, isLocal: false, isDefinition: true))
43 !10 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 2, type: !11, isLocal: false, isDefinition: true)
4444 !11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4545 !12 = !{i32 2, !"Dwarf Version", i32 4}
4646 !13 = !{i32 2, !"Debug Info Version", i32 3}
2525 !1 = !DIFile(filename: "tls.c", directory: "/tmp")
2626 !2 = !{}
2727 !3 = !{!4}
28 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6))
28 !4 = !DIGlobalVariable(name: "x", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
2929 !5 = !DIFile(filename: "tls.c", directory: "/tmp")
3030 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3131 !7 = !{i32 2, !"Dwarf Version", i32 4}
4545 !1 = !DIFile(filename: "-", directory: "/usr/local/google/home/majnemer/llvm/src")
4646 !2 = !{}
4747 !3 = !{!4}
48 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true))
48 !4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true)
4949 !5 = !DIFile(filename: "", directory: "/usr/local/google/home/majnemer/llvm/src")
5050 !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !5, line: 2, size: 64, align: 32, elements: !7)
5151 !7 = !{!8, !10}
57655765 !5700 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5695", value: 5694)
57665766 !5701 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5696", value: 5695)
57675767 !5702 = !{!5703}
5768 !5703 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", linkageName: "\01?x@@3W4BigThing@@A", scope: !0, file: !1, line: 5698, type: !3, isLocal: false, isDefinition: true))
5768 !5703 = distinct !DIGlobalVariable(name: "x", linkageName: "\01?x@@3W4BigThing@@A", scope: !0, file: !1, line: 5698, type: !3, isLocal: false, isDefinition: true)
57695769 !5704 = !{i32 2, !"CodeView", i32 1}
57705770 !5705 = !{i32 2, !"Debug Info Version", i32 3}
57715771 !5706 = !{i32 1, !"PIC Level", i32 2}
192192 !1 = !DIFile(filename: "-", directory: "/usr/local/google/home/majnemer/llvm/src")
193193 !2 = !{}
194194 !3 = !{!4, !10, !29}
195 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s0", scope: !0, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true))
195 !4 = distinct !DIGlobalVariable(name: "s0", scope: !0, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true)
196196 !5 = !DIFile(filename: "", directory: "/usr/local/google/home/majnemer/llvm/src")
197197 !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S0", file: !5, line: 3, size: 24, elements: !7)
198198 !7 = !{!8}
199199 !8 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !6, file: !5, line: 6, baseType: !9, size: 8, offset: 16, flags: DIFlagBitField, extraData: i64 8)
200200 !9 = !DIBasicType(name: "short", size: 16, encoding: DW_ATE_signed)
201 !10 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s1", scope: !0, file: !5, line: 18, type: !11, isLocal: false, isDefinition: true))
201 !10 = distinct !DIGlobalVariable(name: "s1", scope: !0, file: !5, line: 18, type: !11, isLocal: false, isDefinition: true)
202202 !11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S1", file: !5, line: 10, size: 128, elements: !12)
203203 !12 = !{!13, !18, !19, !21, !22, !23, !28}
204204 !13 = !DIDerivedType(tag: DW_TAG_member, name: "x1", scope: !11, file: !5, line: 11, baseType: !14, size: 16)
217217 !26 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !24, file: !5, line: 16, baseType: !15, size: 8)
218218 !27 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !24, file: !5, line: 16, baseType: !9, size: 16, offset: 8)
219219 !28 = !DIDerivedType(tag: DW_TAG_member, name: "u", scope: !11, file: !5, line: 17, baseType: !9, size: 3, offset: 112, flags: DIFlagBitField, extraData: i64 112)
220 !29 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s2", scope: !0, file: !5, line: 24, type: !30, isLocal: false, isDefinition: true))
220 !29 = distinct !DIGlobalVariable(name: "s2", scope: !0, file: !5, line: 24, type: !30, isLocal: false, isDefinition: true)
221221 !30 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S2", file: !5, line: 21, size: 32, elements: !31)
222222 !31 = !{!32}
223223 !32 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !30, file: !5, line: 23, baseType: !20, size: 1, flags: DIFlagBitField, extraData: i64 0)
4141 !6 = !{!7}
4242 !7 = !DIEnumerator(name: "BLAH", value: 0)
4343 !8 = !{!9}
44 !9 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "e", linkageName: "\01?e@@3W4E@@A", scope: !0, file: !4, line: 2, type: !3, isLocal: false, isDefinition: true))
44 !9 = distinct !DIGlobalVariable(name: "e", linkageName: "\01?e@@3W4E@@A", scope: !0, file: !4, line: 2, type: !3, isLocal: false, isDefinition: true)
4545 !10 = !{i32 2, !"CodeView", i32 1}
4646 !11 = !{i32 2, !"Debug Info Version", i32 3}
4747 !12 = !{!"clang version 3.9.0 (trunk 272790) (llvm/trunk 272813)"}
1414 !1 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/", directory: "/usr/local/google/home/majnemer/llvm/src")
1515 !2 = !{}
1616 !3 = !{!4}
17 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "id", linkageName: "\01?id@?$numpunct@D@@0HA", scope: !0, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, declaration: !7))
17 !4 = distinct !DIGlobalVariable(name: "id", linkageName: "\01?id@?$numpunct@D@@0HA", scope: !0, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, declaration: !7)
1818 !5 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/t.ii", directory: "/usr/local/google/home/majnemer/llvm/src")
1919 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2020 !7 = !DIDerivedType(tag: DW_TAG_member, name: "id", scope: !8, file: !5, line: 2, baseType: !6, flags: DIFlagStaticMember)
2424 !1 = !DIFile(filename: "t.c", directory: "foo")
2525 !2 = !{}
2626 !3 = !{!4, !6}
27 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_OptionsStorage", scope: !0, file: !1, line: 3, type: !5, isLocal: true, isDefinition: true))
27 !4 = distinct !DIGlobalVariable(name: "_OptionsStorage", scope: !0, file: !1, line: 3, type: !5, isLocal: true, isDefinition: true)
2828 !5 = !DIBasicType(name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
29 !6 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 4, type: !5, isLocal: true, isDefinition: true))
29 !6 = distinct !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 4, type: !5, isLocal: true, isDefinition: true)
3030
3131 !35 = !{i32 2, !"CodeView", i32 1}
3232 !36 = !{i32 2, !"Debug Info Version", i32 3}
128128 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
129129 !2 = !{}
130130 !3 = !{!4, !6, !13, !15}
131 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "first", linkageName: "\01?first@@3HA", scope: !0, file: !1, line: 1, type: !5, isLocal: true, isDefinition: true))
131 !4 = distinct !DIGlobalVariable(name: "first", linkageName: "\01?first@@3HA", scope: !0, file: !1, line: 1, type: !5, isLocal: true, isDefinition: true)
132132 !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
133 !6 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "comdat", linkageName: "\01?comdat@?$A@X@@2HB", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, declaration: !8))
133 !6 = distinct !DIGlobalVariable(name: "comdat", linkageName: "\01?comdat@?$A@X@@2HB", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, declaration: !8)
134134 !7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !5)
135135 !8 = !DIDerivedType(tag: DW_TAG_member, name: "comdat", scope: !9, file: !1, line: 2, baseType: !7, flags: DIFlagStaticMember, extraData: i32 3)
136136 !9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 2, size: 8, align: 8, elements: !10, templateParams: !11)
137137 !10 = !{!8}
138138 !11 = !{!12}
139139 !12 = !DITemplateTypeParameter(name: "T", type: null)
140 !13 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "middle", linkageName: "\01?middle@@3PEBHEB", scope: !0, file: !1, line: 3, type: !14, isLocal: false, isDefinition: true))
140 !13 = distinct !DIGlobalVariable(name: "middle", linkageName: "\01?middle@@3PEBHEB", scope: !0, file: !1, line: 3, type: !14, isLocal: false, isDefinition: true)
141141 !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64)
142 !15 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "last", linkageName: "\01?last@@3HA", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true))
142 !15 = distinct !DIGlobalVariable(name: "last", linkageName: "\01?last@@3HA", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true)
143143 !16 = !{i32 2, !"CodeView", i32 1}
144144 !17 = !{i32 2, !"Debug Info Version", i32 3}
145145 !18 = !{i32 1, !"PIC Level", i32 2}
9292 !llvm.module.flags = !{!31, !32, !33}
9393 !llvm.ident = !{!34}
9494
95 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "d", linkageName: "\01?d@@3UD@@A", scope: !1, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true))
95 !0 = distinct !DIGlobalVariable(name: "d", linkageName: "\01?d@@3UD@@A", scope: !1, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true)
9696 !1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 95626d54d6db7e13087089396a80ebaccc4ffe7c) (http://llvm.org/git/llvm.git 374b6e2fa0b230d13c0fb9ee7af69b2146bfad8a)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
9797 !2 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
9898 !3 = !{}
8383 !6 = !{null}
8484 !7 = distinct !DISubprogram(name: "file_change", scope: !1, file: !1, line: 2, type: !5, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
8585 !8 = !{!9}
86 !9 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !10, isLocal: false, isDefinition: true))
86 !9 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !10, isLocal: false, isDefinition: true)
8787 !10 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !11)
8888 !11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
8989 !12 = !{i32 2, !"CodeView", i32 1}
139139 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
140140 !2 = !{}
141141 !3 = !{!4}
142 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true))
142 !4 = distinct !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
143143 !5 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !6)
144144 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
145145 !7 = !{i32 2, !"CodeView", i32 1}
7070 !11 = distinct !DISubprogram(name: "g", linkageName: "\01?g@@YAXXZ", scope: !1, file: !1, line: 6, type: !9, isLocal: true, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
7171 !12 = distinct !DISubprogram(name: "f", linkageName: "\01?f@@YAXXZ", scope: !1, file: !1, line: 2, type: !9, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
7272 !13 = !{!14}
73 !14 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !15, isLocal: false, isDefinition: true))
73 !14 = !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !15, isLocal: false, isDefinition: true)
7474 !15 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
7575 !16 = !{i32 2, !"CodeView", i32 1}
7676 !17 = !{i32 2, !"Debug Info Version", i32 3}
3131 !llvm.module.flags = !{!11, !12, !13}
3232 !llvm.ident = !{!14}
3333
34 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", scope: !1, file: !6, line: 4, type: !9, isLocal: false, isDefinition: true))
34 !0 = distinct !DIGlobalVariable(name: "x", scope: !1, file: !6, line: 4, type: !9, isLocal: false, isDefinition: true)
3535 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
3636 !2 = !DIFile(filename: "-", directory: "C:\5Csrc\5Cllvm\5Cbuild")
3737 !3 = !{}
3838 !4 = !{!0, !5}
39 !5 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "y", scope: !1, file: !6, line: 5, type: !7, isLocal: false, isDefinition: true))
39 !5 = distinct !DIGlobalVariable(name: "y", scope: !1, file: !6, line: 5, type: !7, isLocal: false, isDefinition: true)
4040 !6 = !DIFile(filename: "", directory: "C:\5Csrc\5Cllvm\5Cbuild")
4141 !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !6, line: 3, baseType: !8)
4242
2727 !llvm.module.flags = !{!7, !8}
2828 !llvm.ident = !{!9}
2929
30 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "f", linkageName: "\01?f@@3UFoo@@A", scope: !1, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true))
30 !0 = distinct !DIGlobalVariable(name: "f", linkageName: "\01?f@@3UFoo@@A", scope: !1, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true)
3131 !1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "clang version 4.0.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
3232 !2 = !DIFile(filename: "", directory: "C:\5Csrc\5Cllvm\5Cbuild")
3333 !3 = !{}
260260 !20 = !DILocalVariable(name: "a", arg: 1, scope: !16, file: !1, line: 4, type: !7)
261261 !21 = !DILocalVariable(name: "b", scope: !16, file: !1, line: 5, type: !7)
262262 !22 = !{!23}
263 !23 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !24, isLocal: false, isDefinition: true))
263 !23 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !24, isLocal: false, isDefinition: true)
264264 !24 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
265265 !25 = !{i32 2, !"CodeView", i32 1}
266266 !26 = !{i32 2, !"Debug Info Version", i32 3}
112112 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
113113 !2 = !{}
114114 !3 = !{!4}
115 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "g", linkageName: "\01?g@bar@foo@@3UGlobalRecord@12@A", scope: !5, file: !1, line: 12, type: !7, isLocal: false, isDefinition: true))
115 !4 = distinct !DIGlobalVariable(name: "g", linkageName: "\01?g@bar@foo@@3UGlobalRecord@12@A", scope: !5, file: !1, line: 12, type: !7, isLocal: false, isDefinition: true)
116116 !5 = !DINamespace(name: "bar", scope: !6, file: !1, line: 2)
117117 !6 = !DINamespace(name: "foo", scope: null, file: !1, line: 1)
118118 !7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GlobalRecord", scope: !5, file: !1, line: 9, size: 32, align: 32, elements: !8, identifier: ".?AUGlobalRecord@bar@foo@@")
171171 !1 = !DIFile(filename: "t.cpp", directory: "/")
172172 !2 = !{}
173173 !3 = !{!4, !11, !20, !21}
174 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "multi_dim_arr", linkageName: "\01?multi_dim_arr@@3PAY146DA", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true))
174 !4 = distinct !DIGlobalVariable(name: "multi_dim_arr", linkageName: "\01?multi_dim_arr@@3PAY146DA", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
175175 !5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 560, align: 8, elements: !7)
176176 !6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
177177 !7 = !{!8, !9, !10}
178178 !8 = !DISubrange(count: 2)
179179 !9 = !DISubrange(count: 5)
180180 !10 = !DISubrange(count: 7)
181 !11 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "p_incomplete_struct_arr", linkageName: "\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A", scope: !0, file: !1, line: 3, type: !12, isLocal: false, isDefinition: true))
181 !11 = distinct !DIGlobalVariable(name: "p_incomplete_struct_arr", linkageName: "\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A", scope: !0, file: !1, line: 3, type: !12, isLocal: false, isDefinition: true)
182182 !12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 32, align: 32)
183183 !13 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, elements: !18)
184184 !14 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "incomplete_struct", file: !1, line: 4, size: 32, align: 32, elements: !15, identifier: ".?AUincomplete_struct@@")
187187 !17 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
188188 !18 = !{!19}
189189 !19 = !DISubrange(count: 3)
190 !20 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "incomplete_struct_arr", linkageName: "\01?incomplete_struct_arr@@3PAUincomplete_struct@@A", scope: !0, file: !1, line: 6, type: !13, isLocal: false, isDefinition: true))
191 !21 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "typedef_arr", linkageName: "\01?typedef_arr@@3SDHD", scope: !0, file: !1, line: 14, type: !22, isLocal: false, isDefinition: true))
190 !20 = distinct !DIGlobalVariable(name: "incomplete_struct_arr", linkageName: "\01?incomplete_struct_arr@@3PAUincomplete_struct@@A", scope: !0, file: !1, line: 6, type: !13, isLocal: false, isDefinition: true)
191 !21 = distinct !DIGlobalVariable(name: "typedef_arr", linkageName: "\01?typedef_arr@@3SDHD", scope: !0, file: !1, line: 14, type: !22, isLocal: false, isDefinition: true)
192192 !22 = !DICompositeType(tag: DW_TAG_array_type, baseType: !23, size: 128, align: 32, elements: !26)
193193 !23 = !DIDerivedType(tag: DW_TAG_typedef, name: "T_INT", file: !1, line: 13, baseType: !24)
194194 !24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25)
8888 !1 = !DIFile(filename: "hello.cpp", directory: "D:\5Csrc\5Chello")
8989 !2 = !{}
9090 !3 = !{!4}
91 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", linkageName: "\01?a@@3UA@@A", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true))
91 !4 = distinct !DIGlobalVariable(name: "a", linkageName: "\01?a@@3UA@@A", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true)
9292 !5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 1, size: 8, align: 8, elements: !6, identifier: ".?AUA@@")
9393 !6 = !{!7}
9494 !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "Nested", scope: !5, file: !1, line: 2, size: 8, align: 8, flags: DIFlagFwdDecl, identifier: ".?AUNested@A@@")
202202 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
203203 !2 = !{}
204204 !3 = !{!4, !10, !20, !23, !26, !31, !36, !41, !46, !50}
205 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmd_a", linkageName: "\01?pmd_a@@3PEQA@@HEQ1@", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true))
205 !4 = distinct !DIGlobalVariable(name: "pmd_a", linkageName: "\01?pmd_a@@3PEQA@@HEQ1@", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true)
206206 !5 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, flags: DIFlagSingleInheritance, extraData: !7)
207207 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
208208 !7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 1, size: 32, align: 32, elements: !8, identifier: ".?AUA@@")
209209 !8 = !{!9}
210210 !9 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !7, file: !1, line: 1, baseType: !6, size: 32, align: 32)
211 !10 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmd_b", linkageName: "\01?pmd_b@@3PEQC@@HEQ1@", scope: !0, file: !1, line: 7, type: !11, isLocal: false, isDefinition: true))
211 !10 = distinct !DIGlobalVariable(name: "pmd_b", linkageName: "\01?pmd_b@@3PEQC@@HEQ1@", scope: !0, file: !1, line: 7, type: !11, isLocal: false, isDefinition: true)
212212 !11 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, flags: DIFlagMultipleInheritance, extraData: !12)
213213 !12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !1, line: 3, size: 96, align: 32, elements: !13, identifier: ".?AUC@@")
214214 !13 = !{!14, !15, !19}
218218 !17 = !{!18}
219219 !18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !16, file: !1, line: 2, baseType: !6, size: 32, align: 32)
220220 !19 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !12, file: !1, line: 3, baseType: !6, size: 32, align: 32, offset: 64)
221 !20 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmd_c", linkageName: "\01?pmd_c@@3PEQD@@HEQ1@", scope: !0, file: !1, line: 8, type: !21, isLocal: false, isDefinition: true))
221 !20 = distinct !DIGlobalVariable(name: "pmd_c", linkageName: "\01?pmd_c@@3PEQD@@HEQ1@", scope: !0, file: !1, line: 8, type: !21, isLocal: false, isDefinition: true)
222222 !21 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 64, flags: DIFlagVirtualInheritance, extraData: !22)
223223 !22 = !DICompositeType(tag: DW_TAG_structure_type, name: "D", file: !1, line: 4, size: 256, align: 64, flags: DIFlagFwdDecl, identifier: ".?AUD@@")
224 !23 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmd_d", linkageName: "\01?pmd_d@@3PEQE@@HEQ1@", scope: !0, file: !1, line: 9, type: !24, isLocal: false, isDefinition: true))
224 !23 = distinct !DIGlobalVariable(name: "pmd_d", linkageName: "\01?pmd_d@@3PEQE@@HEQ1@", scope: !0, file: !1, line: 9, type: !24, isLocal: false, isDefinition: true)
225225 !24 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 96, extraData: !25)
226226 !25 = !DICompositeType(tag: DW_TAG_structure_type, name: "E", file: !1, line: 5, flags: DIFlagFwdDecl, identifier: ".?AUE@@")
227 !26 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmf_a", linkageName: "\01?pmf_a@@3P8A@@EAAXXZEQ1@", scope: !0, file: !1, line: 10, type: !27, isLocal: false, isDefinition: true))
227 !26 = distinct !DIGlobalVariable(name: "pmf_a", linkageName: "\01?pmf_a@@3P8A@@EAAXXZEQ1@", scope: !0, file: !1, line: 10, type: !27, isLocal: false, isDefinition: true)
228228 !27 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !28, size: 64, flags: DIFlagSingleInheritance, extraData: !7)
229229 !28 = !DISubroutineType(types: !29)
230230 !29 = !{null, !30}
231231 !30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
232 !31 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmf_b", linkageName: "\01?pmf_b@@3P8C@@EAAXXZEQ1@", scope: !0, file: !1, line: 11, type: !32, isLocal: false, isDefinition: true))
232 !31 = distinct !DIGlobalVariable(name: "pmf_b", linkageName: "\01?pmf_b@@3P8C@@EAAXXZEQ1@", scope: !0, file: !1, line: 11, type: !32, isLocal: false, isDefinition: true)
233233 !32 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !33, size: 128, flags: DIFlagMultipleInheritance, extraData: !12)
234234 !33 = !DISubroutineType(types: !34)
235235 !34 = !{null, !35}
236236 !35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
237 !36 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmf_c", linkageName: "\01?pmf_c@@3P8D@@EAAXXZEQ1@", scope: !0, file: !1, line: 12, type: !37, isLocal: false, isDefinition: true))
237 !36 = distinct !DIGlobalVariable(name: "pmf_c", linkageName: "\01?pmf_c@@3P8D@@EAAXXZEQ1@", scope: !0, file: !1, line: 12, type: !37, isLocal: false, isDefinition: true)
238238 !37 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !38, size: 128, flags: DIFlagVirtualInheritance, extraData: !22)
239239 !38 = !DISubroutineType(types: !39)
240240 !39 = !{null, !40}
241241 !40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
242 !41 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "pmf_d", linkageName: "\01?pmf_d@@3P8E@@EAAXXZEQ1@", scope: !0, file: !1, line: 13, type: !42, isLocal: false, isDefinition: true))
242 !41 = distinct !DIGlobalVariable(name: "pmf_d", linkageName: "\01?pmf_d@@3P8E@@EAAXXZEQ1@", scope: !0, file: !1, line: 13, type: !42, isLocal: false, isDefinition: true)
243243 !42 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !43, size: 192, extraData: !25)
244244 !43 = !DISubroutineType(types: !44)
245245 !44 = !{null, !45}
246246 !45 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
247 !46 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ppmd", linkageName: "\01?ppmd@@3PEAPEQIncomplete@@HEA", scope: !0, file: !1, line: 15, type: !47, isLocal: false, isDefinition: true))
247 !46 = distinct !DIGlobalVariable(name: "ppmd", linkageName: "\01?ppmd@@3PEAPEQIncomplete@@HEA", scope: !0, file: !1, line: 15, type: !47, isLocal: false, isDefinition: true)
248248 !47 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !48, size: 64, align: 64)
249249 !48 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, extraData: !49)
250250 !49 = !DICompositeType(tag: DW_TAG_structure_type, name: "Incomplete", file: !1, line: 14, flags: DIFlagFwdDecl, identifier: ".?AUIncomplete@@")
251 !50 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ppmf", linkageName: "\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA", scope: !0, file: !1, line: 16, type: !51, isLocal: false, isDefinition: true))
251 !50 = distinct !DIGlobalVariable(name: "ppmf", linkageName: "\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA", scope: !0, file: !1, line: 16, type: !51, isLocal: false, isDefinition: true)
252252 !51 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !52, size: 64, align: 64)
253253 !52 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !53, extraData: !49)
254254 !53 = !DISubroutineType(types: !54)
9696 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
9797 !2 = !{}
9898 !3 = !{!4}
99 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "u", linkageName: "\01?u@@3UU@@A", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true))
99 !4 = distinct !DIGlobalVariable(name: "u", linkageName: "\01?u@@3UU@@A", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true)
100100 !5 = !DIDerivedType(tag: DW_TAG_typedef, name: "U", file: !1, line: 12, baseType: !6)
101101 !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 12, size: 32, align: 32, elements: !7, identifier: ".?AUU@@")
102102 !7 = !{!8}
236236 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
237237 !2 = !{}
238238 !3 = !{!4}
239 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "p", linkageName: "\01?p@@3PEAUC@@EA", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true))
239 !4 = distinct !DIGlobalVariable(name: "p", linkageName: "\01?p@@3PEAUC@@EA", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true)
240240 !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
241241 !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !1, line: 9, size: 64, align: 64, elements: !7, vtableHolder: !12, identifier: ".?AUC@@")
242242 !7 = !{!8, !30, !34}
9999 !1 = !DIFile(filename: "", directory: "C:\5Csrc\5Cllvm\5Cbuild")
100100 !2 = !{}
101101 !3 = !{!4, !10}
102 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "force_fwd_decl", linkageName: "\01?force_fwd_decl@@3UGetFwdDecl@@A", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true))
102 !4 = distinct !DIGlobalVariable(name: "force_fwd_decl", linkageName: "\01?force_fwd_decl@@3UGetFwdDecl@@A", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true)
103103 !5 = !DIFile(filename: "t.cpp", directory: "C:\5Csrc\5Cllvm\5Cbuild")
104104 !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GetFwdDecl", file: !5, line: 2, size: 8, align: 8, elements: !7, identifier: ".?AUGetFwdDecl@@")
105105 !7 = !{!8}
106106 !8 = !DIDerivedType(tag: DW_TAG_member, name: "format", scope: !6, file: !5, line: 3, baseType: !9, flags: DIFlagStaticMember)
107107 !9 = !DICompositeType(tag: DW_TAG_structure_type, name: "UnicodeString", file: !5, line: 1, flags: DIFlagFwdDecl, identifier: ".?AUUnicodeString@@")
108 !10 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "require_complete", linkageName: "\01?require_complete@@3UUseCompleteType@@A", scope: !0, file: !5, line: 15, type: !11, isLocal: false, isDefinition: true))
108 !10 = distinct !DIGlobalVariable(name: "require_complete", linkageName: "\01?require_complete@@3UUseCompleteType@@A", scope: !0, file: !5, line: 15, type: !11, isLocal: false, isDefinition: true)
109109 !11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "UseCompleteType", file: !5, line: 10, size: 64, align: 64, elements: !12, identifier: ".?AUUseCompleteType@@")
110110 !12 = !{!13, !17, !21}
111111 !13 = !DIDerivedType(tag: DW_TAG_member, name: "currencySpcAfterSym", scope: !11, file: !5, line: 13, baseType: !14, size: 64, align: 64)
1717 !8 = !{!9}
1818 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
1919 !12 = !{!14}
20 !14 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "bar", line: 2, isLocal: true, isDefinition: true, scope: !5, file: !6, type: !9))
20 !14 = !DIGlobalVariable(name: "bar", line: 2, isLocal: true, isDefinition: true, scope: !5, file: !6, type: !9)
2121 !15 = !DILocation(line: 3, column: 3, scope: !16)
2222 !16 = distinct !DILexicalBlock(line: 1, column: 11, file: !17, scope: !5)
2323 !17 = !DIFile(filename: "fb.c", directory: "/private/tmp")
66 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 139632)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !2, retainedTypes: !2, globals: !3)
77 !2 = !{}
88 !3 = !{!5}
9 !5 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7))
9 !5 = !DIGlobalVariable(name: "a", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
1010 !6 = !DIFile(filename: "g.c", directory: "/private/tmp")
1111 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
1212 !8 = !DIFile(filename: "g.c", directory: "/private/tmp")
4444 !13 = !{!14, !15}
4545 !14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
4646 !15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
47 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5))
47 !16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
4848 !17 = !DILocation(line: 15, scope: !18)
4949 !18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
5050 !19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
7272 !1 = !DIFile(filename: "hash-collisions.c", directory: "/tmp")
7373 !2 = !{}
7474 !3 = !{!4, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16}
75 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ForceTopDown", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true))
75 !4 = !DIGlobalVariable(name: "ForceTopDown", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
7676 !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
77 !6 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true))
78 !7 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true))
79 !8 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true))
80 !9 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true))
81 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true))
82 !11 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "k1", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true))
83 !12 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "is", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true))
84 !13 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "setStmt", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true))
85 !14 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZN4llvm5TwineC1Ei", scope: !0, file: !1, line: 10, type: !5, isLocal: false, isDefinition: true))
86 !15 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE", scope: !0, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true))
87 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "_ZN4llvm22MachineModuleInfoMachOD2Ev", scope: !0, file: !1, line: 12, type: !5, isLocal: false, isDefinition: true))
77 !6 = !DIGlobalVariable(name: "_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
78 !7 = !DIGlobalVariable(name: "_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true)
79 !8 = !DIGlobalVariable(name: "_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true)
80 !9 = !DIGlobalVariable(name: "_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true)
81 !10 = !DIGlobalVariable(name: "_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true)
82 !11 = !DIGlobalVariable(name: "k1", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true)
83 !12 = !DIGlobalVariable(name: "is", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true)
84 !13 = !DIGlobalVariable(name: "setStmt", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true)
85 !14 = !DIGlobalVariable(name: "_ZN4llvm5TwineC1Ei", scope: !0, file: !1, line: 10, type: !5, isLocal: false, isDefinition: true)
86 !15 = !DIGlobalVariable(name: "_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE", scope: !0, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true)
87 !16 = !DIGlobalVariable(name: "_ZN4llvm22MachineModuleInfoMachOD2Ev", scope: !0, file: !1, line: 12, type: !5, isLocal: false, isDefinition: true)
8888 !17 = !{i32 2, !"Dwarf Version", i32 2}
8989 !18 = !{i32 2, !"Debug Info Version", i32 3}
9090 !19 = !{i32 1, !"PIC Level", i32 2}
6868 !7 = !{!8, !8}
6969 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
7070 !9 = !{!10}
71 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !11))
71 !10 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !11)
7272 !11 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !6)
7373 !12 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !13, enums: !2, retainedTypes: !2, globals: !17, imports: !2)
7474 !13 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
7575 !15 = distinct !DISubprogram(name: "func", linkageName: "_Z4funci", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !12, scopeLine: 1, file: !13, scope: !16, type: !6, variables: !2)
7676 !16 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
7777 !17 = !{!18}
78 !18 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !11))
78 !18 = !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !11)
7979 !19 = !{i32 2, !"Dwarf Version", i32 4}
8080 !20 = !{i32 1, !"Debug Info Version", i32 3}
8181 !21 = !{!"clang version 3.5.0 "}
5757 !8 = !{!9, !9}
5858 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
5959 !10 = !{!11}
60 !11 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12))
60 !11 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12)
6161 !12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !7)
6262 !13 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !14, enums: !2, retainedTypes: !2, globals: !15, imports: !2)
6363 !14 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
6464 !15 = !{!16}
65 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12))
65 !16 = !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12)
6666 !17 = !{i32 2, !"Dwarf Version", i32 4}
6767 !18 = !{i32 1, !"Debug Info Version", i32 3}
6868 !19 = !{!"clang version 3.5.0 "}
1010 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 140253)", isOptimized: true, emissionKind: FullDebug, file: !11, enums: !2, retainedTypes: !2, globals: !3)
1111 !2 = !{}
1212 !3 = !{!5}
13 !5 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7))
13 !5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
1414 !6 = !DIFile(filename: "x.c", directory: "/private/tmp")
1515 !7 = !DICompositeType(tag: DW_TAG_array_type, size: 320, align: 32, baseType: !8, elements: !9)
1616 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3030 !1 = !DIFile(filename: "minimal.c", directory: "/tmp")
3131 !2 = !{}
3232 !3 = !{!4}
33 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "y", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true))
33 !4 = !DIGlobalVariable(name: "y", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true)
3434 !5 = !DICompositeType(tag: DW_TAG_structure_type, name: "Y", file: !1, line: 3, size: 64, align: 64, elements: !6)
3535 !6 = !{!7}
3636 !7 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !5, file: !1, line: 4, baseType: !8, size: 64, align: 64)
113113 !22 = !DISubroutineType(types: !23)
114114 !23 = !{null}
115115 !24 = !{!25, !26, !27}
116 !25 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", line: 7, isLocal: false, isDefinition: true, scope: !8, file: !4, type: !11, declaration: !10))
117 !26 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8))
118 !27 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11))
116 !25 = !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", line: 7, isLocal: false, isDefinition: true, scope: !8, file: !4, type: !11, declaration: !10)
117 !26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8)
118 !27 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11)
119119 !28 = !DILocalVariable(name: "this", line: 9, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !3, file: !4, type: !29)
120120 !29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8)
121121 !30 = !DILocation(line: 9, scope: !3)
6969 !15 = !DISubroutineType(types: !16)
7070 !16 = !{null}
7171 !17 = !{!18}
72 !18 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !3))
72 !18 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !3)
7373 !19 = !{i32 2, !"Dwarf Version", i32 3}
7474 !20 = !DILocalVariable(name: "b", line: 4, scope: !13, file: !14, type: !21)
7575 !21 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3434 !7 = !{!8}
3535 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3636 !9 = !{!10}
37 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", linkageName: "_ZL1i", line: 1, isLocal: true, isDefinition: true, scope: null, file: !5, type: !8))
37 !10 = !DIGlobalVariable(name: "i", linkageName: "_ZL1i", line: 1, isLocal: true, isDefinition: true, scope: null, file: !5, type: !8)
3838 !11 = !{i32 2, !"Dwarf Version", i32 3}
3939 !12 = !DILocation(line: 4, scope: !4)
4040 !13 = !{i32 1, !"Debug Info Version", i32 3}
8080 !13 = !DISubroutineType(types: !14)
8181 !14 = !{null}
8282 !15 = !{!16, !17}
83 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true))
84 !17 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true))
83 !16 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true)
84 !17 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true)
8585 !18 = !{i32 2, !"Dwarf Version", i32 2}
8686 !19 = !{i32 2, !"Debug Info Version", i32 3}
8787 !20 = !{!"clang version 3.8.0 (trunk 245562) (llvm/trunk 245569)"}
2525 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 ", isOptimized: false, emissionKind: FullDebug, file: !15, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
2626 !1 = !{}
2727 !3 = !{!5, !10}
28 !5 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7))
28 !5 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
2929 !6 = !DIFile(filename: "simple.cpp", directory: "/home/blaikie/Development/scratch")
3030 !7 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !8, extraData: !9)
3131 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3232 !9 = !DICompositeType(tag: DW_TAG_structure_type, name: "S", line: 1, size: 8, align: 8, file: !15, elements: !1)
33 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "y", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !11))
33 !10 = !DIGlobalVariable(name: "y", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !11)
3434 !11 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !12, extraData: !9)
3535 !12 = !DISubroutineType(types: !13)
3636 !13 = !{null, !14, !8}
199199 ; }
200200 ; void B::func_fwd() {}
201201
202 @_ZN1A1B1iE = global i32 0, align 4, !dbg !131
203 @_ZN1A1B7var_fwdE = global i32 0, align 4, !dbg !132
202 @_ZN1A1B1iE = global i32 0, align 4, !dbg !31
203 @_ZN1A1B7var_fwdE = global i32 0, align 4, !dbg !32
204204 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_debug_info_namespace.cpp, i8* null }]
205205
206206 ; Function Attrs: nounwind ssp uwtable
315315 !27 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__sub_I_debug_info_namespace.cpp", isLocal: true, isDefinition: true, flags: DIFlagArtificial, isOptimized: false, unit: !0, file: !1, scope: !28, type: !29, variables: !2)
316316 !28 = !DIFile(filename: "debug-info-namespace.cpp", directory: "/tmp")
317317 !29 = !DISubroutineType(types: !2)
318 !30 = !{!131, !132}
318 !30 = !{!31, !32}
319319 !31 = !DIGlobalVariable(name: "i", linkageName: "_ZN1A1B1iE", line: 20, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13)
320320 !32 = !DIGlobalVariable(name: "var_fwd", linkageName: "_ZN1A1B7var_fwdE", line: 44, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13)
321321 !33 = !{!34, !35, !36, !37, !40, !41, !42, !43, !44, !45, !47, !48, !49, !51, !54, !55, !56}
361361 !73 = !DILocation(line: 47, column: 21, scope: !26)
362362 !74 = !DILocation(line: 0, scope: !75)
363363 !75 = !DILexicalBlockFile(discriminator: 0, file: !5, scope: !27)
364 !131 = !DIGlobalVariableExpression(var: !31)
365 !132 = !DIGlobalVariableExpression(var: !32)
224224 !24 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !22, type: !25)
225225 !25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4)
226226 !26 = !{!27}
227 !27 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 13, isLocal: false, isDefinition: true, scope: null, file: !15, type: !25))
227 !27 = !DIGlobalVariable(name: "x", line: 13, isLocal: false, isDefinition: true, scope: null, file: !15, type: !25)
228228 !28 = !{i32 2, !"Dwarf Version", i32 4}
229229 !29 = !{i32 2, !"Debug Info Version", i32 3}
230230 !30 = !{!"clang version 3.6.0 "}
2828 !1 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp")
2929 !2 = !{}
3030 !3 = !{!4}
31 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "filters", line: 10, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6))
31 !4 = !DIGlobalVariable(name: "filters", line: 10, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
3232 !5 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp")
3333 !6 = !DICompositeType(tag: DW_TAG_class_type, name: "bar", line: 9, size: 8, align: 8, file: !1, elements: !7)
3434 !7 = !{!8, !31}
2121 !3 = !{!4}
2222 !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", line: 1, flags: DIFlagFwdDecl, file: !1, identifier: "_ZTS3Foo")
2323 !5 = !{!6}
24 !6 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !7, type: !8))
24 !6 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !7, type: !8)
2525 !7 = !DIFile(filename: "foo.cpp", directory: ".")
2626 !8 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !9, extraData: !4)
2727 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2121 !1 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo")
2222 !2 = !{}
2323 !3 = !{!4}
24 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "y", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6))
24 !4 = !DIGlobalVariable(name: "y", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
2525 !5 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo")
2626 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !7)
2727 !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "x", line: 1, file: !1, baseType: null)
3232 # DBG_VALUE for variable "n" is extended into BB#5 from its predecessors BB#3
3333 # and BB#4.
3434 # CHECK: bb.5.if.end.7:
35 # CHECK: DBG_VALUE debug-use %ebx, debug-use _, !19, !20, debug-location !33
35 # CHECK: DBG_VALUE debug-use %ebx, debug-use _, !18, !19, debug-location !32
3636
3737
3838 --- |
120120 !13 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 6, type: !8)
121121 !14 = !DILocalVariable(name: "n", scope: !4, file: !1, line: 7, type: !7)
122122 !15 = !{!16}
123 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "m", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true))
123 !16 = !DIGlobalVariable(name: "m", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true)
124124 !17 = !{i32 2, !"Dwarf Version", i32 4}
125125 !18 = !{i32 2, !"Debug Info Version", i32 3}
126126 !19 = !{!"clang version 3.8.0 (trunk 253049)"}
5454 !llvm.module.flags = !{!6, !7}
5555 !llvm.ident = !{!8}
5656
57 !0 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", scope: !1, file: !2, line: 1, type: !5, isLocal: false, isDefinition: true))
57 !0 = distinct !DIGlobalVariable(name: "x", scope: !1, file: !2, line: 1, type: !5, isLocal: false, isDefinition: true)
5858 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
5959 !2 = !DIFile(filename: "t.c", directory: "/home/test")
6060 !3 = !{}
4444 !13 = !{!14, !15}
4545 !14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
4646 !15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
47 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5))
47 !16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
4848 !17 = !DILocation(line: 15, scope: !18)
4949 !18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
5050 !19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
2525 !1 = !DIFile(filename: "tls.cpp", directory: "/tmp")
2626 !2 = !{}
2727 !3 = !{!4}
28 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6))
28 !4 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
2929 !5 = !DIFile(filename: "tls.cpp", directory: "/tmp")
3030 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3131 !7 = !{i32 2, !"Dwarf Version", i32 3}
2020 !1 = !DIFile(filename: "tls.cpp", directory: "/tmp")
2121 !2 = !{}
2222 !3 = !{!4}
23 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6))
23 !4 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
2424 !5 = !DIFile(filename: "tls.cpp", directory: "/tmp")
2525 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2626 !7 = !{i32 2, !"Dwarf Version", i32 3}
4444 !1 = !DIFile(filename: "crash.c", directory: "wasm/tests")
4545 !2 = !{}
4646 !3 = !{!4}
47 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "key", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true))
47 !4 = distinct !DIGlobalVariable(name: "key", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true)
4848 !5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 120, align: 8, elements: !9)
4949 !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !7, line: 185, baseType: !8)
5050 !7 = !DIFile(filename: "wasm/emscripten/system/include/libc/bits/alltypes.h", directory: "wasm/tests")
2626 !8 = !{!9}
2727 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
2828 !12 = !{!14}
29 !14 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "GLB", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9))
29 !14 = !DIGlobalVariable(name: "GLB", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9)
3030 !15 = !DILocalVariable(name: "LOC", line: 4, scope: !16, file: !6, type: !9)
3131 !16 = distinct !DILexicalBlock(line: 3, column: 9, file: !20, scope: !5)
3232 !17 = !DILocation(line: 4, column: 9, scope: !16)
1919 !1 = !DIFile(filename: "test.c", directory: "/")
2020 !2 = !{}
2121 !3 = !{!4}
22 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true))
22 !4 = !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
2323 !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
2424 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "s", scope: !9, file: !1, line: 1, flags: DIFlagFwdDecl)
2525 !7 = !{i32 2, !"Dwarf Version", i32 2}
6666 !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
6767 !2 = !{}
6868 !3 = !{!4}
69 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "fptr", linkageName: "\01?fptr@@3P6IHHH@ZA", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true))
69 !4 = distinct !DIGlobalVariable(name: "fptr", linkageName: "\01?fptr@@3P6IHHH@ZA", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
7070 !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 32, align: 32)
7171 !6 = !DISubroutineType(cc: DW_CC_BORLAND_msfastcall, types: !7)
7272 !7 = !{!8, !8, !8}
3131 !12 = !DICompositeType(tag: DW_TAG_class_type, name: "foo", line: 1, size: 8, align: 8, file: !27, elements: !13)
3232 !13 = !{!11}
3333 !18 = !{!20}
34 !20 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", line: 5, isLocal: true, isDefinition: true, scope: !5, file: !6, type: !21))
34 !20 = !DIGlobalVariable(name: "x", line: 5, isLocal: true, isDefinition: true, scope: !5, file: !6, type: !21)
3535 !21 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !22)
3636 !22 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
3737 !25 = !DILocation(line: 6, column: 1, scope: !26)
2020 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.1 (trunk 153413) (llvm/trunk 153428)", isOptimized: false, emissionKind: FullDebug, file: !28, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
2121 !1 = !{}
2222 !3 = !{!5, !17}
23 !5 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 10, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7))
23 !5 = !DIGlobalVariable(name: "a", line: 10, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
2424 !6 = !DIFile(filename: "foo.cpp", directory: "/Users/echristo/tmp")
2525 !7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, size: 32, align: 32, file: !28, elements: !8)
2626 !8 = !{!9, !11}
3030 !12 = !DISubroutineType(types: !13)
3131 !13 = !{null, !14}
3232 !14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !7)
33 !17 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", line: 11, isLocal: false, isDefinition: true, scope: null, file: !6, type: !18))
33 !17 = !DIGlobalVariable(name: "b", line: 11, isLocal: false, isDefinition: true, scope: null, file: !6, type: !18)
3434 !18 = !DICompositeType(tag: DW_TAG_class_type, name: "B", line: 5, size: 32, align: 32, file: !28, elements: !19)
3535 !19 = !{!20, !21, !27}
3636 !20 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 7, size: 32, align: 32, flags: DIFlagPrivate, file: !28, scope: !18, baseType: !10)
4444 !13 = !{!14, !15}
4545 !14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
4646 !15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
47 !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5))
47 !16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
4848 !17 = !DILocation(line: 15, scope: !18)
4949 !18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
5050 !19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
8585 !18 = !DISubroutineType(types: !19)
8686 !19 = !{!15}
8787 !20 = !{!21}
88 !21 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 4, type: !11, isLocal: false, isDefinition: true))
88 !21 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 4, type: !11, isLocal: false, isDefinition: true)
8989 !22 = !{i32 2, !"Dwarf Version", i32 2}
9090 !23 = !{i32 2, !"Debug Info Version", i32 3}
9191 !24 = !{i32 1, !"PIC Level", i32 2}
5555 !llvm.module.flags = !{!14, !15}
5656 !llvm.ident = !{!16}
5757
58 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "d", scope: !1, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true, align: 16384))
58 !0 = distinct !DIGlobalVariable(name: "d", scope: !1, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true, align: 16384)
5959 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
6060 !2 = !DIFile(filename: "test.c", directory: "/tmp")
6161 !3 = !{}
117117 !llvm.module.flags = !{!19, !20}
118118 !llvm.ident = !{!21}
119119
120 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c0", scope: !1, file: !5, line: 19, type: !17, isLocal: false, isDefinition: true))
120 !0 = distinct !DIGlobalVariable(name: "c0", scope: !1, file: !5, line: 19, type: !17, isLocal: false, isDefinition: true)
121121 !1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !10)
122122 !2 = !DIFile(filename: "test.cpp", directory: "/tmp")
123123 !3 = !{!4}
128128 !8 = !DIEnumerator(name: "B", value: 1)
129129 !9 = !DIEnumerator(name: "C", value: 2)
130130 !10 = !{!0, !11}
131 !11 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s", scope: !1, file: !5, line: 21, type: !12, isLocal: false, isDefinition: true, align: 16384))
131 !11 = distinct !DIGlobalVariable(name: "s", scope: !1, file: !5, line: 21, type: !12, isLocal: false, isDefinition: true, align: 16384)
132132 !12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !5, line: 1, size: 2048, elements: !13, identifier: "_ZTS1S")
133133 !13 = !{!14, !16}
134134 !14 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !12, file: !5, line: 2, baseType: !15, size: 8)
6767 !llvm.module.flags = !{!11, !12}
6868 !llvm.ident = !{!13}
6969
70 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s0", scope: !1, file: !5, line: 10, type: !6, isLocal: false, isDefinition: true))
70 !0 = distinct !DIGlobalVariable(name: "s0", scope: !1, file: !5, line: 10, type: !6, isLocal: false, isDefinition: true)
7171 !1 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)", isOptimized: false, runtimeVersion: 1, emissionKind: FullDebug, enums: !3, globals: !4)
7272 !2 = !DIFile(filename: "test.m", directory: "/tmp")
7373 !3 = !{}
4141 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4242 !9 = distinct !DISubprogram(name: "bar_d", linkageName: "bar", scope: !5, file: !5, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
4343 !10 = !{!11}
44 !11 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zed", scope: !0, file: !5, line: 6, type: !12, isLocal: false, isDefinition: true))
44 !11 = !DIGlobalVariable(name: "zed", scope: !0, file: !5, line: 6, type: !12, isLocal: false, isDefinition: true)
4545 !12 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 64, align: 64, elements: !15)
4646 !13 = !DIDerivedType(tag: DW_TAG_typedef, name: "vifunc", file: !5, line: 5, baseType: !14)
4747 !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
3838 !7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8)
3939 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4040 !9 = !{!10}
41 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4))
41 !10 = !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4)
4242 !11 = !DIFile(filename: "simple.cpp", directory: "/tmp/dbginfo")
4343 !12 = !{i32 2, !"Dwarf Version", i32 4}
4444 !13 = !{i32 1, !"Debug Info Version", i32 3}
2121 !llvm.module.flags = !{!9, !10}
2222 !llvm.ident = !{!11}
2323
24 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", scope: !1, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true))
24 !0 = distinct !DIGlobalVariable(name: "i", scope: !1, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true)
2525 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git cd238117e3a8a57271a82d0bb03d6df6ad8f073e) (http://llvm.org/git/llvm.git 9fd063832c1541aad3907cd60ac344d36997905f)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
2626 !2 = !DIFile(filename: "atomic.c", directory: "/tmp")
2727 !3 = !{}
2222 !llvm.module.flags = !{!9, !10}
2323 !llvm.ident = !{!11}
2424
25 !0 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "i", scope: !1, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true))
25 !0 = distinct !DIGlobalVariable(name: "i", scope: !1, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true)
2626 !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git cd238117e3a8a57271a82d0bb03d6df6ad8f073e) (http://llvm.org/git/llvm.git 9fd063832c1541aad3907cd60ac344d36997905f)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4)
2727 !2 = !DIFile(filename: "atomic.c", directory: "/tmp")
2828 !3 = !{}
3030 !1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm")
3131 !2 = !{}
3232 !3 = !{!4}
33 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true))
33 !4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true)
3434 !5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PackedBits", file: !1, line: 3, size: 40, elements: !6)
3535 !6 = !{!7, !9, !13}
3636
5757 !1 = !DIFile(filename: "bitfields.c", directory: "/")
5858 !2 = !{}
5959 !3 = !{!4}
60 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true))
60 !4 = !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true)
6161 !5 = !DIFile(filename: "bitfields.c", directory: "/")
6262 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, elements: !7)
6363 !7 = !{!8, !10, !11, !12}
2020 !1 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo")
2121 !2 = !{}
2222 !3 = !{!4}
23 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "f", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6))
23 !4 = !DIGlobalVariable(name: "f", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
2424 !5 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo")
2525 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 1, align: 8, file: !1, elements: !2)
2626 !7 = !{i32 2, !"Dwarf Version", i32 4}
117117 !45 = !DILocalVariable(name: "this", line: 4, arg: 1, flags: DIFlagArtificial, scope: !31, file: !6, type: !34)
118118 !46 = !DILocalVariable(name: "aValue", line: 4, arg: 2, scope: !31, file: !6, type: !9)
119119 !47 = !{!49}
120 !49 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "mRefCnt", line: 9, isLocal: false, isDefinition: true, scope: null, file: !6, type: !37))
120 !49 = !DIGlobalVariable(name: "mRefCnt", line: 9, isLocal: false, isDefinition: true, scope: null, file: !6, type: !37)
121121 !50 = !DILocation(line: 5, column: 5, scope: !51, inlinedAt: !52)
122122 !51 = distinct !DILexicalBlock(line: 4, column: 29, file: !6, scope: !31)
123123 !52 = !DILocation(line: 15, scope: !53)
8080 !19 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__I_a", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !15, type: !20, variables: !2)
8181 !20 = !DISubroutineType(types: !2)
8282 !21 = !{!22}
83 !22 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 8, isLocal: false, isDefinition: true, scope: null, file: !15, type: !4))
83 !22 = !DIGlobalVariable(name: "a", line: 8, isLocal: false, isDefinition: true, scope: null, file: !15, type: !4)
8484 !23 = !{i32 2, !"Dwarf Version", i32 4}
8585 !24 = !{i32 1, !"Debug Info Version", i32 3}
8686 !25 = !{!"clang version 3.5 (trunk 199923) (llvm/trunk 199940)"}
4444 !8 = !DIDerivedType(tag: DW_TAG_member, name: "i", line: 3, size: 32, align: 32, offset: 32, file: !1, scope: !4, baseType: !9)
4545 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4646 !10 = !{!11}
47 !11 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !12, type: !4))
47 !11 = !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !12, type: !4)
4848 !12 = !DIFile(filename: "data_member_location.cpp", directory: "/tmp/dbginfo")
4949 !13 = !{i32 2, !"Dwarf Version", i32 4}
5050 !14 = !{!"clang version 3.4 "}
2121 !7 = !DISubroutineType(types: !8)
2222 !8 = !{null}
2323 !11 = !{!13}
24 !13 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "s", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14))
24 !13 = !DIGlobalVariable(name: "s", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14)
2525 !14 = !DICompositeType(tag: DW_TAG_array_type, size: 34359738368, align: 8, baseType: !15, elements: !16)
2626 !15 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
2727 !16 = !{!17}
9292 !16 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
9393 !17 = !DIDerivedType(tag: DW_TAG_member, name: "nums", line: 3, size: 32, align: 32, offset: 64, file: !42, scope: !1, baseType: !5)
9494 !18 = !DILocalVariable(name: "nums", line: 7, arg: 2, scope: !0, file: !1, type: !5)
95 !19 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "p", line: 14, isLocal: false, isDefinition: true, scope: !2, file: !1, type: !11))
95 !19 = !DIGlobalVariable(name: "p", line: 14, isLocal: false, isDefinition: true, scope: !2, file: !1, type: !11)
9696 !20 = !DILocation(line: 7, column: 13, scope: !0)
9797 !21 = !DILocation(line: 7, column: 21, scope: !0)
9898 !22 = !DILocation(line: 9, column: 3, scope: !23)
8888 !12 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 4, type: !8)
8989 !13 = !DILocalVariable(name: "argc", arg: 1, scope: !4, file: !1, line: 4, type: !7)
9090 !14 = !{!15}
91 !15 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !16, isLocal: false, isDefinition: true))
91 !15 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !16, isLocal: false, isDefinition: true)
9292 !16 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
9393 !17 = !{i32 2, !"Dwarf Version", i32 4}
9494 !18 = !{i32 2, !"Debug Info Version", i32 3}
139139 !32 = !DISubroutineType(types: !33)
140140 !33 = !{null}
141141 !34 = !{!35, !36, !37}
142 !35 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 37, isLocal: false, isDefinition: true, scope: null, file: !31, type: !4))
143 !36 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", line: 38, isLocal: false, isDefinition: true, scope: null, file: !31, type: !12))
144 !37 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "u", line: 39, isLocal: false, isDefinition: true, scope: null, file: !31, type: !22))
142 !35 = !DIGlobalVariable(name: "a", line: 37, isLocal: false, isDefinition: true, scope: null, file: !31, type: !4)
143 !36 = !DIGlobalVariable(name: "b", line: 38, isLocal: false, isDefinition: true, scope: null, file: !31, type: !12)
144 !37 = !DIGlobalVariable(name: "u", line: 39, isLocal: false, isDefinition: true, scope: null, file: !31, type: !22)
145145 !38 = !{i32 2, !"Dwarf Version", i32 2}
146146 !39 = !{i32 2, !"Debug Info Version", i32 3}
147147 !40 = !{!"clang version 3.6.0 "}
151151 !1 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/", directory: "/llvm/_build.ninja.release")
152152 !2 = !{}
153153 !3 = !{!4, !18, !25, !35}
154 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "l0", scope: !0, file: !5, line: 88, type: !6, isLocal: false, isDefinition: true))
154 !4 = !DIGlobalVariable(name: "l0", scope: !0, file: !5, line: 88, type: !6, isLocal: false, isDefinition: true)
155155 !5 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/debug-info-packed-struct.c", directory: "/llvm/_build.ninja.release")
156156 !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout0", file: !5, line: 15, size: 192, elements: !7)
157157 !7 = !{!8, !10, !17}
165165 !15 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !11, file: !5, line: 13, baseType: !16, size: 60, offset: 4)
166166 !16 = !DIBasicType(name: "long long int", size: 64, encoding: DW_ATE_signed)
167167 !17 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs16", scope: !6, file: !5, line: 18, baseType: !14, size: 1, offset: 128)
168 !18 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "l1", scope: !0, file: !5, line: 89, type: !19, isLocal: false, isDefinition: true))
168 !18 = !DIGlobalVariable(name: "l1", scope: !0, file: !5, line: 89, type: !19, isLocal: false, isDefinition: true)
169169 !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout1", file: !5, line: 34, size: 96, elements: !20)
170170 !20 = !{!21, !22, !24}
171171 !21 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs0", scope: !19, file: !5, line: 35, baseType: !9, size: 8)
172172 !22 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs1", scope: !19, file: !5, line: 36, baseType: !23, size: 64, offset: 8)
173173 !23 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8_anon", file: !5, line: 30, size: 64, elements: !2)
174174 !24 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs9", scope: !19, file: !5, line: 37, baseType: !14, size: 1, offset: 72)
175 !25 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "l2", scope: !0, file: !5, line: 90, type: !26, isLocal: false, isDefinition: true))
175 !25 = !DIGlobalVariable(name: "l2", scope: !0, file: !5, line: 90, type: !26, isLocal: false, isDefinition: true)
176176 !26 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout2", file: !5, line: 54, size: 80, elements: !27)
177177 !27 = !{!28, !29, !34}
178178 !28 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs0", scope: !26, file: !5, line: 55, baseType: !9, size: 8)
182182 !32 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !30, file: !5, line: 51, baseType: !14, size: 4)
183183 !33 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !30, file: !5, line: 52, baseType: !16, size: 60, offset: 4)
184184 !34 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs9", scope: !26, file: !5, line: 57, baseType: !14, size: 1, offset: 72)
185 !35 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "l3", scope: !0, file: !5, line: 91, type: !36, isLocal: false, isDefinition: true))
185 !35 = !DIGlobalVariable(name: "l3", scope: !0, file: !5, line: 91, type: !36, isLocal: false, isDefinition: true)
186186 !36 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout3", file: !5, line: 76, size: 128, elements: !37)
187187 !37 = !{!38, !39, !44}
188188 !38 = !DIDerivedType(tag: DW_TAG_member, name: "l3_ofs0", scope: !36, file: !5, line: 77, baseType: !9, size: 8)
6666 !8 = !{!9}
6767 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
6868 !10 = !{!12, !27, !28}
69 !12 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", linkageName: "_ZN1C1aE", line: 14, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !15))
69 !12 = !DIGlobalVariable(name: "a", linkageName: "_ZN1C1aE", line: 14, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !15)
7070 !13 = !DICompositeType(tag: DW_TAG_class_type, name: "C", line: 1, size: 32, align: 32, file: !33, elements: !14)
7171 !14 = !{!15, !16, !19, !20, !23, !24, !26}
7272 !15 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 3, flags: DIFlagPrivate | DIFlagStaticMember, file: !33, scope: !13, baseType: !9)
8181 !24 = !DIDerivedType(tag: DW_TAG_member, name: "const_c", line: 10, flags: DIFlagPublic | DIFlagStaticMember, file: !33, scope: !13, baseType: !25, extraData: i32 18)
8282 !25 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !9)
8383 !26 = !DIDerivedType(tag: DW_TAG_member, name: "d", line: 11, size: 32, align: 32, flags: DIFlagPublic, file: !33, scope: !13, baseType: !9)
84 !27 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", linkageName: "_ZN1C1bE", line: 15, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !19))
85 !28 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c", linkageName: "_ZN1C1cE", line: 16, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !23))
84 !27 = !DIGlobalVariable(name: "b", linkageName: "_ZN1C1bE", line: 15, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !19)
85 !28 = !DIGlobalVariable(name: "c", linkageName: "_ZN1C1cE", line: 16, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !23)
8686 !29 = !DILocalVariable(name: "instance_C", line: 20, scope: !5, file: !6, type: !13)
8787 !30 = !DILocation(line: 20, scope: !5)
8888 !31 = !DILocation(line: 21, scope: !5)
8282 !1 = !DIFile(filename: "frame.c", directory: "/home/user/test")
8383 !2 = !{}
8484 !3 = !{!4, !6, !7, !8}
85 !4 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "data", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true))
85 !4 = distinct !DIGlobalVariable(name: "data", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
8686 !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
87 !6 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "sum", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true))
88 !7 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "zero", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true))
89 !8 = distinct !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "ptr", scope: !0, file: !1, line: 4, type: !9, isLocal: false, isDefinition: true))
87 !6 = distinct !DIGlobalVariable(name: "sum", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
88 !7 = distinct !DIGlobalVariable(name: "zero", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true)
89 !8 = distinct !DIGlobalVariable(name: "ptr", scope: !0, file: !1, line: 4, type: !9, isLocal: false, isDefinition: true)
9090 !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 64, align: 64)
9191 !10 = !{i32 2, !"Dwarf Version", i32 4}
9292 !11 = !{i32 2, !"Debug Info Version", i32 3}
3636 !1 = !DIFile(filename: "debugger-tune.cpp", directory: "/home/probinson/projects/scratch")
3737 !2 = !{}
3838 !3 = !{!4}
39 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "globalvar", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true))
39 !4 = !DIGlobalVariable(name: "globalvar", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
4040 !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4141 !6 = !{i32 2, !"Dwarf Version", i32 4}
4242 !7 = !{i32 2, !"Debug Info Version", i32 3}
127127 !26 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__sub_I_decl_derived_member.cpp", isLocal: true, isDefinition: true, flags: DIFlagArtificial, isOptimized: false, unit: !0, file: !1, scope: !11, type: !27, variables: !2)
128128 !27 = !DISubroutineType(types: !2)
129129 !28 = !{!29}
130 !29 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "f", line: 8, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4))
130 !29 = !DIGlobalVariable(name: "f", line: 8, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4)
131131 !30 = !{i32 2, !"Dwarf Version", i32 4}
132132 !31 = !{i32 2, !"Debug Info Version", i32 3}
133133 !32 = !{!"clang version 3.7.0 (trunk 227104) (llvm/trunk 227103)"}
1313 !1 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/", directory: "/usr/local/google/home/majnemer/llvm/src")
1414 !2 = !{}
1515 !3 = !{!4}
16 !4 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "id", linkageName: "\01?id@?$numpunct@D@@0HA", scope: !0, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, declaration: !7))
16 !4 = distinct !DIGlobalVariable(name: "id", linkageName: "\01?id@?$numpunct@D@@0HA", scope: !0, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, declaration: !7)
1717 !5 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/t.ii", directory: "/usr/local/google/home/majnemer/llvm/src")
1818 !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
1919 !7 = !DIDerivedType(tag: DW_TAG_member, name: "id", scope: !8, file: !5, line: 2, baseType: !6, flags: DIFlagStaticMember)
7676 !15 = !DISubroutineType(types: !16)
7777 !16 = !{!8}
7878 !17 = !{!18}
79 !18 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "global", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8))
79 !18 = !DIGlobalVariable(name: "global", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
8080 !19 = !{i32 2, !"Dwarf Version", i32 4}
8181 !20 = !DILocation(line: 2, scope: !4)
8282 !21 = !DILocation(line: 3, scope: !11)
6969 !6 = !DISubroutineType(types: !7)
7070 !7 = !{null}
7171 !8 = !{!9, !11, !12}
72 !9 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "some_data", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10))
72 !9 = !DIGlobalVariable(name: "some_data", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10)
7373 !10 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
74 !11 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "some_other", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10))
75 !12 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "some_bss", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10))
74 !11 = !DIGlobalVariable(name: "some_other", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10)
75 !12 = !DIGlobalVariable(name: "some_bss", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10)
7676 !13 = !{i32 2, !"Dwarf Version", i32 4}
7777 !14 = !DILocation(line: 7, scope: !4)
7878 !15 = !DILocation(line: 8, scope: !4)
6161 !7 = !{!8}
6262 !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
6363 !9 = !{!10}
64 !10 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "global_var", linkageName: "_ZN4test10global_varE", scope: !5, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true))
64 !10 = !DIGlobalVariable(name: "global_var", linkageName: "_ZN4test10global_varE", scope: !5, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true)
6565 !11 = !{i32 2, !"Dwarf Version", i32 4}
6666 !12 = !{i32 2, !"Debug Info Version", i32 3}
6767 !13 = !{!"clang version 3.8.0 (trunk 244662)"}
119119 !22 = !DISubroutineType(types: !23)
120120 !23 = !{null}
121121 !24 = !{!25, !26, !27}
122 !25 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", line: 7, isLocal: false, isDefinition: true, scope: !8, file: !4, type: !11, declaration: !10))
123 !26 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8))
124 !27 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11))
122 !25 = !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", line: 7, isLocal: false, isDefinition: true, scope: !8, file: !4, type: !11, declaration: !10)
123 !26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8)
124 !27 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11)
125125 !28 = !DILocalVariable(name: "this", line: 9, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !3, file: !4, type: !29)
126126 !29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, baseType: !8)
127127 !30 = !DILocation(line: 9, scope: !3)
2929 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 169136)", isOptimized: false, emissionKind: FullDebug, file: !20, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
3030 !1 = !{}
3131 !3 = !{!5}
32 !5 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7))
32 !5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
3333 !6 = !DIFile(filename: "t.cpp", directory: "/Volumes/Sandbox/llvm")
3434 !7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, align: 32, file: !20, elements: !8)
3535 !8 = !{!9, !14}
2323 !14 = !DIEnumerator(name: "C1", value: 1) ; [ DW_TAG_enumerator ]
2424 !15 = !{}
2525 !17 = !{!19, !20, !21}
26 !19 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !4, type: !3))
27 !20 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "b", line: 5, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8))
28 !21 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "c", line: 6, isLocal: false, isDefinition: true, scope: null, file: !4, type: !12))
26 !19 = !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !4, type: !3)
27 !20 = !DIGlobalVariable(name: "b", line: 5, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8)
28 !21 = !DIGlobalVariable(name: "c", line: 6, isLocal: false, isDefinition: true, scope: null, file: !4, type: !12)
2929 !22 = !DIFile(filename: "foo.cpp", directory: "/Users/echristo/tmp")
3030
3131 ; CHECK: DW_TAG_enumeration_type [{{.*}}]
88 !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.2 (trunk 165274) (llvm/trunk 165272)", isOptimized: false, emissionKind: FullDebug, file: !8, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
99 !1 = !{}
1010 !3 = !{!5}
11 !5 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "e", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7))
11 !5 = !DIGlobalVariable(name: "e", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
1212 !6 = !DIFile(filename: "foo.cpp", directory: "/tmp")
1313 !7 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "E", line: 1, size: 16, align: 16, flags: DIFlagFwdDecl, file: !8)
1414 !8 = !DIFile(filename: "foo.cpp", directory: "/tmp")