summaryrefslogtreecommitdiffstats
path: root/lib/IR/DIBuilder.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2013-03-27 00:07:26 +0000
committerDavid Blaikie <dblaikie@gmail.com>2013-03-27 00:07:26 +0000
commit342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7 (patch)
tree20efeadb9cd6b7049beff91505093017668123ee /lib/IR/DIBuilder.cpp
parentb7e11e400dabced046e7ec53a66926716563bb36 (diff)
downloadexternal_llvm-342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7.zip
external_llvm-342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7.tar.gz
external_llvm-342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7.tar.bz2
Adding DIImportedModules to DIScopes.
This is just the basic groundwork for supporting DW_TAG_imported_module but I wanted to commit this before pushing support further into Clang or LLVM so that this rather churny change is isolated from the rest of the work. The major churn here is obviously adding another field (within the common DIScope prefix) to all DIScopes (files, classes, namespaces, lexical scopes, etc). This should be the last big churny change needed for DW_TAG_imported_module/using directive support/PR14606. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178099 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR/DIBuilder.cpp')
-rw-r--r--lib/IR/DIBuilder.cpp138
1 files changed, 109 insertions, 29 deletions
diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp
index 0d18bed..ee53dff 100644
--- a/lib/IR/DIBuilder.cpp
+++ b/lib/IR/DIBuilder.cpp
@@ -104,6 +104,7 @@ void DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_compile_unit),
createFilePathPair(VMContext, Filename, Directory),
+ NULL, // Imported modules
ConstantInt::get(Type::getInt32Ty(VMContext), Lang),
MDString::get(VMContext, Producer),
ConstantInt::get(Type::getInt1Ty(VMContext), isOptimized),
@@ -115,7 +116,9 @@ void DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
TempGVs,
MDString::get(VMContext, SplitName)
};
- TheCU = DICompileUnit(MDNode::get(VMContext, Elts));
+ DICompileUnit CU(MDNode::get(VMContext, Elts));
+ assert(CU.Verify() && "The compile unit should be valid");
+ TheCU = CU;
// Create a named metadata so that it is easier to find cu in a module.
NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.cu");
@@ -127,9 +130,12 @@ void DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
DIFile DIBuilder::createFile(StringRef Filename, StringRef Directory) {
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_file_type),
- createFilePathPair(VMContext, Filename, Directory)
+ createFilePathPair(VMContext, Filename, Directory),
+ NULL // Imported modules
};
- return DIFile(MDNode::get(VMContext, Elts));
+ DIFile F(MDNode::get(VMContext, Elts));
+ assert(F.Verify() && "The DIFile should be valid");
+ return F;
}
/// createEnumerator - Create a single enumerator value.
@@ -140,7 +146,9 @@ DIEnumerator DIBuilder::createEnumerator(StringRef Name, uint64_t Val) {
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt64Ty(VMContext), Val)
};
- return DIEnumerator(MDNode::get(VMContext, Elts));
+ DIEnumerator E(MDNode::get(VMContext, Elts));
+ assert(E.Verify() && "The enumerator should be valid");
+ return E;
}
/// createNullPtrType - Create C++0x nullptr type.
@@ -151,6 +159,7 @@ DIType DIBuilder::createNullPtrType(StringRef Name) {
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_unspecified_type),
NULL, // Filename
+ Constant::getNullValue(Type::getInt32Ty(VMContext)), // Imported modules
NULL, //TheCU,
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -160,7 +169,9 @@ DIType DIBuilder::createNullPtrType(StringRef Name) {
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags;
ConstantInt::get(Type::getInt32Ty(VMContext), 0) // Encoding
};
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The nullptr type should be valid");
+ return T;
}
/// createBasicType - Create debugging information entry for a basic
@@ -174,6 +185,7 @@ DIBuilder::createBasicType(StringRef Name, uint64_t SizeInBits,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_base_type),
NULL, // File/directory name
+ NULL, // Imported modules
NULL, //TheCU,
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -183,7 +195,9 @@ DIBuilder::createBasicType(StringRef Name, uint64_t SizeInBits,
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags;
ConstantInt::get(Type::getInt32Ty(VMContext), Encoding)
};
- return DIBasicType(MDNode::get(VMContext, Elts));
+ DIBasicType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The basic type should be valid");
+ return T;
}
/// createQualifiedType - Create debugging information entry for a qualified
@@ -193,6 +207,7 @@ DIDerivedType DIBuilder::createQualifiedType(unsigned Tag, DIType FromTy) {
Value *Elts[] = {
GetTagConstant(VMContext, Tag),
NULL, // Filename
+ NULL, // Imported modules
NULL, //TheCU,
MDString::get(VMContext, StringRef()), // Empty name.
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -202,7 +217,9 @@ DIDerivedType DIBuilder::createQualifiedType(unsigned Tag, DIType FromTy) {
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags
FromTy
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The derived type should be valid");
+ return T;
}
/// createPointerType - Create debugging information entry for a pointer.
@@ -213,6 +230,7 @@ DIBuilder::createPointerType(DIType PointeeTy, uint64_t SizeInBits,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_pointer_type),
NULL, // Filename
+ NULL, // Imported modules
NULL, //TheCU,
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -222,7 +240,9 @@ DIBuilder::createPointerType(DIType PointeeTy, uint64_t SizeInBits,
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags
PointeeTy
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The pointer type should be valid");
+ return T;
}
DIDerivedType DIBuilder::createMemberPointerType(DIType PointeeTy, DIType Base) {
@@ -230,6 +250,7 @@ DIDerivedType DIBuilder::createMemberPointerType(DIType PointeeTy, DIType Base)
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_ptr_to_member_type),
NULL, // Filename
+ NULL, // Imported modules
NULL, //TheCU,
NULL,
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -240,7 +261,9 @@ DIDerivedType DIBuilder::createMemberPointerType(DIType PointeeTy, DIType Base)
PointeeTy,
Base
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The member pointer type should be valid");
+ return T;
}
/// createReferenceType - Create debugging information entry for a reference
@@ -251,6 +274,7 @@ DIDerivedType DIBuilder::createReferenceType(unsigned Tag, DIType RTy) {
Value *Elts[] = {
GetTagConstant(VMContext, Tag),
NULL, // Filename
+ NULL, // Imported modules
NULL, // TheCU,
NULL, // Name
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -260,7 +284,9 @@ DIDerivedType DIBuilder::createReferenceType(unsigned Tag, DIType RTy) {
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags
RTy
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The reference type should be valid");
+ return T;
}
/// createTypedef - Create debugging information entry for a typedef.
@@ -271,6 +297,7 @@ DIDerivedType DIBuilder::createTypedef(DIType Ty, StringRef Name, DIFile File,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_typedef),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Context),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNo),
@@ -280,7 +307,9 @@ DIDerivedType DIBuilder::createTypedef(DIType Ty, StringRef Name, DIFile File,
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags
Ty
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The typedef Type should be valid");
+ return T;
}
/// createFriend - Create debugging information entry for a 'friend'.
@@ -291,6 +320,7 @@ DIType DIBuilder::createFriend(DIType Ty, DIType FriendTy) {
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_friend),
NULL,
+ NULL, // Imported modules
Ty,
NULL, // Name
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -300,7 +330,9 @@ DIType DIBuilder::createFriend(DIType Ty, DIType FriendTy) {
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Flags
FriendTy
};
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The friend type should be valid");
+ return T;
}
/// createInheritance - Create debugging information entry to establish
@@ -312,6 +344,7 @@ DIDerivedType DIBuilder::createInheritance(
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_inheritance),
NULL,
+ NULL, // Imported modules
Ty,
NULL, // Name
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
@@ -321,7 +354,9 @@ DIDerivedType DIBuilder::createInheritance(
ConstantInt::get(Type::getInt32Ty(VMContext), Flags),
BaseTy
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The inheritance type should be valid");
+ return T;
}
/// createMemberType - Create debugging information entry for a member.
@@ -333,6 +368,7 @@ DIDerivedType DIBuilder::createMemberType(
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_member),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -342,7 +378,9 @@ DIDerivedType DIBuilder::createMemberType(
ConstantInt::get(Type::getInt32Ty(VMContext), Flags),
Ty
};
- return DIDerivedType(MDNode::get(VMContext, Elts));
+ DIDerivedType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The member type should be valid");
+ return T;
}
/// createStaticMemberType - Create debugging information entry for a
@@ -356,6 +394,7 @@ DIType DIBuilder::createStaticMemberType(DIDescriptor Scope, StringRef Name,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_member),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -366,7 +405,9 @@ DIType DIBuilder::createStaticMemberType(DIDescriptor Scope, StringRef Name,
Ty,
Val
};
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The static member type should be valid");
+ return T;
}
/// createObjCIVar - Create debugging information entry for Objective-C
@@ -382,6 +423,7 @@ DIType DIBuilder::createObjCIVar(StringRef Name,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_member),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(File),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -395,7 +437,9 @@ DIType DIBuilder::createObjCIVar(StringRef Name,
MDString::get(VMContext, SetterName),
ConstantInt::get(Type::getInt32Ty(VMContext), PropertyAttributes)
};
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The Objective-C IVar type should be valid");
+ return T;
}
/// createObjCIVar - Create debugging information entry for Objective-C
@@ -409,6 +453,7 @@ DIType DIBuilder::createObjCIVar(StringRef Name,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_member),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(File),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -419,7 +464,9 @@ DIType DIBuilder::createObjCIVar(StringRef Name,
Ty,
PropertyNode
};
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The Objective-C IVar type should be valid");
+ return T;
}
/// createObjCProperty - Create debugging information entry for Objective-C
@@ -440,7 +487,9 @@ DIObjCProperty DIBuilder::createObjCProperty(StringRef Name,
ConstantInt::get(Type::getInt32Ty(VMContext), PropertyAttributes),
Ty
};
- return DIObjCProperty(MDNode::get(VMContext, Elts));
+ DIObjCProperty P(MDNode::get(VMContext, Elts));
+ assert(P.Verify() && "The Objective-C property should be valid");
+ return P;
}
/// createTemplateTypeParameter - Create debugging information for template
@@ -458,7 +507,9 @@ DIBuilder::createTemplateTypeParameter(DIDescriptor Context, StringRef Name,
ConstantInt::get(Type::getInt32Ty(VMContext), LineNo),
ConstantInt::get(Type::getInt32Ty(VMContext), ColumnNo)
};
- return DITemplateTypeParameter(MDNode::get(VMContext, Elts));
+ DITemplateTypeParameter P(MDNode::get(VMContext, Elts));
+ assert(P.Verify() && "The template type parameter should be valid");
+ return P;
}
/// createTemplateValueParameter - Create debugging information for template
@@ -478,7 +529,9 @@ DIBuilder::createTemplateValueParameter(DIDescriptor Context, StringRef Name,
ConstantInt::get(Type::getInt32Ty(VMContext), LineNo),
ConstantInt::get(Type::getInt32Ty(VMContext), ColumnNo)
};
- return DITemplateValueParameter(MDNode::get(VMContext, Elts));
+ DITemplateValueParameter P(MDNode::get(VMContext, Elts));
+ assert(P.Verify() && "The template value parameter should be valid");
+ return P;
}
/// createClassType - Create debugging information entry for a class.
@@ -497,6 +550,7 @@ DICompositeType DIBuilder::createClassType(DIDescriptor Context, StringRef Name,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_class_type),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Context),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -529,6 +583,7 @@ DICompositeType DIBuilder::createStructType(DIDescriptor Context,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_structure_type),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Context),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -556,6 +611,7 @@ DICompositeType DIBuilder::createUnionType(
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_union_type),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -568,7 +624,9 @@ DICompositeType DIBuilder::createUnionType(
ConstantInt::get(Type::getInt32Ty(VMContext), RunTimeLang),
Constant::getNullValue(Type::getInt32Ty(VMContext))
};
- return DICompositeType(MDNode::get(VMContext, Elts));
+ DICompositeType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The union type should be valid");
+ return T;
}
/// createSubroutineType - Create subroutine type.
@@ -578,6 +636,7 @@ DIBuilder::createSubroutineType(DIFile File, DIArray ParameterTypes) {
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_subroutine_type),
Constant::getNullValue(Type::getInt32Ty(VMContext)),
+ Constant::getNullValue(Type::getInt32Ty(VMContext)), // Imported modules
Constant::getNullValue(Type::getInt32Ty(VMContext)),
MDString::get(VMContext, ""),
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
@@ -590,7 +649,9 @@ DIBuilder::createSubroutineType(DIFile File, DIArray ParameterTypes) {
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
Constant::getNullValue(Type::getInt32Ty(VMContext))
};
- return DICompositeType(MDNode::get(VMContext, Elts));
+ DICompositeType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The subroutine type should be valid");
+ return T;
}
/// createEnumerationType - Create debugging information entry for an
@@ -603,6 +664,7 @@ DICompositeType DIBuilder::createEnumerationType(
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_enumeration_type),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
@@ -617,7 +679,9 @@ DICompositeType DIBuilder::createEnumerationType(
};
MDNode *Node = MDNode::get(VMContext, Elts);
AllEnumTypes.push_back(Node);
- return DICompositeType(Node);
+ DICompositeType T(Node);
+ assert(T.Verify() && "The enumeration type should be valid");
+ return T;
}
/// createArrayType - Create debugging information entry for an array.
@@ -627,6 +691,7 @@ DICompositeType DIBuilder::createArrayType(uint64_t Size, uint64_t AlignInBits,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_array_type),
NULL, // Filename/Directory,
+ Constant::getNullValue(Type::getInt32Ty(VMContext)), // Imported modules
NULL, //TheCU,
MDString::get(VMContext, ""),
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
@@ -639,7 +704,9 @@ DICompositeType DIBuilder::createArrayType(uint64_t Size, uint64_t AlignInBits,
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
Constant::getNullValue(Type::getInt32Ty(VMContext))
};
- return DICompositeType(MDNode::get(VMContext, Elts));
+ DICompositeType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The array type should be valid");
+ return T;
}
/// createVectorType - Create debugging information entry for a vector.
@@ -650,6 +717,7 @@ DIType DIBuilder::createVectorType(uint64_t Size, uint64_t AlignInBits,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_array_type),
NULL, // Filename/Directory,
+ Constant::getNullValue(Type::getInt32Ty(VMContext)), // Imported modules
NULL, //TheCU,
MDString::get(VMContext, ""),
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
@@ -662,7 +730,9 @@ DIType DIBuilder::createVectorType(uint64_t Size, uint64_t AlignInBits,
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
Constant::getNullValue(Type::getInt32Ty(VMContext))
};
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The vector type should be valid");
+ return T;
}
/// createArtificialType - Create a new DIType with "artificial" flag set.
@@ -684,9 +754,11 @@ DIType DIBuilder::createArtificialType(DIType Ty) {
CurFlags = CurFlags | DIType::FlagArtificial;
// Flags are stored at this slot.
- Elts[8] = ConstantInt::get(Type::getInt32Ty(VMContext), CurFlags);
+ Elts[9] = ConstantInt::get(Type::getInt32Ty(VMContext), CurFlags);
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The artificial type should be valid");
+ return T;
}
/// createObjectPointerType - Create a new type with both the object pointer
@@ -709,9 +781,11 @@ DIType DIBuilder::createObjectPointerType(DIType Ty) {
CurFlags = CurFlags | (DIType::FlagObjectPointer | DIType::FlagArtificial);
// Flags are stored at this slot.
- Elts[8] = ConstantInt::get(Type::getInt32Ty(VMContext), CurFlags);
+ Elts[9] = ConstantInt::get(Type::getInt32Ty(VMContext), CurFlags);
- return DIType(MDNode::get(VMContext, Elts));
+ DIType T(MDNode::get(VMContext, Elts));
+ assert(T.Verify() && "The object pointer type should be valid");
+ return T;
}
/// retainType - Retain DIType in a module even if it is not referenced
@@ -740,6 +814,7 @@ DIType DIBuilder::createForwardDecl(unsigned Tag, StringRef Name,
Value *Elts[] = {
GetTagConstant(VMContext, Tag),
F.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), Line),
@@ -911,6 +986,7 @@ DISubprogram DIBuilder::createFunction(DIDescriptor Context,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_subprogram),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Context),
MDString::get(VMContext, Name),
MDString::get(VMContext, Name),
@@ -958,6 +1034,7 @@ DISubprogram DIBuilder::createMethod(DIDescriptor Context,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_subprogram),
F.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Context),
MDString::get(VMContext, Name),
MDString::get(VMContext, Name),
@@ -993,6 +1070,7 @@ DINameSpace DIBuilder::createNameSpace(DIDescriptor Scope, StringRef Name,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_namespace),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
MDString::get(VMContext, Name),
ConstantInt::get(Type::getInt32Ty(VMContext), LineNo)
@@ -1010,6 +1088,7 @@ DILexicalBlockFile DIBuilder::createLexicalBlockFile(DIDescriptor Scope,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_lexical_block),
File.getFileNode(),
+ NULL, // Imported modules
Scope
};
DILexicalBlockFile R(MDNode::get(VMContext, Elts));
@@ -1026,6 +1105,7 @@ DILexicalBlock DIBuilder::createLexicalBlock(DIDescriptor Scope, DIFile File,
Value *Elts[] = {
GetTagConstant(VMContext, dwarf::DW_TAG_lexical_block),
File.getFileNode(),
+ NULL, // Imported modules
getNonCompileUnitScope(Scope),
ConstantInt::get(Type::getInt32Ty(VMContext), Line),
ConstantInt::get(Type::getInt32Ty(VMContext), Col),