diff --git a/tools/llvmc/CompilerDriver.cpp b/tools/llvmc/CompilerDriver.cpp
index 352d64f..c1c9b98 100644
--- a/tools/llvmc/CompilerDriver.cpp
+++ b/tools/llvmc/CompilerDriver.cpp
@@ -10,7 +10,7 @@
 //
 // This file implements the bulk of the LLVM Compiler Driver (llvmc).
 //
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 #include "CompilerDriver.h"
 #include "ConfigLexer.h"
diff --git a/tools/llvmc/CompilerDriver.h b/tools/llvmc/CompilerDriver.h
index 3ff3e60..41ad2c3 100644
--- a/tools/llvmc/CompilerDriver.h
+++ b/tools/llvmc/CompilerDriver.h
@@ -10,7 +10,8 @@
 // This file declares the CompilerDriver class which implements the bulk of the
 // LLVM Compiler Driver program (llvmc).
 //
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
+
 #ifndef LLVM_TOOLS_LLVMC_COMPILERDRIVER_H
 #define LLVM_TOOLS_LLVMC_COMPILERDRIVER_H
 
diff --git a/tools/llvmc/ConfigLexer.cpp.cvs b/tools/llvmc/ConfigLexer.cpp.cvs
index 3a8652e..3ffb455 100644
--- a/tools/llvmc/ConfigLexer.cpp.cvs
+++ b/tools/llvmc/ConfigLexer.cpp.cvs
@@ -27,7 +27,6 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
-#include <unistd.h>
 
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
@@ -41,6 +40,7 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
+#include <unistd.h>
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -1246,7 +1246,7 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 1 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 #define INITIAL 0
 /*===- ConfigLexer.l - Scanner for CompilerDriver Config Files -*- C++ -*--===//
 // 
@@ -1262,7 +1262,7 @@
 //
 //===----------------------------------------------------------------------===*/
 #define YY_NEVER_INTERACTIVE 1
-#line 29 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 29 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 
 #include "ConfigLexer.h"
 
@@ -1458,10 +1458,10 @@
 YY_DECL
 	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp = NULL, *yy_bp = NULL;
+	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
-#line 114 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 114 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 
 
 #line 1468 "ConfigLexer.cpp"
@@ -1545,12 +1545,12 @@
 
 case 1:
 YY_RULE_SETUP
-#line 116 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 116 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { if (ConfigLexerState.in_value) return SPACE; }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 118 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 118 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { /* Ignore comments */
                   ConfigLexerState.in_value = false; 
                   ConfigLexerState.lineNum++; 
