mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-20 19:20:23 +00:00
Add dump() routines to help debug debug info :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63353 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
35247c3513
commit
bf3f5a08ee
@ -114,6 +114,9 @@ namespace llvm {
|
||||
|
||||
/// Verify - Verify that a compile unit is well formed.
|
||||
bool Verify() const;
|
||||
|
||||
/// dump - print compile unit.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIEnumerator - A wrapper for an enumerator (e.g. X and Y in 'enum {X,Y}').
|
||||
@ -189,6 +192,9 @@ namespace llvm {
|
||||
assert (0 && "Invalid DIDescriptor");
|
||||
return "";
|
||||
}
|
||||
|
||||
/// dump - print type.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIBasicType - A basic type, like 'int' or 'float'.
|
||||
@ -199,6 +205,9 @@ namespace llvm {
|
||||
unsigned getEncoding() const { return getUnsignedField(9); }
|
||||
std::string getFilename() const { return getStringField(10); }
|
||||
std::string getDirectory() const { return getStringField(11); }
|
||||
|
||||
/// dump - print basic type.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIDerivedType - A simple derived type, like a const qualified type,
|
||||
@ -213,6 +222,9 @@ namespace llvm {
|
||||
DIType getTypeDerivedFrom() const { return getFieldAs<DIType>(9); }
|
||||
std::string getFilename() const { return getStringField(10); }
|
||||
std::string getDirectory() const { return getStringField(11); }
|
||||
|
||||
/// dump - print derived type.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DICompositeType - This descriptor holds a type that can refer to multiple
|
||||
@ -228,6 +240,9 @@ namespace llvm {
|
||||
|
||||
/// Verify - Verify that a composite type descriptor is well formed.
|
||||
bool Verify() const;
|
||||
|
||||
/// dump - print composite type.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIGlobal - This is a common class for global variables and subprograms.
|
||||
@ -273,6 +288,9 @@ namespace llvm {
|
||||
assert (0 && "Invalid DIDescriptor");
|
||||
return "";
|
||||
}
|
||||
|
||||
/// dump - print global.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DISubprogram - This is a wrapper for a subprogram (e.g. a function).
|
||||
@ -285,6 +303,9 @@ namespace llvm {
|
||||
|
||||
/// Verify - Verify that a subprogram descriptor is well formed.
|
||||
bool Verify() const;
|
||||
|
||||
/// dump - print subprogram.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIGlobalVariable - This is a wrapper for a global variable.
|
||||
@ -298,6 +319,9 @@ namespace llvm {
|
||||
|
||||
/// Verify - Verify that a global variable descriptor is well formed.
|
||||
bool Verify() const;
|
||||
|
||||
/// dump - print global variable.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIVariable - This is a wrapper for a variable (e.g. parameter, local,
|
||||
@ -319,6 +343,9 @@ namespace llvm {
|
||||
|
||||
/// Verify - Verify that a variable descriptor is well formed.
|
||||
bool Verify() const;
|
||||
|
||||
/// dump - print variable.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
/// DIBlock - This is a wrapper for a block (e.g. a function, scope, etc).
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "llvm/Instructions.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Analysis/ValueTracking.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
using namespace llvm;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -870,3 +871,103 @@ namespace llvm {
|
||||
}
|
||||
}
|
||||
|
||||
/// dump - print compile unit.
|
||||
void DICompileUnit::dump() const {
|
||||
cerr << " [" << dwarf::LanguageString(getLanguage()) << "] ";
|
||||
cerr << " [" << getDirectory() << "/" << getFilename() << " ]";
|
||||
}
|
||||
|
||||
/// dump - print type.
|
||||
void DIType::dump() const {
|
||||
if (isNull()) return;
|
||||
if (!getName().empty())
|
||||
cerr << " [" << getName() << "] ";
|
||||
unsigned Tag = getTag();
|
||||
cerr << " [" << dwarf::TagString(Tag) << "] ";
|
||||
// TODO : Print context
|
||||
getCompileUnit().dump();
|
||||
cerr << " ["
|
||||
<< getLineNumber() << ", "
|
||||
<< getSizeInBits() << ", "
|
||||
<< getAlignInBits() << ", "
|
||||
<< getOffsetInBits()
|
||||
<< "] ";
|
||||
if (isPrivate())
|
||||
cerr << " [private] ";
|
||||
else if (isProtected())
|
||||
cerr << " [protected] ";
|
||||
if (isForwardDecl())
|
||||
cerr << " [fwd] ";
|
||||
|
||||
if (isBasicType(Tag))
|
||||
DIBasicType(GV).dump();
|
||||
else if (isDerivedType(Tag))
|
||||
DIDerivedType(GV).dump();
|
||||
else if (isCompositeType(Tag))
|
||||
DICompositeType(GV).dump();
|
||||
else {
|
||||
cerr << "Invalid DIType\n";
|
||||
return;
|
||||
}
|
||||
cerr << "\n";
|
||||
}
|
||||
|
||||
/// dump - print basic type.
|
||||
void DIBasicType::dump() const {
|
||||
cerr << " [" << dwarf::AttributeEncodingString(getEncoding()) << "] ";
|
||||
|
||||
}
|
||||
|
||||
/// dump - print derived type.
|
||||
void DIDerivedType::dump() const {
|
||||
cerr << "\n\t Derived From: "; getTypeDerivedFrom().dump();
|
||||
}
|
||||
|
||||
/// dump - print composite type.
|
||||
void DICompositeType::dump() const {
|
||||
DIArray A = getTypeArray();
|
||||
if (A.isNull())
|
||||
return;
|
||||
cerr << " [" << A.getNumElements() << " elements]";
|
||||
}
|
||||
|
||||
/// dump - print global.
|
||||
void DIGlobal::dump() const {
|
||||
|
||||
if (!getName().empty())
|
||||
cerr << " [" << getName() << "] ";
|
||||
unsigned Tag = getTag();
|
||||
cerr << " [" << dwarf::TagString(Tag) << "] ";
|
||||
// TODO : Print context
|
||||
getCompileUnit().dump();
|
||||
cerr << " [" << getLineNumber() << "] ";
|
||||
if (isLocalToUnit())
|
||||
cerr << " [local] ";
|
||||
if (isDefinition())
|
||||
cerr << " [def] ";
|
||||
|
||||
if (isGlobalVariable(Tag))
|
||||
DIGlobalVariable(GV).dump();
|
||||
|
||||
cerr << "\n";
|
||||
}
|
||||
|
||||
/// dump - print subprogram.
|
||||
void DISubprogram::dump() const {
|
||||
DIGlobal::dump();
|
||||
}
|
||||
|
||||
/// dump - print global variable.
|
||||
void DIGlobalVariable::dump() const {
|
||||
cerr << " ["; getGlobal()->dump(); cerr << "] ";
|
||||
}
|
||||
|
||||
/// dump - print variable.
|
||||
void DIVariable::dump() const {
|
||||
if (!getName().empty())
|
||||
cerr << " [" << getName() << "] ";
|
||||
getCompileUnit().dump();
|
||||
cerr << " [" << getLineNumber() << "] ";
|
||||
getType().dump();
|
||||
cerr << "\n";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user