diff --git a/test/C++Frontend/2003-09-22-CompositeExprValue.cpp b/test/C++Frontend/2003-09-22-CompositeExprValue.cpp
index b1373ba..a8208ad 100644
--- a/test/C++Frontend/2003-09-22-CompositeExprValue.cpp
+++ b/test/C++Frontend/2003-09-22-CompositeExprValue.cpp
@@ -2,10 +2,10 @@
 
 struct duration {
  duration operator/=(int c) {
-	return *this;
+  return *this;
   }
 };
 
 void a000090() {
-	duration() /= 1;
+  duration() /= 1;
 }
diff --git a/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp b/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
index 19435c6..4873123 100644
--- a/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
+++ b/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
@@ -5,13 +5,13 @@
 // was mistakenly "thinking" that 'foo' took a structure by component.
 
 struct C {
-        int A, B;
-        ~C() {}
+  int A, B;
+  ~C() {}
 };
 
 void foo(C b);
 
 void test(C *P) {
-	foo(*P);
+  foo(*P);
 }
 
diff --git a/test/CFrontend/2002-02-13-TypeVarNameCollision.c b/test/CFrontend/2002-02-13-TypeVarNameCollision.c
index f4daa21..ec33401 100644
--- a/test/CFrontend/2002-02-13-TypeVarNameCollision.c
+++ b/test/CFrontend/2002-02-13-TypeVarNameCollision.c
@@ -1,16 +1,16 @@
 // RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null
 
-/* This testcase causes a symbol table collision.  Type names and variable 
+/* This testcase causes a symbol table collision.  Type names and variable
  * names should be in distinct namespaces
  */
 
 typedef struct foo {
-	int X, Y;
+  int X, Y;
 } FOO;
 
 static FOO foo[100];
 
 int test() {
-	return foo[4].Y;
+  return foo[4].Y;
 }
 
diff --git a/test/CFrontend/2002-02-18-64bitConstant.c b/test/CFrontend/2002-02-18-64bitConstant.c
index f2ed121..6fd3e29 100644
--- a/test/CFrontend/2002-02-18-64bitConstant.c
+++ b/test/CFrontend/2002-02-18-64bitConstant.c
@@ -3,7 +3,6 @@
 /* GCC wasn't handling 64 bit constants right fixed */
 
 void main() {
-	long long Var = 123455678902ll;
-	printf("%lld\n", Var);
-
+  long long Var = 123455678902ll;
+  printf("%lld\n", Var);
 }
diff --git a/test/CFrontend/2002-03-11-LargeCharInString.c b/test/CFrontend/2002-03-11-LargeCharInString.c
index 8ae8643..d8a1671 100644
--- a/test/CFrontend/2002-03-11-LargeCharInString.c
+++ b/test/CFrontend/2002-03-11-LargeCharInString.c
@@ -3,8 +3,8 @@
 #include <string.h>
 
 int test(char *X) {
-	/* LLVM-GCC used to emit: 
-	   %.LC0 = internal global [3 x sbyte] c"\1F\FFFFFF8B\00"
-	 */
-	return strcmp(X, "\037\213");
+  /* LLVM-GCC used to emit:
+     %.LC0 = internal global [3 x sbyte] c"\1F\FFFFFF8B\00"
+   */
+  return strcmp(X, "\037\213");
 }
diff --git a/test/CFrontend/2002-03-14-QuotesInStrConst.c b/test/CFrontend/2002-03-14-QuotesInStrConst.c
index 2034848..42f82bf 100644
--- a/test/CFrontend/2002-03-14-QuotesInStrConst.c
+++ b/test/CFrontend/2002-03-14-QuotesInStrConst.c
@@ -1,10 +1,10 @@
 // RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null
 
-/* GCC was not escaping quotes in string constants correctly, so this would 
+/* GCC was not escaping quotes in string constants correctly, so this would
  * get emitted:
  *  %.LC1 = internal global [32 x sbyte] c"*** Word "%s" on line %d is not\00"
  */
 
 const char *Foo() {
-	return "*** Word \"%s\" on line %d is not";
+  return "*** Word \"%s\" on line %d is not";
 }
diff --git a/test/CFrontend/2002-05-23-StaticValues.c b/test/CFrontend/2002-05-23-StaticValues.c
index 79d46ae..bf583e2 100644
--- a/test/CFrontend/2002-05-23-StaticValues.c
+++ b/test/CFrontend/2002-05-23-StaticValues.c
@@ -10,6 +10,6 @@
 }
 
 void *test() {
-	foo(12);
-	return &Y;
+  foo(12);
+  return &Y;
 }
