Index: driver/cc1.cc
===================================================================
--- driver/cc1.cc	(revision 7f51b9dc349a76568aa4d3de2895e098988e60b4)
+++ driver/cc1.cc	(revision 013b028c0a33a04da0b707cac29d64d448b9e545)
@@ -10,6 +10,6 @@
 // Created On       : Fri Aug 26 14:23:51 2005
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 13 21:03:15 2020
-// Update Count     : 407
+// Last Modified On : Sun Aug 16 21:03:02 2020
+// Update Count     : 413
 //
 
@@ -24,5 +24,5 @@
 #include <unistd.h>										// execvp, fork, unlink
 #include <sys/wait.h>									// wait
-#include <fcntl.h>
+#include <fcntl.h>										// creat
 
 
@@ -59,5 +59,5 @@
 
 
-static string __CFA_FLAGPREFIX__( "__CFA_FLAG" );		// "N__=" suffix
+static string __CFA_FLAGPREFIX__( "__CFA_FLAG" );		// "__CFA_FLAG__=" suffix
 
 static void checkEnv1( const char * args[], int & nargs ) { // stage 1
@@ -111,6 +111,7 @@
 } // checkEnv2
 
-
-static char tmpname[] = P_tmpdir "/CFAXXXXXX.ifa";
+#define CFA_SUFFIX ".ifa"
+
+static char tmpname[] = P_tmpdir "/CFAXXXXXX" CFA_SUFFIX;
 static int tmpfilefd = -1;
 static bool startrm = false;
@@ -321,9 +322,10 @@
 
 	if ( WIFSIGNALED(code) ) {							// child failed ?
+		rmtmpfile();									// remove tmpname
 		cerr << "CC1 Translator error: stage 1, child failed " << WTERMSIG(code) << endl;
 		exit( EXIT_FAILURE );
 	} // if
 
-	exit( WEXITSTATUS(code) );							// bad cpp result stops top-level gcc
+	exit( WEXITSTATUS( code ) );						// bad cpp result stops top-level gcc
 } // Stage1
 
@@ -373,9 +375,9 @@
 			} else if ( arg == "-fno-diagnostics-color" ) {
 				color_arg = Color_Auto;
-			}
+			} // if
 
 			if ( arg == "-quiet" || arg == "-version" || arg == "-fpreprocessed" ||
-				// Currently CFA does not suppose precompiled .h files.
-				prefix( arg, "--output-pch" ) ) {
+				 // Currently CFA does not suppose precompiled .h files.
+				 prefix( arg, "--output-pch" ) ) {
 
 				// strip inappropriate flags with an argument
@@ -441,5 +443,5 @@
 			} // if
 
