Index: src/Common/SemanticError.cc
===================================================================
--- src/Common/SemanticError.cc	(revision d28a03ecbd43a9006978a2f77f2752fc4daadd7d)
+++ src/Common/SemanticError.cc	(revision af39199d0d0cb34565e8c5ba7539e2088c42edad)
@@ -7,9 +7,9 @@
 // SemanticError.cc --
 //
-// Author           : Richard C. Bilson
+// Author           : Thierry Delisle
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 29 18:17:35 2017
-// Update Count     : 3
+// Last Modified On : Wed May  2 18:13:37 2018
+// Update Count     : 8
 //
 
@@ -59,5 +59,5 @@
 void SemanticWarning_Set(const char * const name, Severity s) {
 	size_t idx = 0;
-	for ( auto  & w : WarningFormats ) {
+	for ( const auto & w : WarningFormats ) {
 		if ( std::strcmp( name, w.name ) == 0 ) {
 			get_severities()[idx] = s;
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision d28a03ecbd43a9006978a2f77f2752fc4daadd7d)
+++ src/Common/SemanticError.h	(revision af39199d0d0cb34565e8c5ba7539e2088c42edad)
@@ -7,9 +7,9 @@
 // SemanticError.h --
 //
-// Author           : Richard C. Bilson
+// Author           : Thierry Delisle
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May  2 15:00:01 2018
-// Update Count     : 23
+// Last Modified On : Wed May  2 18:13:15 2018
+// Update Count     : 29
 //
 
@@ -17,4 +17,5 @@
 
 #include "ErrorObjects.h"
+#include <cstring>
 
 //-----------------------------------------------------------------------------
@@ -76,4 +77,12 @@
 void SemanticWarning_Set           (const char * const name, Severity s);
 
+// SKULLDUGGERY: cfa.cc is built before SemanticError.cc but needs this routine.
+static inline bool SemanticWarning_Exist(const char * const name) {
+	for ( const auto & w : WarningFormats ) {
+		if ( std::strcmp( name, w.name ) == 0 ) return true;
+	}
+	return false;
+}
+
 //-----------------------------------------------------------------------------
 // Helpers
Index: src/driver/cfa.cc
===================================================================
--- src/driver/cfa.cc	(revision d28a03ecbd43a9006978a2f77f2752fc4daadd7d)
+++ src/driver/cfa.cc	(revision af39199d0d0cb34565e8c5ba7539e2088c42edad)
@@ -10,6 +10,6 @@
 // Created On       : Tue Aug 20 13:44:49 2002
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May  2 14:32:08 2018
-// Update Count     : 222
+// Last Modified On : Wed May  2 17:57:43 2018
+// Update Count     : 224
 //
 
@@ -176,11 +176,8 @@
 					unsigned int adv = prefix( arg, "-Wno-" ) ? 5 : 2;
 					args[nargs] = argv[i];				// conditionally pass the argument along
-					char * warning = argv[i] + adv;		// extract warning
-					for ( const auto w : WarningFormats ) {
-						if ( strcmp( warning, w.name ) == 0 ) {	// replace the argument for cfa-cpp
-							args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str();
-							break;
-						} // if
-					} // for
+					const char * warning = argv[i] + adv;	  // extract warning
+					if ( SemanticWarning_Exist( warning ) ) { // replace the argument for cfa-cpp
+						args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str();
+					} // if
 					nargs += 1;
 				} // if