diff --git a/test/CFrontend/2002-05-24-Alloca.c b/test/CFrontend/2002-05-24-Alloca.c
index 0a44db1..ac5b78d 100644
--- a/test/CFrontend/2002-05-24-Alloca.c
+++ b/test/CFrontend/2002-05-24-Alloca.c
@@ -5,7 +5,7 @@
 #include <stdlib.h>
 
 int main(int argc, char **argv) {
-	char *C = (char*)alloca(argc);
-	strcpy(C, argv[0]);
-	puts(C);
+  char *C = (char*)alloca(argc);
+  strcpy(C, argv[0]);
+  puts(C);
 }
diff --git a/test/CFrontend/2002-06-25-FWriteInterfaceFailure.c b/test/CFrontend/2002-06-25-FWriteInterfaceFailure.c
index 6547092..fb1b54b 100644
--- a/test/CFrontend/2002-06-25-FWriteInterfaceFailure.c
+++ b/test/CFrontend/2002-06-25-FWriteInterfaceFailure.c
@@ -3,5 +3,5 @@
 #include <stdio.h>
 
 void  test() {
-	fprintf(stderr, "testing\n");
+  fprintf(stderr, "testing\n");
 }
diff --git a/test/CFrontend/2002-07-14-MiscTests3.c b/test/CFrontend/2002-07-14-MiscTests3.c
index a19e2d5..9a262d5 100644
--- a/test/CFrontend/2002-07-14-MiscTests3.c
+++ b/test/CFrontend/2002-07-14-MiscTests3.c
@@ -23,7 +23,7 @@
   struct SubStruct *SSP;
   char c;
   int y;
-}; 
+};
 
 struct Quad GlobalQuad = { 4, {1, 2}, 0, 3, 156 };
 
@@ -65,7 +65,7 @@
 
 
 int BadFunc(float Val) {
-  int Result; 
+  int Result;
   if (Val > 12.345) Result = 4;
   return Result;     /* Test use of undefined value */
 }
@@ -80,14 +80,14 @@
   int Result = Param;
 
   {{{{
-    char c; int X;
-    EF1(&Result, &c, &X);
-  }}}
-  
-  {   // c & X are duplicate names!
-    char c; int X;
-    EF1(&Result, &c, &X);
-  }
+      char c; int X;
+      EF1(&Result, &c, &X);
+    }}}
+
+    {   // c & X are duplicate names!
+      char c; int X;
+      EF1(&Result, &c, &X);
+    }
 
   }
   return Result;
@@ -129,7 +129,7 @@
   for (i = 0; i < 100; ++i)
     A[i] = i*4;
 
-  return A[A[0]]; //SumArray(A, 100);  
+  return A[A[0]]; //SumArray(A, 100);
 }
 
 
@@ -141,7 +141,7 @@
 
   ExternFunc(-1, 0, (short)argc, 2);
   //func(argc, argc);
-  
+
   for (i = 0; i < 10; i++)
     puts(argv[3]);
   return 0;
@@ -159,29 +159,29 @@
 
 
 void strcpy(char *s1, char *s2) {
-    while (*s1++ = *s2++);
+  while (*s1++ = *s2++);
 }
 
 void strcat(char *s1, char *s2) {
-    while (*s1++);
-    s1--;
-    while (*s1++ = *s2++);
+  while (*s1++);
+  s1--;
+  while (*s1++ = *s2++);
 }
 
 int strcmp(char *s1, char *s2) {
-    while (*s1++ == *s2++);
-    if (*s1 == 0) {
-	if (*s2 == 0) {
-	    return 0;
-	} else {
-	    return -1;
-	}
+  while (*s1++ == *s2++);
+  if (*s1 == 0) {
+    if (*s2 == 0) {
+      return 0;
     } else {
-	if (*s2 == 0) {
-	    return 1;
-	} else {
-	    return (*(--s1) - *(--s2));
-	}
+      return -1;
     }
+  } else {
+    if (*s2 == 0) {
+      return 1;
+    } else {
+      return (*(--s1) - *(--s2));
+    }
+  }
 }
 
diff --git a/test/CFrontend/2002-07-30-SubregSetAssertion.c b/test/CFrontend/2002-07-30-SubregSetAssertion.c
index 7eab19b..6d4f9f6 100644
--- a/test/CFrontend/2002-07-30-SubregSetAssertion.c
+++ b/test/CFrontend/2002-07-30-SubregSetAssertion.c
@@ -6,7 +6,7 @@
 };
 
 union X foo() {
-	union X A;
-	A.B = (void*)123;
-	return A;
+  union X A;
+  A.B = (void*)123;
+  return A;
 }
