/// being #included from the specified IncludePosition. This returns 0 on
/// error and translates NULL into standard input.
FileID createFileID(const FileEntry *SourceFile, SourceLocation IncludePos,
- SrcMgr::CharacteristicKind FileCharacter) {
+ SrcMgr::CharacteristicKind FileCharacter) {
const SrcMgr::ContentCache *IR = getContentCache(SourceFile);
if (IR == 0) return FileID(); // Error opening file?
return createFileID(IR, IncludePos, FileCharacter);
/// createMainFileID - Create the FileID for the main source file.
FileID createMainFileID(const FileEntry *SourceFile,
- SourceLocation IncludePos) {
-
+ SourceLocation IncludePos) {
assert(MainFileID.isInvalid() && "MainFileID already set!");
MainFileID = createFileID(SourceFile, IncludePos, SrcMgr::C_User);
return MainFileID;
return getContentCache(FID)->getBuffer();
}
- const llvm::MemoryBuffer *getBuffer(SourceLocation Loc) const {
- return getContentCacheForLoc(Loc)->getBuffer();
- }
-
-
/// getBufferData - Return a pointer to the start and end of the character
/// data for the specified FileID.
std::pair<const char*, const char*> getBufferData(SourceLocation Loc) const;
/// data for the specified location.
std::pair<const char*, const char*>
SourceManager::getBufferData(SourceLocation Loc) const {
- const llvm::MemoryBuffer *Buf = getBuffer(Loc);
+ const llvm::MemoryBuffer *Buf = getBuffer(getCanonicalFileID(Loc));
return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd());
}