Implement a FIXME: correctly stringify filenames generated by __LINE__.
llvm-svn: 38622
This commit is contained in:
parent
4d5e1a72f4
commit
0766e592ce
|
|
@ -622,8 +622,16 @@ void Preprocessor::ExpandBuiltinMacro(LexerToken &Tok) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Escape this filename correctly.
|
// Escape this filename. Turn '\' -> '\\' '"' -> '\"'
|
||||||
std::string FN = '"' + SourceMgr.getSourceName(Loc) + '"';
|
std::string FN = SourceMgr.getSourceName(Loc);
|
||||||
|
for (unsigned i = 0, e = FN.size(); i != e; ++i)
|
||||||
|
if (FN[i] == '\\' || FN[i] == '"') {
|
||||||
|
FN.insert(FN.begin()+i, '\\');
|
||||||
|
++i; ++e;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add quotes.
|
||||||
|
FN = '"' + FN + '"';
|
||||||
Tok.SetKind(tok::string_literal);
|
Tok.SetKind(tok::string_literal);
|
||||||
Tok.SetLength(FN.size());
|
Tok.SetLength(FN.size());
|
||||||
Tok.SetLocation(ScratchBuf->getToken(&FN[0], FN.size(), Tok.getLocation()));
|
Tok.SetLocation(ScratchBuf->getToken(&FN[0], FN.size(), Tok.getLocation()));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue