forked from OSchip/llvm-project
Remove DIBuilder cache of variable TheCU and change the few
uses that wanted it. Also change the interface for createCompileUnit to compensate. Fix comments that refer to TheCU as well. llvm-svn: 186637
This commit is contained in:
parent
769baad2fb
commit
03b3e1118f
|
@ -29,6 +29,7 @@ namespace llvm {
|
|||
class MDNode;
|
||||
class StringRef;
|
||||
class DIBasicType;
|
||||
class DICompileUnit;
|
||||
class DICompositeType;
|
||||
class DIDerivedType;
|
||||
class DIDescriptor;
|
||||
|
@ -53,7 +54,6 @@ namespace llvm {
|
|||
private:
|
||||
Module &M;
|
||||
LLVMContext & VMContext;
|
||||
MDNode *TheCU;
|
||||
|
||||
MDNode *TempEnumTypes;
|
||||
MDNode *TempRetainTypes;
|
||||
|
@ -81,7 +81,6 @@ namespace llvm {
|
|||
|
||||
public:
|
||||
explicit DIBuilder(Module &M);
|
||||
const MDNode *getCU() { return TheCU; }
|
||||
enum ComplexAddrKind { OpPlus=1, OpDeref };
|
||||
|
||||
/// finalize - Construct any deferred debug info descriptors.
|
||||
|
@ -103,10 +102,11 @@ namespace llvm {
|
|||
/// Objective-C.
|
||||
/// @param SplitName The name of the file that we'll split debug info out
|
||||
/// into.
|
||||
void createCompileUnit(unsigned Lang, StringRef File, StringRef Dir,
|
||||
StringRef Producer, bool isOptimized,
|
||||
StringRef Flags, unsigned RV,
|
||||
StringRef SplitName = StringRef());
|
||||
DICompileUnit createCompileUnit(unsigned Lang, StringRef File,
|
||||
StringRef Dir, StringRef Producer,
|
||||
bool isOptimized, StringRef Flags,
|
||||
unsigned RV,
|
||||
StringRef SplitName = StringRef());
|
||||
|
||||
/// createFile - Create a file descriptor to hold debugging information
|
||||
/// for a file.
|
||||
|
|
|
@ -30,7 +30,7 @@ static Constant *GetTagConstant(LLVMContext &VMContext, unsigned Tag) {
|
|||
}
|
||||
|
||||
DIBuilder::DIBuilder(Module &m)
|
||||
: M(m), VMContext(M.getContext()), TheCU(0), TempEnumTypes(0),
|
||||
: M(m), VMContext(M.getContext()), TempEnumTypes(0),
|
||||
TempRetainTypes(0), TempSubprograms(0), TempGVs(0), DeclareFn(0),
|
||||
ValueFn(0)
|
||||
{}
|
||||
|
@ -86,10 +86,11 @@ static MDNode *createFilePathPair(LLVMContext &VMContext, StringRef Filename,
|
|||
|
||||
/// createCompileUnit - A CompileUnit provides an anchor for all debugging
|
||||
/// information generated during this instance of compilation.
|
||||
void DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
|
||||
StringRef Directory, StringRef Producer,
|
||||
bool isOptimized, StringRef Flags,
|
||||
unsigned RunTimeVer, StringRef SplitName) {
|
||||
DICompileUnit DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
|
||||
StringRef Directory,
|
||||
StringRef Producer, bool isOptimized,
|
||||
StringRef Flags, unsigned RunTimeVer,
|
||||
StringRef SplitName) {
|
||||
assert(((Lang <= dwarf::DW_LANG_Python && Lang >= dwarf::DW_LANG_C89) ||
|
||||
(Lang <= dwarf::DW_LANG_hi_user && Lang >= dwarf::DW_LANG_lo_user)) &&
|
||||
"Invalid Language tag");
|
||||
|
@ -121,11 +122,14 @@ void DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
|
|||
TempImportedModules,
|
||||
MDString::get(VMContext, SplitName)
|
||||
};
|
||||
TheCU = DICompileUnit(MDNode::get(VMContext, Elts));
|
||||
|
||||
MDNode *CUNode = MDNode::get(VMContext, Elts);
|
||||
|
||||
// Create a named metadata so that it is easier to find cu in a module.
|
||||
NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.cu");
|
||||
NMD->addOperand(TheCU);
|
||||
NMD->addOperand(CUNode);
|
||||
|
||||
return DICompileUnit(CUNode);
|
||||
}
|
||||
|
||||
static DIImportedEntity
|
||||
|
@ -216,7 +220,7 @@ DIBasicType DIBuilder::createUnspecifiedType(StringRef Name) {
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, dwarf::DW_TAG_unspecified_type),
|
||||
NULL, // Filename
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
MDString::get(VMContext, Name),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), 0), // Size
|
||||
|
@ -244,7 +248,7 @@ DIBuilder::createBasicType(StringRef Name, uint64_t SizeInBits,
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, dwarf::DW_TAG_base_type),
|
||||
NULL, // File/directory name
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
MDString::get(VMContext, Name),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), SizeInBits),
|
||||
|
@ -263,7 +267,7 @@ DIDerivedType DIBuilder::createQualifiedType(unsigned Tag, DIType FromTy) {
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, Tag),
|
||||
NULL, // Filename
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
MDString::get(VMContext, StringRef()), // Empty name.
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), 0), // Size
|
||||
|
@ -283,7 +287,7 @@ DIBuilder::createPointerType(DIType PointeeTy, uint64_t SizeInBits,
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, dwarf::DW_TAG_pointer_type),
|
||||
NULL, // Filename
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
MDString::get(VMContext, Name),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), SizeInBits),
|
||||
|
@ -301,7 +305,7 @@ DIDerivedType DIBuilder::createMemberPointerType(DIType PointeeTy,
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, dwarf::DW_TAG_ptr_to_member_type),
|
||||
NULL, // Filename
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
NULL,
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0), // Line
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), 0),
|
||||
|
@ -737,7 +741,7 @@ DICompositeType DIBuilder::createArrayType(uint64_t Size, uint64_t AlignInBits,
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, dwarf::DW_TAG_array_type),
|
||||
NULL, // Filename/Directory,
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
MDString::get(VMContext, ""),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), Size),
|
||||
|
@ -760,7 +764,7 @@ DICompositeType DIBuilder::createVectorType(uint64_t Size, uint64_t AlignInBits,
|
|||
Value *Elts[] = {
|
||||
GetTagConstant(VMContext, dwarf::DW_TAG_array_type),
|
||||
NULL, // Filename/Directory,
|
||||
NULL, //TheCU,
|
||||
NULL, // Unused
|
||||
MDString::get(VMContext, ""),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), 0),
|
||||
ConstantInt::get(Type::getInt64Ty(VMContext), Size),
|
||||
|
|
|
@ -289,9 +289,9 @@ private:
|
|||
"LLVM Version " STR(LLVM_VERSION_MAJOR) "." STR(LLVM_VERSION_MINOR);
|
||||
}
|
||||
|
||||
Builder.createCompileUnit(dwarf::DW_LANG_C99, Filename, Directory, Producer,
|
||||
IsOptimized, Flags, RuntimeVersion);
|
||||
CUNode = Builder.getCU();
|
||||
CUNode =
|
||||
Builder.createCompileUnit(dwarf::DW_LANG_C99, Filename, Directory,
|
||||
Producer, IsOptimized, Flags, RuntimeVersion);
|
||||
|
||||
if (CUToReplace)
|
||||
CUToReplace->replaceAllUsesWith(const_cast<MDNode *>(CUNode));
|
||||
|
|
Loading…
Reference in New Issue