forked from OSchip/llvm-project
more plumbing for #line propagation. Use happy bit #3
out of FileInfo :) llvm-svn: 63672
This commit is contained in:
parent
2032cadd0f
commit
6e0e1f49a5
|
@ -161,6 +161,16 @@ namespace SrcMgr {
|
|||
CharacteristicKind getFileCharacteristic() const {
|
||||
return (CharacteristicKind)(Data & 3);
|
||||
}
|
||||
|
||||
/// hasLineDirectives - Return true if this FileID has #line directives in
|
||||
/// it.
|
||||
bool hasLineDirectives() const { return (Data & 4) != 0; }
|
||||
|
||||
/// setHasLineDirectives - Set the flag that indicates that this FileID has
|
||||
/// line table entries associated with it.
|
||||
void setHasLineDirectives() {
|
||||
Data |= 4;
|
||||
}
|
||||
};
|
||||
|
||||
/// InstantiationInfo - Each InstantiationInfo encodes the Instantiation
|
||||
|
|
|
@ -84,7 +84,8 @@ public:
|
|||
~LineTableInfo() {}
|
||||
|
||||
unsigned getLineTableFilenameID(const char *Ptr, unsigned Len);
|
||||
|
||||
void AddLineNote(FileID FID, unsigned Offset,
|
||||
unsigned LineNo, int FilenameID);
|
||||
};
|
||||
} // namespace clang
|
||||
|
||||
|
@ -105,6 +106,16 @@ unsigned LineTableInfo::getLineTableFilenameID(const char *Ptr, unsigned Len) {
|
|||
return FilenamesByID.size()-1;
|
||||
}
|
||||
|
||||
/// AddLineNote - Add a line note to the line table that indicates that there
|
||||
/// is a #line at the specified FID/Offset location which changes the presumed
|
||||
/// location to LineNo/FilenameID.
|
||||
void LineTableInfo::AddLineNote(FileID FID, unsigned Offset,
|
||||
unsigned LineNo, int FilenameID) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// getLineTableFilenameID - Return the uniqued ID for the specified filename.
|
||||
///
|
||||
unsigned SourceManager::getLineTableFilenameID(const char *Ptr, unsigned Len) {
|
||||
|
@ -119,7 +130,16 @@ unsigned SourceManager::getLineTableFilenameID(const char *Ptr, unsigned Len) {
|
|||
/// unspecified.
|
||||
void SourceManager::AddLineNote(SourceLocation Loc, unsigned LineNo,
|
||||
int FilenameID) {
|
||||
std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
|
||||
|
||||
const SrcMgr::FileInfo &FileInfo = getSLocEntry(LocInfo.first).getFile();
|
||||
|
||||
// Remember that this file has #line directives now if it doesn't already.
|
||||
const_cast<SrcMgr::FileInfo&>(FileInfo).setHasLineDirectives();
|
||||
|
||||
if (LineTable == 0)
|
||||
LineTable = new LineTableInfo();
|
||||
LineTable->AddLineNote(LocInfo.first, LocInfo.second, LineNo, FilenameID);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue