diff --git a/AST/Decl.cpp b/AST/Decl.cpp
index e8b57d4..f046e27 100644
--- a/AST/Decl.cpp
+++ b/AST/Decl.cpp
@@ -272,8 +272,8 @@
   return 0;
 }
 
-void ObjcMethodDecl::setMethodParams(ParmVarDecl **NewParamInfo, 
-				     unsigned NumParams) {
+void ObjcMethodDecl::setMethodParams(ParmVarDecl **NewParamInfo,
+                                     unsigned NumParams) {
   assert(ParamInfo == 0 && "Already has param info!");
 
   // Zero params -> null pointer.
@@ -292,7 +292,7 @@
 /// into ObjcInterfaceDecl's fields.
 ///
 void ObjcInterfaceDecl::ObjcAddInstanceVariablesToClass(ObjcIvarDecl **ivars,
-					   		unsigned numIvars) {
+                                                        unsigned numIvars) {
   NumIvars = numIvars;
   if (numIvars) {
     Ivars = new ObjcIvarDecl*[numIvars];
@@ -305,7 +305,7 @@
 /// Ivars into ObjcImplementationDecl's fields.
 ///
 void ObjcImplementationDecl::ObjcAddInstanceVariablesToClassImpl(
-			      ObjcIvarDecl **ivars, unsigned numIvars) {
+                               ObjcIvarDecl **ivars, unsigned numIvars) {
   NumIvars = numIvars;
   if (numIvars) {
     Ivars = new ObjcIvarDecl*[numIvars];
@@ -317,7 +317,7 @@
 /// ObjcInterfaceDecl's InsMethods and ClsMethods fields.
 ///
 void ObjcInterfaceDecl::ObjcAddMethods(ObjcMethodDecl **insMethods, 
-				       unsigned numInsMembers,
+                                       unsigned numInsMembers,
                                        ObjcMethodDecl **clsMethods,
                                        unsigned numClsMembers) {
   NumInstanceMethods = numInsMembers;
@@ -336,9 +336,9 @@
 /// ObjcProtocolDecl's ProtoInsMethods and ProtoClsMethods fields.
 ///
 void ObjcProtocolDecl::ObjcAddProtoMethods(ObjcMethodDecl **insMethods, 
-					   unsigned numInsMembers,
-					   ObjcMethodDecl **clsMethods,
-					   unsigned numClsMembers) {
+                                           unsigned numInsMembers,
+                                           ObjcMethodDecl **clsMethods,
+                                           unsigned numClsMembers) {
   NumInstanceMethods = numInsMembers;
   if (numInsMembers) {
     InstanceMethods = new ObjcMethodDecl*[numInsMembers];
@@ -355,9 +355,9 @@
 /// ObjcCategoryDecl's CatInsMethods and CatClsMethods fields.
 ///
 void ObjcCategoryDecl::ObjcAddCatMethods(ObjcMethodDecl **insMethods, 
-					 unsigned numInsMembers,
-					 ObjcMethodDecl **clsMethods,
-					 unsigned numClsMembers) {
+                                         unsigned numInsMembers,
+                                         ObjcMethodDecl **clsMethods,
+                                         unsigned numClsMembers) {
   NumInstanceMethods = numInsMembers;
   if (numInsMembers) {
     InstanceMethods = new ObjcMethodDecl*[numInsMembers];
@@ -374,9 +374,9 @@
 /// ObjcCategoryImplDecl's CatInsMethods and CatClsMethods fields.
 ///
 void ObjcCategoryImplDecl::ObjcAddCatImplMethods(ObjcMethodDecl **insMethods, 
-						 unsigned numInsMembers,
-						 ObjcMethodDecl **clsMethods,
-						 unsigned numClsMembers) {
+                                                 unsigned numInsMembers,
+                                                 ObjcMethodDecl **clsMethods,
+                                                 unsigned numClsMembers) {
   NumInstanceMethods = numInsMembers;
   if (numInsMembers) {
     InstanceMethods = new ObjcMethodDecl*[numInsMembers];
@@ -393,9 +393,9 @@
 /// ObjcImplementationDecl's InsMethods and ClsMethods fields.
 ///
 void ObjcImplementationDecl::ObjcAddImplMethods(ObjcMethodDecl **insMethods, 
-						unsigned numInsMembers,
-						ObjcMethodDecl **clsMethods,
-						unsigned numClsMembers) {
+                                                unsigned numInsMembers,
+                                                ObjcMethodDecl **clsMethods,
+                                                unsigned numClsMembers) {
   NumInstanceMethods = numInsMembers;
   if (numInsMembers) {
     InstanceMethods = new ObjcMethodDecl*[numInsMembers];
diff --git a/clang.xcodeproj/project.pbxproj b/clang.xcodeproj/project.pbxproj
index 8c6eeec..a96d57f 100644
--- a/clang.xcodeproj/project.pbxproj
+++ b/clang.xcodeproj/project.pbxproj
@@ -737,6 +737,7 @@
 		08FB7793FE84155DC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "clang" */;
+			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 1;
 			mainGroup = 08FB7794FE84155DC02AAC07 /* clang */;
 			projectDirPath = "";