@@ -1559,14 +1559,14 @@
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 124 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 124 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { ConfigLexerState.lineNum++; 
                   /* Don't return EOLTOK! */
                 }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 128 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 128 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { ConfigLexerState.in_value = false; 
                   ConfigLexerState.lineNum++; 
                   return EOLTOK; 
@@ -1574,249 +1574,249 @@
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 133 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 133 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { ConfigLexerState.in_value = true; 
                   return EQUALS; 
                 }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 137 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 137 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return SEPARATOR; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 139 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 139 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(VERSION_TOK); }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 141 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 141 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(LANG); }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 142 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 142 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(LIBS); }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 143 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 143 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(NAME); }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 144 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 144 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OPT1); }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 145 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 145 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OPT2); }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 146 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 146 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OPT3); }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 147 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 147 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OPT4); }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 148 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 148 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OPT5); }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 150 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 150 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(PREPROCESSOR); }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 151 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 151 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(COMMAND); }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 152 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 152 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(REQUIRED); }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 154 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 154 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(TRANSLATOR); }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 155 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 155 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(PREPROCESSES); }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 156 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 156 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OUTPUT); }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 158 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 158 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(OPTIMIZER); }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 159 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 159 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(TRANSLATES); }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 161 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 161 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(ASSEMBLER); }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 163 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 163 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleNameContext(LINKER); }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 165 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 165 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(ARGS_SUBST); }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 166 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 166 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(BINDIR_SUBST); }      
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 167 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 167 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(DEFS_SUBST); }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 168 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 168 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(IN_SUBST); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 169 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 169 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(INCLS_SUBST); }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 170 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 170 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LIBDIR_SUBST); }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 171 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 171 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LIBS_SUBST); }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 172 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 172 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LLVMGCCDIR_SUBST); }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 173 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 173 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LLVMGCCARCH_SUBST); }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 174 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 174 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LLVMGCC_SUBST); }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 175 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 175 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LLVMGXX_SUBST); }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 176 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 176 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LLVMCC1_SUBST); }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 177 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 177 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(LLVMCC1PLUS_SUBST); }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 178 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 178 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(OPT_SUBST); }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 179 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 179 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(OUT_SUBST); }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 180 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 180 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(STATS_SUBST); }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 181 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 181 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(TARGET_SUBST); }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 182 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 182 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(TIME_SUBST); }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 183 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 183 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(VERBOSE_SUBST); }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 184 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 184 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(FOPTS_SUBST); }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 185 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 185 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(MOPTS_SUBST); }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 186 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 186 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleSubstitution(WOPTS_SUBST); }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 188 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 188 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleValueContext(ASSEMBLY); }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 189 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 189 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleValueContext(BYTECODE); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 190 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 190 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleValueContext(TRUETOK); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 191 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 191 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { return handleValueContext(FALSETOK); }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 193 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 193 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { ConfigLexerState.StringVal = yytext; return OPTION; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 194 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 194 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { ConfigLexerState.StringVal = yytext+1;  // Nuke start quote
                   ConfigLexerState.StringVal.erase(
                   --ConfigLexerState.StringVal.end());
@@ -1825,12 +1825,12 @@
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 199 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 199 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 { YY_FATAL_ERROR("Invalid substitution token"); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 201 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 201 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 ECHO;
 	YY_BREAK
 #line 1837 "ConfigLexer.cpp"
@@ -2216,7 +2216,6 @@
 #endif	/* ifndef YY_NO_UNPUT */
 
 
-#ifndef YY_NO_INPUT
 #ifdef __cplusplus
 static int yyinput()
 #else
@@ -2288,7 +2287,7 @@
 
 	return c;
 	}
-#endif /* YY_NO_INPUT */
+
 
 #ifdef YY_USE_PROTOS
 void yyrestart( FILE *input_file )
@@ -2399,6 +2398,11 @@
 	}
 
 
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
 
 #ifdef YY_USE_PROTOS
 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
@@ -2716,5 +2720,5 @@
 	return 0;
 	}
 #endif
-#line 201 "/proj/llvm/build/../llvm/tools/llvmc/ConfigLexer.l"
+#line 201 "/Users/sabre/cvs/llvm/tools/llvmc/ConfigLexer.l"
 
diff --git a/tools/llvmc/ConfigLexer.h b/tools/llvmc/ConfigLexer.h
index 2d5c64e..39960c8 100644
--- a/tools/llvmc/ConfigLexer.h
+++ b/tools/llvmc/ConfigLexer.h
@@ -9,7 +9,8 @@
 //
 // This file declares the types and data needed by ConfigLexer.l
 //
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
+
 #ifndef LLVM_TOOLS_LLVMC_CONFIGLEXER_H
 #define LLVM_TOOLS_LLVMC_CONFIGLEXER_H
 
diff --git a/tools/llvmc/Configuration.cpp b/tools/llvmc/Configuration.cpp
index bc538ca..ba3c93c 100644
--- a/tools/llvmc/Configuration.cpp
+++ b/tools/llvmc/Configuration.cpp
@@ -10,7 +10,7 @@
 // This file implements the parsing of configuration files for the LLVM Compiler
 // Driver (llvmc).
 //
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 #include "Configuration.h"
 #include "ConfigLexer.h"
