mirror of
https://github.com/intel/llvm.git
synced 2026-01-27 14:50:42 +08:00
Add dumping support for locations, make -dumptokens print out the location
info of each token. llvm-svn: 44741
This commit is contained in:
@@ -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!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user