diff --git a/lib/CodeGen/TargetInfo.cpp b/lib/CodeGen/TargetInfo.cpp
index c12e540..b1d8348 100644
--- a/lib/CodeGen/TargetInfo.cpp
+++ b/lib/CodeGen/TargetInfo.cpp
@@ -2650,7 +2650,7 @@
                                                   const {
   const FunctionDecl *FD = dyn_cast<FunctionDecl>(D);
   if (!FD) return;
-  
+
   llvm::CallingConv::ID CC = llvm::CallingConv::C;
   if (FD->hasAttr<MBlazeInterruptHandlerAttr>())
     CC = llvm::CallingConv::MBLAZE_INTR;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index c8a3ef7..aeeb674 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1058,7 +1058,7 @@
   // work around a linker bug;  see <rdar://problem/7651567>.
   if (getToolChain().getTriple().getOS() != llvm::Triple::Darwin)
     CmdArgs.push_back("-mconstructor-aliases");
-    
+
   if (Args.hasArg(options::OPT_mms_bitfields)) {
     CmdArgs.push_back("-mms-bitfields");
   }
@@ -1549,7 +1549,7 @@
           CmdArgs.push_back("-fobjc-dispatch-method=non-legacy");
       }
     }
-    
+
     // -fobjc-default-synthesize-properties=0 is default.
     if (Args.hasFlag(options::OPT_fobjc_default_synthesize_properties,
                      options::OPT_fno_objc_default_synthesize_properties,
@@ -1587,7 +1587,7 @@
                    options::OPT_mno_pascal_strings,
                    false))
     CmdArgs.push_back("-fpascal-strings");
-  
+
   if (Args.hasArg(options::OPT_mkernel) ||
       Args.hasArg(options::OPT_fapple_kext)) {
     if (!Args.hasArg(options::OPT_fcommon))
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp
index 50b89aa..31236ae 100644
--- a/lib/Frontend/InitHeaderSearch.cpp
+++ b/lib/Frontend/InitHeaderSearch.cpp
@@ -347,7 +347,7 @@
   bool hasVCExpressDir = getSystemRegistryString(
     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\$VERSION",
     "InstallDir", vsExpressIDEInstallDir, sizeof(vsExpressIDEInstallDir) - 1);
-    // If we have both vc80 and vc90, pick version we were compiled with. 
+    // If we have both vc80 and vc90, pick version we were compiled with.
   if (hasVCDir && vsIDEInstallDir[0]) {
     char *p = (char*)strstr(vsIDEInstallDir, "\\Common7\\IDE");
     if (p)
@@ -369,7 +369,7 @@
     const char* vs80comntools = getenv("VS80COMNTOOLS");
     const char* vscomntools = NULL;
 
-    // Try to find the version that we were compiled with 
+    // Try to find the version that we were compiled with
     if(false) {}
     #if (_MSC_VER >= 1600)  // VC100
     else if(vs100comntools) {
@@ -412,7 +412,7 @@
   bool hasSDKDir = getSystemRegistryString(
    "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\$VERSION",
     "InstallationFolder", windowsSDKInstallDir, sizeof(windowsSDKInstallDir) - 1);
-    // If we have both vc80 and vc90, pick version we were compiled with. 
+    // If we have both vc80 and vc90, pick version we were compiled with.
   if (hasSDKDir && windowsSDKInstallDir[0]) {
     path = windowsSDKInstallDir;
     return(true);
@@ -450,7 +450,7 @@
     CIncludeDirs.split(dirs, ":");
     for (llvm::SmallVectorImpl<llvm::StringRef>::iterator i = dirs.begin();
          i != dirs.end();
-         ++i) 
+         ++i)
       AddPath(*i, System, false, false, false);
     return;
   }
@@ -490,7 +490,7 @@
     AddPath("/boot/develop/headers/os/arch", System, true, false, false);
     AddPath("/boot/develop/headers/os/device", System, true, false, false);
     AddPath("/boot/develop/headers/os/drivers", System, true, false, false);
-    AddPath("/boot/develop/headers/os/game", System, true, false, false); 
+    AddPath("/boot/develop/headers/os/game", System, true, false, false);
     AddPath("/boot/develop/headers/os/interface", System, true, false, false);
     AddPath("/boot/develop/headers/os/kernel", System, true, false, false);
     AddPath("/boot/develop/headers/os/locale", System, true, false, false);
@@ -503,13 +503,13 @@
     AddPath("/boot/develop/headers/os/support", System, true, false, false);
     AddPath("/boot/develop/headers/os/translation",
       System, true, false, false);
-    AddPath("/boot/develop/headers/os/add-ons/graphics", 
+    AddPath("/boot/develop/headers/os/add-ons/graphics",
       System, true, false, false);
-    AddPath("/boot/develop/headers/os/add-ons/input_server", 
+    AddPath("/boot/develop/headers/os/add-ons/input_server",
       System, true, false, false);
-    AddPath("/boot/develop/headers/os/add-ons/screen_saver", 
+    AddPath("/boot/develop/headers/os/add-ons/screen_saver",
       System, true, false, false);
-    AddPath("/boot/develop/headers/os/add-ons/tracker", 
+    AddPath("/boot/develop/headers/os/add-ons/tracker",
       System, true, false, false);
     AddPath("/boot/develop/headers/os/be_apps/Deskbar",
       System, true, false, false);
@@ -518,7 +518,7 @@
     AddPath("/boot/develop/headers/os/be_apps/Tracker",
       System, true, false, false);
     AddPath("/boot/develop/headers/cpp", System, true, false, false);
-    AddPath("/boot/develop/headers/cpp/i586-pc-haiku", 
+    AddPath("/boot/develop/headers/cpp/i586-pc-haiku",
       System, true, false, false);
     AddPath("/boot/develop/headers/3rdparty", System, true, false, false);
     AddPath("/boot/develop/headers/bsd", System, true, false, false);
@@ -575,8 +575,8 @@
     AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw64", "4.3.0");
     // Fall through.
   case llvm::Triple::MinGW32:
-   // Try gcc 4.5.0
-    AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.5.0"); 
+    // Try gcc 4.5.0
+    AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.5.0");
     // Try gcc 4.4.0
     AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.4.0");
     // Try gcc 4.3.0
@@ -586,13 +586,13 @@
     switch (triple.getArch()) {
     default: break;
 
-    case llvm::Triple::ppc: 
+    case llvm::Triple::ppc:
     case llvm::Triple::ppc64:
       AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1",
-                                  "powerpc-apple-darwin10", "", "ppc64", 
+                                  "powerpc-apple-darwin10", "", "ppc64",
                                   triple);
       AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.0.0",
-                                  "powerpc-apple-darwin10", "", "ppc64", 
+                                  "powerpc-apple-darwin10", "", "ppc64",
                                   triple);
       break;
 
diff --git a/lib/Sema/TargetAttributesSema.cpp b/lib/Sema/TargetAttributesSema.cpp
index bb61802..96117ad 100644
--- a/lib/Sema/TargetAttributesSema.cpp
+++ b/lib/Sema/TargetAttributesSema.cpp
@@ -275,4 +275,3 @@
     return *(TheTargetAttributesSema = new X86AttributesSema);
   }
 }
-
