Index: include/clang/Frontend/ASTUnit.h
===================================================================
--- include/clang/Frontend/ASTUnit.h	(revision 167370)
+++ include/clang/Frontend/ASTUnit.h	(working copy)
@@ -829,13 +829,6 @@
   ///
   /// \returns True if an error occurred, false otherwise.
   bool serialize(raw_ostream &OS);
-  
-  virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
-                             Module::NameVisibilityKind Visibility,
-                             bool IsInclusionDirective) {
-    // ASTUnit doesn't know how to load modules (not that this matters).
-    return 0;
-  }
 };
 
 } // namespace clang
Index: include/clang/Lex/ModuleLoader.h
===================================================================
--- include/clang/Lex/ModuleLoader.h	(revision 167370)
+++ include/clang/Lex/ModuleLoader.h	(working copy)
@@ -57,7 +57,7 @@
   /// NULL to indicate that the module could not be loaded.
   virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
                              Module::NameVisibilityKind Visibility,
-                             bool IsInclusionDirective) = 0;
+                             bool IsInclusionDirective);
 };
   
 }
Index: lib/Lex/Preprocessor.cpp
===================================================================
--- lib/Lex/Preprocessor.cpp	(revision 167370)
+++ lib/Lex/Preprocessor.cpp	(working copy)
@@ -719,6 +719,11 @@
 
 ModuleLoader::~ModuleLoader() { }
 
+Module *ModuleLoader::loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
+  Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {
+    return 0;
+}
+
 CommentHandler::~CommentHandler() { }
 
 CodeCompletionHandler::~CodeCompletionHandler() { }
Index: unittests/Basic/SourceManagerTest.cpp
===================================================================
--- unittests/Basic/SourceManagerTest.cpp	(revision 167370)
+++ unittests/Basic/SourceManagerTest.cpp	(working copy)
@@ -52,14 +52,6 @@
   IntrusiveRefCntPtr<TargetInfo> Target;
 };
 
-class VoidModuleLoader : public ModuleLoader {
-  virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
-                             Module::NameVisibilityKind Visibility,
-                             bool IsInclusionDirective) {
-    return 0;
-  }
-};
-
 TEST_F(SourceManagerTest, isBeforeInTranslationUnit) {
   const char *source =
     "#define M(x) [x]\n"
@@ -67,7 +59,7 @@
   MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source);
   FileID mainFileID = SourceMgr.createMainFileIDForMemBuffer(buf);
 
-  VoidModuleLoader ModLoader;
+  ModuleLoader ModLoader;
   HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
                           &*Target);
   Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
@@ -182,7 +174,7 @@
                                                  headerBuf->getBufferSize(), 0);
   SourceMgr.overrideFileContents(headerFile, headerBuf);
 
-  VoidModuleLoader ModLoader;
+  ModuleLoader ModLoader;
   HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
                           &*Target);
   Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
@@ -279,7 +271,7 @@
                                                  headerBuf->getBufferSize(), 0);
   SourceMgr.overrideFileContents(headerFile, headerBuf);
 
-  VoidModuleLoader ModLoader;
+  ModuleLoader ModLoader;
   HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
                           &*Target);
   Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
Index: unittests/Lex/LexerTest.cpp
===================================================================
--- unittests/Lex/LexerTest.cpp	(revision 167370)
+++ unittests/Lex/LexerTest.cpp	(working copy)
@@ -52,14 +52,6 @@
   IntrusiveRefCntPtr<TargetInfo> Target;
 };
 
-class VoidModuleLoader : public ModuleLoader {
-  virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
-                             Module::NameVisibilityKind Visibility,
-                             bool IsInclusionDirective) {
-    return 0;
-  }
-};
-
 TEST_F(LexerTest, LexAPI) {
   const char *source =
     "#define M(x) [x]\n"
@@ -73,7 +65,7 @@
   MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source);
   (void)SourceMgr.createMainFileIDForMemBuffer(buf);
 
-  VoidModuleLoader ModLoader;
+  ModuleLoader ModLoader;
   HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
                           Target.getPtr());
   Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
Index: unittests/Lex/PPCallbacksTest.cpp
===================================================================
--- unittests/Lex/PPCallbacksTest.cpp	(revision 167370)
+++ unittests/Lex/PPCallbacksTest.cpp	(working copy)
@@ -30,15 +30,6 @@
 
 namespace {
 
-// Stub out module loading.
-class VoidModuleLoader : public ModuleLoader {
-  virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
-    Module::NameVisibilityKind Visibility,
-    bool IsInclusionDirective) {
-      return 0;
-  }
-};
-
 // Stub to collect data from InclusionDirective callbacks.
 class InclusionDirectiveCallbacks : public PPCallbacks {
 public:
@@ -126,7 +117,7 @@
     MemoryBuffer *Buf = MemoryBuffer::getMemBuffer(SourceText);
     (void)SourceMgr.createMainFileIDForMemBuffer(Buf);
 
-    VoidModuleLoader ModLoader;
+    ModuleLoader ModLoader;
 
     IntrusiveRefCntPtr<HeaderSearchOptions> HSOpts = new HeaderSearchOptions();
     HeaderSearch HeaderInfo(HSOpts, FileMgr, Diags, LangOpts, Target.getPtr());
Index: unittests/Lex/PreprocessingRecordTest.cpp
===================================================================
--- unittests/Lex/PreprocessingRecordTest.cpp	(revision 167370)
+++ unittests/Lex/PreprocessingRecordTest.cpp	(working copy)
@@ -53,14 +53,6 @@
   IntrusiveRefCntPtr<TargetInfo> Target;
 };
 
-class VoidModuleLoader : public ModuleLoader {
-  virtual Module *loadModule(SourceLocation ImportLoc, ModuleIdPath Path,
-                             Module::NameVisibilityKind Visibility,
-                             bool IsInclusionDirective) {
-    return 0;
-  }
-};
-
 TEST_F(PreprocessingRecordTest, PPRecAPI) {
   const char *source =
       "0 1\n"
@@ -84,7 +76,7 @@
   MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source);
   SourceMgr.createMainFileIDForMemBuffer(buf);
 
-  VoidModuleLoader ModLoader;
+  ModuleLoader ModLoader;
   HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
                           Target.getPtr());
   Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts,Target.getPtr(),
