diff --git a/clang/tools/clang-cc/Options.cpp b/clang/tools/clang-cc/Options.cpp
index e4f97be..f8e1566 100644
--- a/clang/tools/clang-cc/Options.cpp
+++ b/clang/tools/clang-cc/Options.cpp
@@ -13,6 +13,7 @@
 
 #include "Options.h"
 #include "clang/Frontend/CompileOptions.h"
+#include "clang/Frontend/DiagnosticOptions.h"
 #include "clang/Frontend/HeaderSearchOptions.h"
 #include "clang/Frontend/PCHReader.h"
 #include "clang/Frontend/PreprocessorOptions.h"
@@ -87,6 +88,51 @@
 }
 
 //===----------------------------------------------------------------------===//
+// Diagnostic Options
+//===----------------------------------------------------------------------===//
+
+namespace diagnosticoptions {
+
+static llvm::cl::opt<bool>
+NoShowColumn("fno-show-column",
+             llvm::cl::desc("Do not include column number on diagnostics"));
+
+static llvm::cl::opt<bool>
+NoShowLocation("fno-show-source-location",
+               llvm::cl::desc("Do not include source location information with"
+                              " diagnostics"));
+
+static llvm::cl::opt<bool>
+NoCaretDiagnostics("fno-caret-diagnostics",
+                   llvm::cl::desc("Do not include source line and caret with"
+                                  " diagnostics"));
+
+static llvm::cl::opt<bool>
+NoDiagnosticsFixIt("fno-diagnostics-fixit-info",
+                   llvm::cl::desc("Do not include fixit information in"
+                                  " diagnostics"));
+
+static llvm::cl::opt<bool>
+PrintSourceRangeInfo("fdiagnostics-print-source-range-info",
+                     llvm::cl::desc("Print source range spans in numeric form"));
+
+static llvm::cl::opt<bool>
+PrintDiagnosticOption("fdiagnostics-show-option",
+             llvm::cl::desc("Print diagnostic name with mappable diagnostics"));
+
+static llvm::cl::opt<unsigned>
+MessageLength("fmessage-length",
+              llvm::cl::desc("Format message diagnostics so that they fit "
+                             "within N columns or fewer, when possible."),
+              llvm::cl::value_desc("N"));
+
+static llvm::cl::opt<bool>
+PrintColorDiagnostic("fcolor-diagnostics",
+                     llvm::cl::desc("Use colors in diagnostics"));
+
+}
+
+//===----------------------------------------------------------------------===//
 // Language Options
 //===----------------------------------------------------------------------===//
 
@@ -250,7 +296,6 @@
               llvm::cl::desc("Recognize and construct Pascal-style "
                              "string literals"));
 
-// FIXME: Move to CompileOptions.
 static llvm::cl::opt<bool>
 Rtti("frtti", llvm::cl::init(true),
      llvm::cl::desc("Enable generation of rtti information"));
@@ -454,6 +499,19 @@
   Opts.MergeAllConstants = !NoMergeConstants;
 }
 
+void clang::InitializeDiagnosticOptions(DiagnosticOptions &Opts) {
+  using namespace diagnosticoptions;
+
+  Opts.ShowColumn = !NoShowColumn;
+  Opts.ShowLocation = !NoShowLocation;
+  Opts.ShowCarets = !NoCaretDiagnostics;
+  Opts.ShowFixits = !NoDiagnosticsFixIt;
+  Opts.ShowSourceRanges = PrintSourceRangeInfo;
+  Opts.ShowOptionNames = PrintDiagnosticOption;
+  Opts.ShowColors = PrintColorDiagnostic;
+  Opts.MessageLength = MessageLength;
+}
+
 void clang::InitializeHeaderSearchOptions(HeaderSearchOptions &Opts,
                                           llvm::StringRef BuiltinIncludePath,
                                           bool Verbose,