diff --git a/test/CFrontend/2002-07-30-UnionTest.c b/test/CFrontend/2002-07-30-UnionTest.c
index 634ed3f..b2c481e 100644
--- a/test/CFrontend/2002-07-30-UnionTest.c
+++ b/test/CFrontend/2002-07-30-UnionTest.c
@@ -7,16 +7,16 @@
 union X {
   char C;
   int A, Z;
-  long long B; 
+  long long B;
   void *b1;
   struct { int A; long long Z; } Q;
 };
 
 union X foo(union X A) {
-	A.C = 123;
-	A.A = 39249;
-	//A.B = (void*)123040123321;
-	A.B = 12301230123123LL;
-	A.Z = 1;
-	return A;
+  A.C = 123;
+  A.A = 39249;
+  //A.B = (void*)123040123321;
+  A.B = 12301230123123LL;
+  A.Z = 1;
+  return A;
 }
diff --git a/test/CFrontend/2002-07-30-VarArgsCallFailure.c b/test/CFrontend/2002-07-30-VarArgsCallFailure.c
index 14c879c..b37a462 100644
--- a/test/CFrontend/2002-07-30-VarArgsCallFailure.c
+++ b/test/CFrontend/2002-07-30-VarArgsCallFailure.c
@@ -3,6 +3,6 @@
 int tcount;
 void test(char *, const char*, int);
 void foo() {
-	char Buf[10];
-	test(Buf, "n%%%d", tcount++);
+  char Buf[10];
+  test(Buf, "n%%%d", tcount++);
 }
diff --git a/test/CFrontend/2002-08-02-UnionTest.c b/test/CFrontend/2002-08-02-UnionTest.c
index b9e2c2e..bc44e46 100644
--- a/test/CFrontend/2002-08-02-UnionTest.c
+++ b/test/CFrontend/2002-08-02-UnionTest.c
@@ -8,12 +8,12 @@
 union X { char X; void *B; int a, b, c, d;};
 
 union X foo() {
-	union X Global;
-        Global.B = (void*)123;   /* Interesting part */
-	return Global;
+  union X Global;
+  Global.B = (void*)123;   /* Interesting part */
+  return Global;
 }
 
 void main() {
-	union X test = foo();
-	printf("0x%p", test.B);
+  union X test = foo();
+  printf("0x%p", test.B);
 }
diff --git a/test/CFrontend/2002-09-08-PointerShifts.c b/test/CFrontend/2002-09-08-PointerShifts.c
index e58d858..cc7e91a 100644
--- a/test/CFrontend/2002-09-08-PointerShifts.c
+++ b/test/CFrontend/2002-09-08-PointerShifts.c
@@ -2,5 +2,5 @@
 
 
 int foo(int *A, unsigned X) {
-	return A[X];
+  return A[X];
 }
diff --git a/test/CFrontend/2002-10-12-TooManyArguments.c b/test/CFrontend/2002-10-12-TooManyArguments.c
index 0c31f2b..206cdd9 100644
--- a/test/CFrontend/2002-10-12-TooManyArguments.c
+++ b/test/CFrontend/2002-10-12-TooManyArguments.c
@@ -4,5 +4,5 @@
 void foo() {}
 
 void bar() {
-	foo(1, 2, 3);  /* Too many arguments passed */
+  foo(1, 2, 3);  /* Too many arguments passed */
 }
diff --git a/test/CodeGen/Generic/BasicInstrs.c b/test/CodeGen/Generic/BasicInstrs.c
index 9a378b9..141d32b 100644
--- a/test/CodeGen/Generic/BasicInstrs.c
+++ b/test/CodeGen/Generic/BasicInstrs.c
@@ -1,4 +1,4 @@
-// This file can be used to see what a native C compiler is generating for a 
+// This file can be used to see what a native C compiler is generating for a
 // variety of interesting operations.
 //
 // RUN: %llvmgcc -c %s -o - | llc
@@ -23,4 +23,4 @@
 _Bool setgt(int X, int Y) {
   return X > Y;
 }
-	
+
diff --git a/test/Debugger/funccall.c b/test/Debugger/funccall.c
index b99a885..4d016ec 100644
--- a/test/Debugger/funccall.c
+++ b/test/Debugger/funccall.c
@@ -2,15 +2,15 @@
 static int q;
 
 void foo() {
-	int t = q;
-	q = t + 1;
+  int t = q;
+  q = t + 1;
 }
 int main() {
-	q = 0;
-	foo();
-	q = q - 1;
+  q = 0;
+  foo();
+  q = q - 1;
 
-	return q;
+  return q;
 }
 
 // This is the source that corresponds to funccall.ll
