Add dumping support for locations, make -dumptokens print out the location

info of each token.

llvm-svn: 44741
This commit is contained in:
Chris Lattner
2007-12-09 20:31:55 +00:00
parent 64443973c0
commit 615315f307
2 changed files with 21 additions and 1 deletions

View File

@@ -133,6 +133,7 @@ void Preprocessor::DumpToken(const Token &Tok, bool DumpFlags) const {
<< getSpelling(Tok) << "'";
if (!DumpFlags) return;
std::cerr << "\t";
if (Tok.isAtStartOfLine())
std::cerr << " [StartOfLine]";
@@ -145,6 +146,24 @@ void Preprocessor::DumpToken(const Token &Tok, bool DumpFlags) const {
std::cerr << " [UnClean='" << std::string(Start, Start+Tok.getLength())
<< "']";
}
std::cerr << "\tLoc=<";
DumpLocation(Tok.getLocation());
std::cerr << ">";
}
void Preprocessor::DumpLocation(SourceLocation Loc) const {
SourceLocation LogLoc = SourceMgr.getLogicalLoc(Loc);
std::cerr << SourceMgr.getSourceName(LogLoc) << ':'
<< SourceMgr.getLineNumber(LogLoc) << ':'
<< SourceMgr.getLineNumber(LogLoc);
SourceLocation PhysLoc = SourceMgr.getPhysicalLoc(Loc);
if (PhysLoc != LogLoc) {
std::cerr << " <PhysLoc=";
DumpLocation(PhysLoc);
std::cerr << ">";
}
}
void Preprocessor::DumpMacro(const MacroInfo &MI) const {
@@ -1140,7 +1159,7 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
Tok.setLocation(CreateString(TmpBuffer, Len, Tok.getLocation()));
} else {
assert(0 && "Unknown identifier!");
}
}
}
//===----------------------------------------------------------------------===//

View File

@@ -310,6 +310,7 @@ public:
/// DumpToken - Print the token to stderr, used for debugging.
///
void DumpToken(const Token &Tok, bool DumpFlags = false) const;
void DumpLocation(SourceLocation Loc) const;
void DumpMacro(const MacroInfo &MI) const;
/// AdvanceToTokenCharacter - Given a location that specifies the start of a