Index: driver/cc1.cc
===================================================================
--- driver/cc1.cc	(revision 92f413c9a1aee8978b4e7e9789db6ad0d6a086b2)
+++ driver/cc1.cc	(revision b740f0b9583eaf5e7eea275098556a30031a4056)
@@ -10,6 +10,6 @@
 // Created On       : Fri Aug 26 14:23:51 2005
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 19 10:46:11 2018
-// Update Count     : 111
+// Last Modified On : Wed Aug 22 17:26:09 2018
+// Update Count     : 120
 //
 
@@ -47,18 +47,24 @@
 const string suffixes[NumSuffixes] = { "cfa", "hfa", };
 
-bool suffix( string arg ) {
+
+void suffix( string arg, const char * args[], int & nargs ) {
 	//std::cerr << arg << std::endl;
 	size_t dot = arg.find_last_of( "." );
 	//std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
-	if ( dot == string::npos ) return false;
+	if ( dot == string::npos ) return;
 	string sx = arg.substr( dot + 1 );
 	for ( int i = 0; i < NumSuffixes; i += 1 ) {
-		if ( sx == suffixes[i] ) return true;
-	} // for
-	return false;
+		if ( sx == suffixes[i] ) {
+			args[nargs] = "-x";
+			nargs += 1;
+			args[nargs] = "c";
+			nargs += 1;
+			return;
+		} // if
+	} // for
 } // suffix
 
 
-void checkEnv( const char *args[], int &nargs ) {
+void checkEnv( const char * args[], int & nargs ) {
 	char *value;
 
@@ -263,4 +269,5 @@
 
 		args[0] = compiler_name.c_str();
+		suffix( cpp_in, args, nargs );					// check suffix
 		args[nargs] = cpp_in;
 		nargs += 1;
@@ -310,10 +317,5 @@
 
 		args[0] = compiler_name.c_str();
-		if ( suffix( cpp_in ) ) {
-			args[nargs] = "-x";
-			nargs += 1;
-			args[nargs] = "c";
-			nargs += 1;
-		} // if
+		suffix( cpp_in, args, nargs );					// check suffix
 		args[nargs] = cpp_in;							// input to cpp
 		nargs += 1;
@@ -354,5 +356,5 @@
 
 	if ( fork() == 0 ) {								// child runs CFA
-		cargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
+		cargs[0] = ( *new string( bprefix + "cfa-cpp" ) ).c_str();
 
 		// Source file-name used to generate routine names containing global initializations for TU.
Index: driver/cfa.cc
===================================================================
--- driver/cfa.cc	(revision 92f413c9a1aee8978b4e7e9789db6ad0d6a086b2)
+++ driver/cfa.cc	(revision b740f0b9583eaf5e7eea275098556a30031a4056)
@@ -10,6 +10,6 @@
 // Created On       : Tue Aug 20 13:44:49 2002
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 10 18:17:58 2018
-// Update Count     : 259
+// Last Modified On : Wed Aug 22 17:26:19 2018
+// Update Count     : 265
 //
 
@@ -43,14 +43,19 @@
 const string suffixes[NumSuffixes] = { "cfa", "hfa", };
 
-bool suffix( string arg ) {
+void suffix( string arg, const char * args[], int & nargs ) {
 	//std::cerr << arg << std::endl;
 	size_t dot = arg.find_last_of( "." );
 	//std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
-	if ( dot == string::npos ) return false;
+	if ( dot == string::npos ) return;
 	string sx = arg.substr( dot + 1 );
 	for ( int i = 0; i < NumSuffixes; i += 1 ) {
-		if ( sx == suffixes[i] ) return true;
+		if ( sx == suffixes[i] ) {
+			args[nargs] = "-x";
+			nargs += 1;
+			args[nargs] = "c";
+			nargs += 1;
+			return;
+		} // if
 	} // for
-	return false;
 } // suffix
 
@@ -294,9 +299,6 @@
 		} else {
 			bool opt = false;
-			if ( ! xflag && suffix( arg ) ) {
-				args[nargs] = "-x";
-				nargs += 1;
-				args[nargs] = "c";
-				nargs += 1;
+			if ( ! xflag ) {
+				suffix( arg, args, nargs );				// check suffix
 				// args[nargs] = ( *new string( string("-D__GCC_X__=c") ) ).c_str(); // add the argument for -x
 				// nargs += 1;
@@ -342,10 +344,10 @@
 		nargs += 1;
 		if ( ! noincstd_flag ) {							// do not use during build
-			args[nargs] = "-I" CFA_INCDIR "/stdhdr";
+			args[nargs] = "-I" CFA_INCDIR "stdhdr";
 			nargs += 1;
 		} // if
-		args[nargs] = "-I" CFA_INCDIR "/concurrency";
-		nargs += 1;
-		args[nargs] = "-I" CFA_INCDIR "/containers";
+		args[nargs] = "-I" CFA_INCDIR "concurrency";
+		nargs += 1;
+		args[nargs] = "-I" CFA_INCDIR "containers";
 		nargs += 1;
 	} else {
@@ -470,5 +472,6 @@
 
 	if ( Bprefix.length() == 0 ) {
-		Bprefix = !intree ? installlibdir : srcdriverdir;
+		Bprefix = ! intree ? installlibdir : srcdriverdir;
+		if ( Bprefix[Bprefix.length() - 1] != '/' ) Bprefix += '/';
 		args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
 		nargs += 1;
@@ -504,5 +507,5 @@
 		args[nargs] = "-D__int8_t_defined";				// prevent gcc type-size attributes
 		nargs += 1;
-		args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
+		args[nargs] = ( *new string( string("-B") + Bprefix ) ).c_str();
 		nargs += 1;
 		args[nargs] = "-lm";
