]> granicus.if.org Git - clang/commitdiff
cache the PP's SourceManager.
authorChris Lattner <sabre@nondot.org>
Tue, 13 Apr 2010 00:06:42 +0000 (00:06 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 13 Apr 2010 00:06:42 +0000 (00:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101099 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/PrintPreprocessedOutput.cpp

index 27ea975833b8abcf5ba284a4c58ea42423d4ba50..a64f6e7c0c694b783ac1a76cd88109661c4920a0 100644 (file)
@@ -78,6 +78,7 @@ static void PrintMacroDefinition(const IdentifierInfo &II, const MacroInfo &MI,
 namespace {
 class PrintPPOutputPPCallbacks : public PPCallbacks {
   Preprocessor &PP;
+  SourceManager &SM;
   TokenConcatenation ConcatInfo;
 public:
   llvm::raw_ostream &OS;
@@ -94,7 +95,8 @@ private:
 public:
   PrintPPOutputPPCallbacks(Preprocessor &pp, llvm::raw_ostream &os,
                            bool lineMarkers, bool defines)
-     : PP(pp), ConcatInfo(PP), OS(os), DisableLineMarkers(lineMarkers),
+     : PP(pp), SM(PP.getSourceManager()),
+       ConcatInfo(PP), OS(os), DisableLineMarkers(lineMarkers),
        DumpDefines(defines) {
     CurLine = 0;
     CurFilename += "<uninit>";
@@ -119,7 +121,7 @@ public:
 
   bool HandleFirstTokOnLine(Token &Tok);
   bool MoveToLine(SourceLocation Loc) {
-    return MoveToLine(PP.getSourceManager().getPresumedLoc(Loc).getLine());
+    return MoveToLine(SM.getPresumedLoc(Loc).getLine());
   }
   bool MoveToLine(unsigned LineNo);
 
@@ -213,7 +215,7 @@ void PrintPPOutputPPCallbacks::FileChanged(SourceLocation Loc,
                                        SrcMgr::CharacteristicKind NewFileType) {
   // Unless we are exiting a #include, make sure to skip ahead to the line the
   // #include directive was at.
-  SourceManager &SourceMgr = PP.getSourceManager();
+  SourceManager &SourceMgr = SM;
   
   PresumedLoc UserLoc = SourceMgr.getPresumedLoc(Loc);
   unsigned NewLine = UserLoc.getLine()+1;
@@ -322,8 +324,7 @@ bool PrintPPOutputPPCallbacks::HandleFirstTokOnLine(Token &Tok) {
 
   // Print out space characters so that the first token on a line is
   // indented for easy reading.
-  const SourceManager &SourceMgr = PP.getSourceManager();
-  unsigned ColNo = SourceMgr.getInstantiationColumnNumber(Tok.getLocation());
+  unsigned ColNo = SM.getInstantiationColumnNumber(Tok.getLocation());
 
   // This hack prevents stuff like:
   // #define HASH #