diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index 3f82c52..0562167 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -12,8 +12,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "LTOModule.h"
 #include "LTOCodeGenerator.h"
+#include "LTOModule.h"
 #include "llvm/Constants.h"
 #include "llvm/DerivedTypes.h"
 #include "llvm/Linker.h"
diff --git a/tools/lto/LTOCodeGenerator.h b/tools/lto/LTOCodeGenerator.h
index 83ad998..1b3bc09 100644
--- a/tools/lto/LTOCodeGenerator.h
+++ b/tools/lto/LTOCodeGenerator.h
@@ -4,71 +4,74 @@
 //
 // This file is distributed under the University of Illinois Open Source
 // License. See LICENSE.TXT for details.
-// 
-//===----------------------------------------------------------------------===//
-//
-// This file declares the LTOCodeGenerator class. 
 //
 //===----------------------------------------------------------------------===//
-
+//
+// This file declares the LTOCodeGenerator class.
+//
+//===----------------------------------------------------------------------===//
 
 #ifndef LTO_CODE_GENERATOR_H
 #define LTO_CODE_GENERATOR_H
 
 #include "llvm/Linker.h"
-#include "llvm/LLVMContext.h"
 #include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/SmallPtrSet.h"
-
+#include "llvm-c/lto.h"
 #include <string>
 
+namespace llvm {
+  class LLVMContext;
+  class GlobalValue;
+  class Mangler;
+  class MemoryBuffer;
+  class TargetMachine;
+  class raw_ostream;
+}
 
-//
-// C++ class which implements the opaque lto_code_gen_t
-//
-
+//===----------------------------------------------------------------------===//
+/// LTOCodeGenerator - C++ class which implements the opaque lto_code_gen_t
+/// type.
+///
 struct LTOCodeGenerator {
-    static const char*        getVersionString();
-    
-                            LTOCodeGenerator();
-                            ~LTOCodeGenerator();
-                            
-    bool                addModule(struct LTOModule*, std::string& errMsg);
-    bool                setDebugInfo(lto_debug_model, std::string& errMsg);
-    bool                setCodePICModel(lto_codegen_model, std::string& errMsg);
-    void                setCpu(const char *cpu);
-    void                addMustPreserveSymbol(const char* sym);
-    bool                writeMergedModules(const char* path, 
-                                                           std::string& errMsg);
-    bool                compile_to_file(const char** name, std::string& errMsg);
-    const void*         compile(size_t* length, std::string& errMsg);
-    void                setCodeGenDebugOptions(const char *opts); 
-private:
-    bool                generateObjectFile(llvm::raw_ostream& out, 
-                                           std::string& errMsg);
-    void                applyScopeRestrictions();
-    void                applyRestriction(llvm::GlobalValue &GV,
-                                     std::vector<const char*> &mustPreserveList,
-                        llvm::SmallPtrSet<llvm::GlobalValue*, 8> &asmUsed,
-                                         llvm::Mangler &mangler);
-    bool                determineTarget(std::string& errMsg);
-    
-    typedef llvm::StringMap<uint8_t> StringSet;
+  static const char *getVersionString();
 
-    llvm::LLVMContext&          _context;
-    llvm::Linker                _linker;
-    llvm::TargetMachine*        _target;
-    bool                        _emitDwarfDebugInfo;
-    bool                        _scopeRestrictionsDone;
-    lto_codegen_model           _codeModel;
-    StringSet                   _mustPreserveSymbols;
-    StringSet                   _asmUndefinedRefs;
-    llvm::MemoryBuffer*         _nativeObjectFile;
-    std::vector<char*>          _codegenOptions;
-    std::string                 _mCpu;
-    std::string                 _nativeObjectPath;
+  LTOCodeGenerator();
+  ~LTOCodeGenerator();
+
+  bool addModule(struct LTOModule*, std::string &errMsg);
+  bool setDebugInfo(lto_debug_model, std::string &errMsg);
+  bool setCodePICModel(lto_codegen_model, std::string &errMsg);
+  void setCpu(const char *cpu);
+  void addMustPreserveSymbol(const char *sym);
+  bool writeMergedModules(const char *path, std::string &errMsg);
+  bool compile_to_file(const char **name, std::string &errMsg);
+  const void *compile(size_t *length, std::string &errMsg);
+  void setCodeGenDebugOptions(const char *opts);
+
+private:
+  bool generateObjectFile(llvm::raw_ostream &out, std::string &errMsg);
+  void applyScopeRestrictions();
+  void applyRestriction(llvm::GlobalValue &GV,
+                        std::vector<const char*> &mustPreserveList,
+                        llvm::SmallPtrSet<llvm::GlobalValue*, 8> &asmUsed,
+                        llvm::Mangler &mangler);
+  bool determineTarget(std::string &errMsg);
+
+  typedef llvm::StringMap<uint8_t> StringSet;
+
+  llvm::LLVMContext&          _context;
+  llvm::Linker                _linker;
+  llvm::TargetMachine*        _target;
+  bool                        _emitDwarfDebugInfo;
+  bool                        _scopeRestrictionsDone;
+  lto_codegen_model           _codeModel;
+  StringSet                   _mustPreserveSymbols;
+  StringSet                   _asmUndefinedRefs;
+  llvm::MemoryBuffer*         _nativeObjectFile;
+  std::vector<char*>          _codegenOptions;
+  std::string                 _mCpu;
+  std::string                 _nativeObjectPath;
 };
 
 #endif // LTO_CODE_GENERATOR_H
-
diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp
index 45890a5..fb66973 100644
--- a/tools/lto/LTOModule.cpp
+++ b/tools/lto/LTOModule.cpp
@@ -17,7 +17,6 @@
 #include "llvm/LLVMContext.h"
 #include "llvm/Module.h"
 #include "llvm/Bitcode/ReaderWriter.h"
-#include "llvm/MC/MCAsmInfo.h"
 #include "llvm/MC/MCExpr.h"
 #include "llvm/MC/MCInst.h"
 #include "llvm/MC/MCStreamer.h"
@@ -26,21 +25,16 @@
 #include "llvm/MC/MCTargetAsmParser.h"
 #include "llvm/MC/SubtargetFeature.h"
 #include "llvm/MC/MCParser/MCAsmParser.h"
-#include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/Support/Host.h"
-#include "llvm/Support/MathExtras.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/Process.h"
 #include "llvm/Support/SourceMgr.h"
-#include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/system_error.h"
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/ADT/Triple.h"
-
 using namespace llvm;
 
 LTOModule::LTOModule(llvm::Module *m, llvm::TargetMachine *t)
diff --git a/tools/lto/LTOModule.h b/tools/lto/LTOModule.h
index e5f6dea..cafb927 100644
--- a/tools/lto/LTOModule.h
+++ b/tools/lto/LTOModule.h
@@ -20,13 +20,10 @@
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/ADT/StringMap.h"
-
 #include "llvm-c/lto.h"
-
 #include <vector>
 #include <string>
 
-
 // Forward references to llvm classes.
 namespace llvm {
   class Function;
@@ -35,9 +32,9 @@
   class Value;
 }
 
-//
-// C++ class which implements the opaque lto_module_t type.
-//
+//===----------------------------------------------------------------------===//
+/// LTOModule - C++ class which implements the opaque lto_module_t type.
+///
 struct LTOModule {
 private:
   typedef llvm::StringMap<uint8_t> StringSet;
