diff --git a/lib/Lex/MacroArgs.cpp b/lib/Lex/MacroArgs.cpp
index c3d7738..7a805f3 100644
--- a/lib/Lex/MacroArgs.cpp
+++ b/lib/Lex/MacroArgs.cpp
@@ -120,12 +120,6 @@
     Result.push_back(Token());
     Token &Tok = Result.back();
     PP.Lex(Tok);
-    
-    // Eagerly resolve instantiation ID's to their spelling location.  This
-    // makes it so we only have to get the spelling loc once per macro argument
-    // preexpansion instead of once per each time the token is expanded.
-    if (!Tok.getLocation().isFileID())
-      Tok.setLocation(PP.getSourceManager().getSpellingLoc(Tok.getLocation()));
   } while (Result.back().isNot(tok::eof));
   
   // Pop the token stream off the top of the stack.  We know that the internal
diff --git a/lib/Lex/PPDirectives.cpp b/lib/Lex/PPDirectives.cpp
index 099dfb4..4bf012c 100644
--- a/lib/Lex/PPDirectives.cpp
+++ b/lib/Lex/PPDirectives.cpp
@@ -1206,12 +1206,6 @@
   if (MI->isObjectLike()) {
     // Object-like macros are very simple, just read their body.
     while (Tok.isNot(tok::eom)) {
-      // If this token has a virtual location, resolve it down to its spelling
-      // location.  This is not strictly needed, but avoids extra resolutions
-      // for macros that are expanded frequently.
-      if (!Tok.getLocation().isFileID())
-        Tok.setLocation(SourceMgr.getSpellingLoc(Tok.getLocation()));
-      
       MI->AddTokenToBody(Tok);
       // Get the next token of the macro.
       LexUnexpandedToken(Tok);
@@ -1221,12 +1215,6 @@
     // Otherwise, read the body of a function-like macro.  This has to validate
     // the # (stringize) operator.
     while (Tok.isNot(tok::eom)) {
-      // If this token has a virtual location, resolve it down to its spelling
-      // location.  This is not strictly needed, but avoids extra resolutions
-      // for macros that are expanded frequently.
-      if (!Tok.getLocation().isFileID())
-        Tok.setLocation(SourceMgr.getSpellingLoc(Tok.getLocation()));
-      
       MI->AddTokenToBody(Tok);
 
       // Check C99 6.10.3.2p1: ensure that # operators are followed by macro
diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp
index b3e921c..8eada60 100644
--- a/lib/Lex/PPMacroExpansion.cpp
+++ b/lib/Lex/PPMacroExpansion.cpp
@@ -340,13 +340,6 @@
           if (!MI->isEnabled())
             Tok.setFlag(Token::DisableExpand);
       }
-      
-      // If this token has instantiation location, resolve it down to its
-      // spelling location.  This is not strictly needed, but avoids extra
-      // resolutions for macros that are expanded frequently.
-      if (!Tok.getLocation().isFileID())
-        Tok.setLocation(SourceMgr.getSpellingLoc(Tok.getLocation()));
-  
       ArgTokens.push_back(Tok);
     }
 
@@ -359,7 +352,7 @@
     Token EOFTok;
     EOFTok.startToken();
     EOFTok.setKind(tok::eof);
-    EOFTok.setLocation(SourceMgr.getSpellingLoc(Tok.getLocation()));
+    EOFTok.setLocation(Tok.getLocation());
     EOFTok.setLength(0);
     ArgTokens.push_back(EOFTok);
     ++NumActuals;
diff --git a/lib/Lex/TokenLexer.cpp b/lib/Lex/TokenLexer.cpp
index 7ae61be..40f6640 100644
--- a/lib/Lex/TokenLexer.cpp
+++ b/lib/Lex/TokenLexer.cpp
@@ -33,12 +33,6 @@
   CurToken = 0;
   
   InstantiateLoc = Tok.getLocation();
-
-  // If the instantiation loc is not already a FileID, resolve it here.  If we
-  // don't do this, we end up doing it once per token lexed.
-  if (!InstantiateLoc.isFileID())
-    InstantiateLoc = PP.getSourceManager().getInstantiationLoc(InstantiateLoc);
-  
   AtStartOfLine = Tok.isAtStartOfLine();
   HasLeadingSpace = Tok.hasLeadingSpace();
   Tokens = &*Macro->tokens_begin();
