clang-replace: Write merged changes to disk

Functionality for clang-replace completed with the addition of the ability to
write merged replacements to disk.

Test added.

Differential Revision: http://llvm-reviews.chandlerc.com/D1460

llvm-svn: 189014
diff --git a/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp b/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp
index f085ed8..dae4652 100644
--- a/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp
+++ b/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp
@@ -15,6 +15,7 @@
 #include "ApplyReplacements.h"
 #include "clang/Basic/Diagnostic.h"
 #include "clang/Basic/DiagnosticOptions.h"
+#include "clang/Basic/SourceManager.h"
 #include "llvm/Support/CommandLine.h"
 
 using namespace llvm;
@@ -43,8 +44,13 @@
     return false;
   }
 
+  FileManager Files((FileSystemOptions()));
+  SourceManager SM(Diagnostics, Files);
+
   FileToReplacementsMap GroupedReplacements;
-  if (mergeAndDeduplicate(TUs, GroupedReplacements, Diagnostics))
-    return 0;
-  return 1;
+  if (!mergeAndDeduplicate(TUs, GroupedReplacements, SM))
+    return 1;
+
+  if (!applyReplacements(GroupedReplacements, SM))
+    return 1;
 }