mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +00:00
Provide method to print variable's extended name which includes inline location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137095 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c19e6dd64f
commit
48d726fbce
@ -615,7 +615,7 @@ namespace llvm {
|
||||
}
|
||||
|
||||
/// getInlinedAt - If this variable is inlined then return inline location.
|
||||
MDNode *getInlinedAt();
|
||||
MDNode *getInlinedAt() const;
|
||||
|
||||
/// Verify - Verify that a variable descriptor is well formed.
|
||||
bool Verify() const;
|
||||
@ -648,6 +648,8 @@ namespace llvm {
|
||||
/// print - print variable.
|
||||
void print(raw_ostream &OS) const;
|
||||
|
||||
void printExtendedName(raw_ostream &OS) const;
|
||||
|
||||
/// dump - print variable to dbgs() with a newline.
|
||||
void dump() const;
|
||||
};
|
||||
|
@ -117,7 +117,7 @@ unsigned DIVariable::getNumAddrElements() const {
|
||||
}
|
||||
|
||||
/// getInlinedAt - If this variable is inlined then return inline location.
|
||||
MDNode *DIVariable::getInlinedAt() {
|
||||
MDNode *DIVariable::getInlinedAt() const {
|
||||
if (getVersion() <= llvm::LLVMDebugVersion9)
|
||||
return NULL;
|
||||
return dyn_cast_or_null<MDNode>(DbgNode->getOperand(7));
|
||||
@ -674,6 +674,42 @@ void DIGlobalVariable::print(raw_ostream &OS) const {
|
||||
OS << "]\n";
|
||||
}
|
||||
|
||||
static void printDebugLoc(DebugLoc DL, raw_ostream &CommentOS,
|
||||
const LLVMContext &Ctx) {
|
||||
if (!DL.isUnknown()) { // Print source line info.
|
||||
DIScope Scope(DL.getScope(Ctx));
|
||||
// Omit the directory, because it's likely to be long and uninteresting.
|
||||
if (Scope.Verify())
|
||||
CommentOS << Scope.getFilename();
|
||||
else
|
||||
CommentOS << "<unknown>";
|
||||
CommentOS << ':' << DL.getLine();
|
||||
if (DL.getCol() != 0)
|
||||
CommentOS << ':' << DL.getCol();
|
||||
DebugLoc InlinedAtDL = DebugLoc::getFromDILocation(DL.getInlinedAt(Ctx));
|
||||
if (!InlinedAtDL.isUnknown()) {
|
||||
CommentOS << " @[ ";
|
||||
printDebugLoc(InlinedAtDL, CommentOS, Ctx);
|
||||
CommentOS << " ]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DIVariable::printExtendedName(raw_ostream &OS) const {
|
||||
const LLVMContext &Ctx = DbgNode->getContext();
|
||||
StringRef Res = getName();
|
||||
if (!Res.empty())
|
||||
OS << Res << "," << getLineNumber();
|
||||
if (MDNode *InlinedAt = getInlinedAt()) {
|
||||
DebugLoc InlinedAtDL = DebugLoc::getFromDILocation(InlinedAt);
|
||||
if (!InlinedAtDL.isUnknown()) {
|
||||
OS << " @[";
|
||||
printDebugLoc(InlinedAtDL, OS, Ctx);
|
||||
OS << "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// print - Print variable.
|
||||
void DIVariable::print(raw_ostream &OS) const {
|
||||
StringRef Res = getName();
|
||||
|
Loading…
Reference in New Issue
Block a user