diff --git a/tools/llvmc/Configuration.h b/tools/llvmc/Configuration.h
index b121f9d..bf38275 100644
--- a/tools/llvmc/Configuration.h
+++ b/tools/llvmc/Configuration.h
@@ -10,7 +10,8 @@
 // This file declares the LLVMC_ConfigDataProvider class which implements the
 // generation of ConfigData objects for the CompilerDriver.
 //
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
+
 #ifndef LLVM_TOOLS_LLVMC_CONFIGDATA_H
 #define LLVM_TOOLS_LLVMC_CONFIGDATA_H
 
diff --git a/tools/llvmc/llvmc.cpp b/tools/llvmc/llvmc.cpp
index 7eaa98e..496eaa4 100644
--- a/tools/llvmc/llvmc.cpp
+++ b/tools/llvmc/llvmc.cpp
@@ -12,7 +12,7 @@
 //  tools' manual page (docs/CommandGuide/html/llvmc.html) or run the tool with
 //  the --help option.
 //
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 #include "CompilerDriver.h"
 #include "Configuration.h"
@@ -24,9 +24,9 @@
 using namespace llvm;
 
 namespace {
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          PHASE OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 cl::opt<CompilerDriver::Phases> FinalPhase(cl::Optional,
   cl::desc("Choose final phase of compilation:"),
   cl::init(CompilerDriver::LINKING),
@@ -43,9 +43,9 @@
   )
 );
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          OPTIMIZATION OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 cl::opt<CompilerDriver::OptimizationLevels> OptLevel(cl::ZeroOrMore,
   cl::desc("Choose level of optimization to apply:"),
   cl::init(CompilerDriver::OPT_FAST_COMPILE),
@@ -66,9 +66,9 @@
   )
 );
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          TOOL OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 cl::list<std::string> PreprocessorToolOpts("Tpre", cl::ZeroOrMore,
   cl::desc("Pass specific options to the pre-processor"),
@@ -115,9 +115,9 @@
   cl::desc("Specify path to find llvmc sub-tools"),
   cl::value_desc("dir"));
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          INPUT OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 cl::list<std::string> LibPaths("L", cl::Prefix,
   cl::desc("Specify a library search path"), cl::value_desc("dir"));
@@ -133,9 +133,9 @@
   cl::desc("Specify a pre-processor symbol to define"),
   cl::value_desc("symbol"));
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          OUTPUT OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 cl::opt<std::string> OutputFilename("o",
   cl::desc("Override output filename"), cl::value_desc("file"));
@@ -156,9 +156,9 @@
   cl::value_desc("file"),
   cl::desc("Print the full path for the option's value"));
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          INFORMATION OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 cl::opt<bool> DryRun("dry-run", cl::Optional, cl::init(false),
   cl::desc("Do everything but perform the compilation actions"));
@@ -184,9 +184,9 @@
 cl::opt<bool> ShowStats("stats", cl::Optional, cl::init(false),
   cl::desc("Print statistics accumulated during optimization"));
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          ADVANCED OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 static cl::opt<std::string> ConfigDir("config-dir", cl::Optional,
   cl::desc("Specify configuration directory to override defaults"),
@@ -201,9 +201,9 @@
 static cl::opt<bool> KeepTemps("keep-temps", cl::Optional,
   cl::desc("Don't delete temporary files created by llvmc"));
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          POSITIONAL OPTIONS
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 
 static cl::list<std::string> Files(cl::Positional, cl::ZeroOrMore,
   cl::desc("[Sources/objects/libraries]"));
@@ -212,9 +212,9 @@
   cl::desc("Specify the source language for subsequent files"),
   cl::value_desc("language"));
 
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 //===          GetFileType - determine type of a file
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
 const std::string GetFileType(const std::string& fname, unsigned pos) {
   static std::vector<std::string>::iterator langIt = Languages.begin();
   static std::string CurrLang = "";
