diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-19 20:40:35 +0000 | 
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-19 20:40:35 +0000 | 
| commit | 7c06d8666b3f81051787159d2d5c7ff84270ae10 (patch) | |
| tree | ada454a1a3f1276706bc219f9d78810fcc2ddb8d /clang/lib/Basic | |
| parent | 532c5196b016847ee4fcdb06bb6b1cbee774f3be (diff) | |
| download | bcm5719-llvm-7c06d8666b3f81051787159d2d5c7ff84270ae10.tar.gz bcm5719-llvm-7c06d8666b3f81051787159d2d5c7ff84270ae10.zip  | |
[libclang] When getting a source location from a file:line:col triplet
check whether the requested location points inside the precompiled preamble,
in which case the returned source location will be a "loaded" one.
llvm-svn: 140060
Diffstat (limited to 'clang/lib/Basic')
| -rw-r--r-- | clang/lib/Basic/SourceManager.cpp | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index 38cc9946be1..68c98fe02c6 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -1324,7 +1324,8 @@ static llvm::Optional<ino_t> getActualFileInode(const FileEntry *File) {  /// If the source file is included multiple times, the source location will  /// be based upon an arbitrary inclusion.  SourceLocation SourceManager::translateFileLineCol(const FileEntry *SourceFile, -                                                  unsigned Line, unsigned Col) { +                                                  unsigned Line, +                                                  unsigned Col) const {    assert(SourceFile && "Null source file!");    assert(Line && Col && "Line and column should start from 1!"); @@ -1439,7 +1440,8 @@ SourceLocation SourceManager::translateFileLineCol(const FileEntry *SourceFile,  /// \brief Get the source location in \arg FID for the given line:col.  /// Returns null location if \arg FID is not a file SLocEntry.  SourceLocation SourceManager::translateLineCol(FileID FID, -                                               unsigned Line, unsigned Col) { +                                               unsigned Line, +                                               unsigned Col) const {    if (FID.isInvalid())      return SourceLocation(); @@ -1496,7 +1498,8 @@ SourceLocation SourceManager::translateLineCol(FileID FID,  ///     0   -> SourceLocation()  ///     100 -> Expanded macro arg location  ///     110 -> SourceLocation() -void SourceManager::computeMacroArgsCache(ContentCache *Content, FileID FID) { +void SourceManager::computeMacroArgsCache(ContentCache *Content, +                                          FileID FID) const {    assert(!Content->MacroArgsCache);    assert(!FID.isInvalid()); @@ -1575,7 +1578,8 @@ void SourceManager::computeMacroArgsCache(ContentCache *Content, FileID FID) {  ///             ^  /// Passing a file location pointing at 'foo', will yield a macro location  /// where 'foo' was expanded into. -SourceLocation SourceManager::getMacroArgExpandedLocation(SourceLocation Loc) { +SourceLocation +SourceManager::getMacroArgExpandedLocation(SourceLocation Loc) const {    if (Loc.isInvalid() || !Loc.isFileID())      return Loc;  | 

