diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 7c660bf..cc1ace7 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -116,8 +116,8 @@
     IdentifierInfo *II = D->getIdentifier();
     if (!II) continue;
     
-    // We only want to remove the decls from the identifier decl chains for local
-    // scopes, when inside a function/method.
+    // We only want to remove the decls from the identifier decl chains for
+    // local scopes, when inside a function/method.
     if (S->getFnParent() != 0)
       IdResolver.RemoveDecl(D);
 
@@ -1730,8 +1730,8 @@
     } else {
       // PrevDecl is a namespace.
       if (IdResolver.isDeclInScope(PrevDecl, CurContext, S)) {
-        // The tag name clashes with a namespace name, issue an error and recover
-        // by making this tag be anonymous.
+        // The tag name clashes with a namespace name, issue an error and
+        // recover by making this tag be anonymous.
         Diag(NameLoc, diag::err_redefinition_different_kind, Name->getName());
         Diag(PrevDecl->getLocation(), diag::err_previous_definition);
         Name = 0;
@@ -1797,9 +1797,9 @@
     CollectIvars(Class->getSuperClass(), Ctx, ivars);
   
   // For each ivar, create a fresh ObjCAtDefsFieldDecl.
-  for (ObjCInterfaceDecl::ivar_iterator I=Class->ivar_begin(), E=Class->ivar_end(); 
-       I!=E; ++I) {
-
+  for (ObjCInterfaceDecl::ivar_iterator
+        I=Class->ivar_begin(), E=Class->ivar_end(); I!=E; ++I) {
+    
     ObjCIvarDecl* ID = *I;
     ivars.push_back(ObjCAtDefsFieldDecl::Create(Ctx, ID->getLocation(),
                                                 ID->getIdentifier(),
@@ -1853,8 +1853,7 @@
   
   // FIXME: Unnamed fields can be handled in various different ways, for
   // example, unnamed unions inject all members into the struct namespace!
-  
-  
+    
   if (BitWidth) {
     // TODO: Validate.
     //printf("WARNING: BITFIELDS IGNORED!\n");
