diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-03-27 00:07:26 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-03-27 00:07:26 +0000 |
commit | 342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7 (patch) | |
tree | 20efeadb9cd6b7049beff91505093017668123ee /lib/IR/DIBuilder.cpp | |
parent | b7e11e400dabced046e7ec53a66926716563bb36 (diff) | |
download | external_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.cpp | 138 |
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), |