Index: driver/cc1.cc
===================================================================
--- driver/cc1.cc	(revision c5c014846e9f89bff997e6df2abd934decfccf44)
+++ driver/cc1.cc	(revision 2909b515da780ffca5028f3b4173e37403df5629)
@@ -335,4 +335,12 @@
 	#endif // __DEBUG_H__
 
+	enum {
+		Color_Auto   = 0,
+		Color_Always = 1,
+		Color_Never  = 2,
+	} color_arg = Color_Auto;
+
+	const char * color_names[3] = { "--colors=auto", "--colors=always", "--colors=never" };
+
 	// process all the arguments
 
@@ -341,4 +349,13 @@
 		if ( prefix( arg, "-" ) ) {
 			// strip inappropriate flags
+
+			if ( prefix( arg, "-fdiagnostics-color=" ) ) {
+				string choice = arg.substr(20);
+				     if(choice == "always") color_arg = Color_Always;
+				else if(choice == "never" ) color_arg = Color_Never;
+				else if(choice == "auto"  ) color_arg = Color_Auto;
+			} else if ( arg == "-fno-diagnostics-color" ) {
+				color_arg = Color_Auto;
+			}
 
 			if ( arg == "-quiet" || arg == "-version" || arg == "-fpreprocessed" ||
@@ -440,4 +457,7 @@
 			cargs[ncargs++] = cfa_cpp_out.c_str();
 		} // if
+
+		cargs[ncargs++] = color_names[color_arg];
+
 		cargs[ncargs] = nullptr;						// terminate argument list
 