-			cfa_cpp_out = cfa_cpp_out.substr( 0, dot ) + ".ifa";
+			cfa_cpp_out = cfa_cpp_out.substr( 0, dot ) + CFA_SUFFIX;
 			if ( creat( cfa_cpp_out.c_str(), 0666 ) == -1 ) {
 				perror( "CC1 Translator error: stage 2, creat" );
@@ -462,5 +464,5 @@
 	// output.  Otherwise, run the cfa-cpp preprocessor on the temporary file and save the result into the output file.
 
-	if ( fork() == 0 ) {								// child runs CFA
+	if ( fork() == 0 ) {								// child runs CFA preprocessor
 		cargs[0] = ( *new string( bprefix + "cfa-cpp" ) ).c_str();
 		cargs[ncargs++] = cpp_in;
@@ -520,5 +522,5 @@
 	#endif // __DEBUG_H__
 
-	if ( fork() == 0 ) {								// child runs CFA
+	if ( fork() == 0 ) {								// child runs gcc
 		args[0] = compiler_path.c_str();
 		args[nargs++] = "-S";							// only compile and put assembler output in specified file
Index: driver/cfa.cc
===================================================================
--- driver/cfa.cc	(revision 7f51b9dc349a76568aa4d3de2895e098988e60b4)
+++ driver/cfa.cc	(revision 013b028c0a33a04da0b707cac29d64d448b9e545)
@@ -10,6 +10,6 @@
 // Created On       : Tue Aug 20 13:44:49 2002
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 14 07:22:03 2020
-// Update Count     : 437
+// Last Modified On : Sun Aug 16 23:05:59 2020
+// Update Count     : 447
 //
 
@@ -18,9 +18,8 @@
 #include <cstdlib>										// putenv, exit
 #include <climits>										// PATH_MAX
+#include <string>										// STL version
+#include <algorithm>									// find
+
 #include <unistd.h>										// execvp
-#include <string>										// STL version
-#include <string.h>										// strcmp
-#include <algorithm>									// find
-
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -34,11 +33,10 @@
 using std::to_string;
 
-// #define __DEBUG_H__
+//#define __DEBUG_H__
 
 #define xstr(s) str(s)
 #define str(s) #s
 
-// "N__=" suffix
-static string __CFA_FLAGPREFIX__( "__CFA_FLAG" );
+static string __CFA_FLAGPREFIX__( "__CFA_FLAG" );		// "__CFA_FLAG__=" suffix
 
 static void Putenv( char * argv[], string arg ) {
@@ -156,9 +154,9 @@
 	PathMode path = FromProc();
 
-	const char *args[argc + 100];						// cfa command line values, plus some space for additional flags
+	const char * args[argc + 100];						// cfa command line values, plus some space for additional flags
 	int sargs = 1;										// starting location for arguments in args list
 	int nargs = sargs;									// number of arguments in args list; 0 => command name
 
-	const char *libs[argc + 20];						// non-user libraries must come separately, plus some added libraries and flags
+	const char * libs[argc + 20];						// non-user libraries must come separately, plus some added libraries and flags
 	int nlibs = 0;
 
@@ -183,4 +181,7 @@
 				args[nargs++] = argv[i];				// pass argument along
 				if ( arg == "-o" ) o_file = i;			// remember file
+
+				// CFA specific arguments
+
 			} else if ( strncmp(arg.c_str(), "-XCFA", 5) == 0 ) { // CFA pass through
 				if ( arg.size() == 5 ) {
@@ -201,16 +202,16 @@
 			} else if ( arg == "-nodebug" ) {
 				debug = false;							// strip the nodebug flag
-			} else if ( arg == "-nolib" ) {
-				nolib = true;							// strip the nodebug flag
 			} else if ( arg == "-quiet" ) {
 				quiet = true;							// strip the quiet flag
 			} else if ( arg == "-noquiet" ) {
 				quiet = false;							// strip the noquiet flag
+			} else if ( arg == "-no-include-stdhdr" ) {
+				noincstd_flag = true;					// strip the no-include-stdhdr flag
+			} else if ( arg == "-nolib" ) {
+				nolib = true;							// strip the nolib flag
 			} else if ( arg == "-help" ) {
 				help = true;							// strip the help flag
 			} else if ( arg == "-nohelp" ) {
 				help = false;							// strip the nohelp flag
-			} else if ( arg == "-no-include-stdhdr" ) {
-				noincstd_flag = true;					// strip the no-include-stdhdr flag
 			} else if ( arg == "-cfalib") {
 				compiling_libs = true;
@@ -334,5 +335,5 @@
 	string libbase;
 	switch(path) {
-	case Installed:
+	  case Installed:
 		args[nargs++] = "-I" CFA_INCDIR;
 		// do not use during build
@@ -344,6 +345,6 @@
 		libbase = CFA_LIBDIR;
 		break;
-	case BuildTree:
-	case Distributed:
+	  case BuildTree:
+	  case Distributed:
 		args[nargs++] = "-I" TOP_SRCDIR "libcfa/src";
 		// do not use during build
@@ -379,5 +380,5 @@
 	string libdir = libbase + arch + "-" + config;
 
-	if (path != Distributed) {
+	if ( path != Distributed ) {
 		if ( ! nolib && ! dirExists( libdir ) ) {
 			cerr << argv[0] << " internal error, configuration " << config << " not installed." << endl;
@@ -399,8 +400,8 @@
 	string preludedir;
 	switch(path) {
-	case Installed   : preludedir = libdir; break;
-	case BuildTree   : preludedir = libdir + "/prelude"; break;
-	case Distributed : preludedir = dir(argv[0]); break;
-	}
+	  case Installed   : preludedir = libdir; break;
+	  case BuildTree   : preludedir = libdir + "/prelude"; break;
+	  case Distributed : preludedir = dir(argv[0]); break;
+	} // switch
 
 	Putenv( argv, "--prelude-dir=" + preludedir );
@@ -474,11 +475,11 @@
 	if ( bprefix.length() == 0 ) {
 		switch(path) {
-		case Installed   : bprefix = installlibdir; break;
-		case BuildTree   : bprefix = srcdriverdir ; break;
-		case Distributed : bprefix = dir(argv[0]) ; break;
-		}
-		if ( bprefix[bprefix.length() - 1] != '/' ) bprefix += '/';
-		Putenv( argv, string("-B=") + bprefix );
-	} // if
+		  case Installed   : bprefix = installlibdir; break;
+		  case BuildTree   : bprefix = srcdriverdir ; break;
+		  case Distributed : bprefix = dir(argv[0]) ; break;
+		} // switch
+	} // if
+	if ( bprefix[bprefix.length() - 1] != '/' ) bprefix += '/';
+	Putenv( argv, string("-B=") + bprefix );
 
 	args[nargs++] = "-Xlinker";							// used by backtrace
@@ -502,6 +503,6 @@
 		args[nargs++] = "-Wno-cast-function-type";
 		#endif // HAVE_CAST_FUNCTION_TYPE
-		if ( ! std_flag ) {								// default c11, if none specified
-			args[nargs++] = "-std=gnu11";
+		if ( ! std_flag && ! x_flag ) {
+			args[nargs++] = "-std=gnu11";				// default c11, if none specified
 		} // if
 		args[nargs++] = "-fgnu89-inline";
@@ -553,5 +554,5 @@
 	// execute the command and return the result
 
-	execvp( args[0], (char *const *)args );				// should not return
+	execvp( args[0], (char * const *)args );			// should not return
 	perror( "CFA Translator error: execvp" );
 	exit( EXIT_FAILURE );
