Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/CodeGen/CodeGenerator.cc	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -277,11 +277,11 @@
 		std::list< Declaration* > &memb = enumDecl->get_members();
 		if (enumDecl->base && ! memb.empty()) {
-			unsigned long long last_val = -1; // if the first enum value has no explicit initializer, 
-			// as other 
+			unsigned long long last_val = -1; // if the first enum value has no explicit initializer,
+			// as other
 			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
 				ObjectDecl * obj = dynamic_cast< ObjectDecl* >( *i );
 				assert( obj );
-				output << "static const ";
-				output << genType(enumDecl->base, "", options) << " ";
+				output << "static ";
+				output << genType(enumDecl->base, "", options) << " const ";
 				output << mangleName( obj ) << " ";
 				output << " = ";
@@ -914,5 +914,5 @@
 	}
 
-	// QualifiedNameExpr should not reach to CodeGen. 
+	// QualifiedNameExpr should not reach to CodeGen.
 	// FixQualifiedName Convert QualifiedNameExpr to VariableExpr
 	void CodeGenerator::postvisit( QualifiedNameExpr * expr ) {
Index: src/ControlStruct/LabelGeneratorNew.cpp
===================================================================
--- src/ControlStruct/LabelGeneratorNew.cpp	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/ControlStruct/LabelGeneratorNew.cpp	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -14,6 +14,4 @@
 //
 
-using namespace std;
-
 #include "LabelGeneratorNew.hpp"
 
@@ -21,4 +19,6 @@
 #include "AST/Label.hpp"
 #include "AST/Stmt.hpp"
+
+using namespace std;
 using namespace ast;
 
Index: src/ControlStruct/MultiLevelExit.cpp
===================================================================
--- src/ControlStruct/MultiLevelExit.cpp	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/ControlStruct/MultiLevelExit.cpp	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -356,5 +356,5 @@
 	vec.emplace_back( nullptr );
 	for ( size_t i = vec.size() - 1 ; 0 < i ; --i ) {
-		vec[ i ] = move( vec[ i - 1 ] );
+		vec[ i ] = std::move( vec[ i - 1 ] );
 	}
 	vec[ 0 ] = element;
@@ -511,5 +511,5 @@
 
 void MultiLevelExitCore::previsit( const FinallyClause * ) {
-	GuardAction([this, old = move( enclosing_control_structures)](){ enclosing_control_structures = move(old); });
+	GuardAction([this, old = std::move( enclosing_control_structures)](){ enclosing_control_structures = std::move(old); });
 	enclosing_control_structures = vector<Entry>();
 	GuardValue( inFinally ) = true;
Index: src/GenPoly/ScrubTyVars.cc
===================================================================
--- src/GenPoly/ScrubTyVars.cc	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/GenPoly/ScrubTyVars.cc	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -201,9 +201,9 @@
 
 	switch ( typeVar->second.kind ) {
-	case ast::TypeDecl::Dtype:
-	case ast::TypeDecl::Ttype:
+	case ::TypeDecl::Dtype:
+	case ::TypeDecl::Ttype:
 		return new ast::PointerType(
 			new ast::VoidType( type->qualifiers ) );
-	case ast::TypeDecl::Ftype:
+	case ::TypeDecl::Ftype:
 		return new ast::PointerType(
 			new ast::FunctionType( ast::VariableArgs ) );
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/Parser/lex.ll	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -24,4 +24,8 @@
 
 //**************************** Includes and Defines ****************************
+
+#ifdef __clang__
+#pragma GCC diagnostic ignored "-Wnull-conversion"
+#endif
 
 // trigger before each matching rule's action
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/Parser/parser.yy	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -58,7 +58,7 @@
 
 // lex uses __null in a boolean context, it's fine.
-#pragma GCC diagnostic ignored "-Wpragmas"
+#ifdef __clang__
 #pragma GCC diagnostic ignored "-Wparentheses-equality"
-#pragma GCC diagnostic warning "-Wpragmas"
+#endif
 
 extern DeclarationNode * parseTree;
@@ -2570,5 +2570,5 @@
 		{
 			$$ = DeclarationNode::newEnum( $5, $8, true, true, nullptr )->addQualifiers( $4 )->addQualifiers( $6 );
-		}	
+		}
 	| ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt typedef_name attribute_list_opt '{' enumerator_list comma_opt '}'
 		{
@@ -2585,5 +2585,5 @@
 	ENUM attribute_list_opt identifier
 		{ typedefTable.makeTypedef( *$3 ); $$ = DeclarationNode::newEnum( $3, 0, false, false )->addQualifiers( $2 ); }
-	| ENUM attribute_list_opt type_name	
+	| ENUM attribute_list_opt type_name
 		{ typedefTable.makeTypedef( *$3->type->symbolic.name );	$$ = DeclarationNode::newEnum( $3->type->symbolic.name, 0, false, false )->addQualifiers( $2 ); }
 	;
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -299,5 +299,5 @@
 				SemanticError( expr->location, stream.str() );
 			}
-			alternatives = move(pruned);
+			alternatives = std::move(pruned);
 			PRINT(
 				std::cerr << "there are " << oldsize << " alternatives before elimination" << std::endl;
@@ -573,6 +573,6 @@
 				unsigned tupleStart = 0, Cost cost = Cost::zero, unsigned nextExpl = 0,
 				unsigned explAlt = 0 )
-			: parent(parent), expr(expr->clone()), cost(cost), env(move(env)), need(move(need)),
-			  have(move(have)), openVars(move(openVars)), nextArg(nextArg), tupleStart(tupleStart),
+			: parent(parent), expr(expr->clone()), cost(cost), env(std::move(env)), need(std::move(need)),
+			  have(std::move(have)), openVars(std::move(openVars)), nextArg(nextArg), tupleStart(tupleStart),
 			  nextExpl(nextExpl), explAlt(explAlt) {}
 
@@ -580,5 +580,5 @@
 				OpenVarSet&& openVars, unsigned nextArg, Cost added )
 			: parent(o.parent), expr(o.expr ? o.expr->clone() : nullptr), cost(o.cost + added),
-			  env(move(env)), need(move(need)), have(move(have)), openVars(move(openVars)),
+			  env(std::move(env)), need(std::move(need)), have(std::move(have)), openVars(std::move(openVars)),
 			  nextArg(nextArg), tupleStart(o.tupleStart), nextExpl(0), explAlt(0) {}
 
@@ -707,5 +707,5 @@
 						if ( unify( ttype, argType, newResult.env, newResult.need, newResult.have,
 								newResult.openVars, indexer ) ) {
-							finalResults.push_back( move(newResult) );
+							finalResults.push_back( std::move(newResult) );
 						}
 
@@ -726,6 +726,6 @@
 						if ( expl.exprs.empty() ) {
 							results.emplace_back(
-								results[i], move(env), copy(results[i].need),
-								copy(results[i].have), move(openVars), nextArg + 1, expl.cost );
+								results[i], std::move(env), copy(results[i].need),
+								copy(results[i].have), std::move(openVars), nextArg + 1, expl.cost );
 
 							continue;
@@ -734,6 +734,6 @@
 						// add new result
 						results.emplace_back(
-							i, expl.exprs.front().get(), move(env), copy(results[i].need),
-							copy(results[i].have), move(openVars), nextArg + 1,
+							i, expl.exprs.front().get(), std::move(env), copy(results[i].need),
+							copy(results[i].have), std::move(openVars), nextArg + 1,
 							nTuples, expl.cost, expl.exprs.size() == 1 ? 0 : 1, j );
 					}
@@ -747,5 +747,5 @@
 			// splice final results onto results
 			for ( std::size_t i = 0; i < finalResults.size(); ++i ) {
-				results.push_back( move(finalResults[i]) );
+				results.push_back( std::move(finalResults[i]) );
 			}
 			return ! finalResults.empty();
@@ -783,5 +783,5 @@
 
 					results.emplace_back(
-						i, expr, move(env), move(need), move(have), move(openVars), nextArg,
+						i, expr, std::move(env), std::move(need), std::move(have), std::move(openVars), nextArg,
 						nTuples, Cost::zero, nextExpl, results[i].explAlt );
 				}
@@ -801,6 +801,6 @@
 								indexer ) ) {
 							results.emplace_back(
-								i, new DefaultArgExpr( cnstExpr ), move(env), move(need), move(have),
-								move(openVars), nextArg, nTuples );
+								i, new DefaultArgExpr( cnstExpr ), std::move(env), std::move(need), std::move(have),
+								std::move(openVars), nextArg, nTuples );
 						}
 					}
@@ -824,5 +824,5 @@
 				if ( expl.exprs.empty() ) {
 					results.emplace_back(
-						results[i], move(env), move(need), move(have), move(openVars),
+						results[i], std::move(env), std::move(need), std::move(have), std::move(openVars),
 						nextArg + 1, expl.cost );
 
@@ -846,5 +846,5 @@
 					// add new result
 					results.emplace_back(
-						i, expr, move(env), move(need), move(have), move(openVars), nextArg + 1,
+						i, expr, std::move(env), std::move(need), std::move(have), std::move(openVars), nextArg + 1,
 						nTuples, expl.cost, expl.exprs.size() == 1 ? 0 : 1, j );
 				}
@@ -962,6 +962,6 @@
 						if ( expl.exprs.empty() ) {
 							results.emplace_back(
-								results[i], move(env), copy(results[i].need),
-								copy(results[i].have), move(openVars), nextArg + 1, expl.cost );
+								results[i], std::move(env), copy(results[i].need),
+								copy(results[i].have), std::move(openVars), nextArg + 1, expl.cost );
 
 							continue;
@@ -970,6 +970,6 @@
 						// add new result
 						results.emplace_back(
-							i, expl.exprs.front().get(), move(env), copy(results[i].need),
-							copy(results[i].have), move(openVars), nextArg + 1, 0,
+							i, expl.exprs.front().get(), std::move(env), copy(results[i].need),
+							copy(results[i].have), std::move(openVars), nextArg + 1, 0,
 							expl.cost, expl.exprs.size() == 1 ? 0 : 1, j );
 					}
@@ -1067,5 +1067,5 @@
 				funcE.emplace_back( actual, indexer );
 			}
-			argExpansions.insert( argExpansions.begin(), move(funcE) );
+			argExpansions.insert( argExpansions.begin(), std::move(funcE) );
 
 			for ( AltList::iterator funcOp = funcOpFinder.alternatives.begin();
@@ -1116,5 +1116,5 @@
 		} // for
 
-		candidates = move(alternatives);
+		candidates = std::move(alternatives);
 
 		// use a new list so that alternatives are not examined by addAnonConversions twice.
Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/ResolvExpr/Unify.cc	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -727,5 +727,5 @@
 		};
 	}
-	
+
 	std::vector< ast::ptr< ast::Type > > flattenList(
 		const std::vector< ast::ptr< ast::Type > > & src, ast::TypeEnvironment & env
@@ -989,5 +989,5 @@
 				if ( isTuple && isTuple2 ) {
 					++it; ++jt;  // skip ttype parameters before break
-				} else if ( isTuple ) { 
+				} else if ( isTuple ) {
 					// bundle remaining params into tuple
 					pty2 = tupleFromExprs( param2, jt, params2.end(), pty->qualifiers );
@@ -1035,5 +1035,5 @@
 	private:
 		/// Creates a tuple type based on a list of Type
-		
+
 
 		static bool unifyList(
@@ -1207,5 +1207,5 @@
 			}
 
-		} else if ( common = commonType( t1, t2, env, need, have, open, widen, symtab )) {
+		} else if (( common = commonType( t1, t2, env, need, have, open, widen, symtab ))) {
 			// no exact unification, but common type
 			auto c = shallowCopy(common.get());
Index: src/Validate/ReplaceTypedef.cpp
===================================================================
--- src/Validate/ReplaceTypedef.cpp	(revision 20737104831e8e78cbe01e2e63a3969afaec6c88)
+++ src/Validate/ReplaceTypedef.cpp	(revision 9cd5bd2665deba4718673a3686869490de73341e)
@@ -193,5 +193,5 @@
 }
 
-void ReplaceTypedefCore::previsit( ast::FunctionDecl const * decl ) {
+void ReplaceTypedefCore::previsit( ast::FunctionDecl const * ) {
 	GuardScope( typedefNames );
 	GuardScope( typedeclNames );
@@ -199,5 +199,5 @@
 }
 
-void ReplaceTypedefCore::previsit( ast::ObjectDecl const * decl ) {
+void ReplaceTypedefCore::previsit( ast::ObjectDecl const * ) {
 	GuardScope( typedefNames );
 	GuardScope( typedeclNames );
@@ -241,10 +241,10 @@
 }
 
-void ReplaceTypedefCore::previsit( ast::CastExpr const * expr ) {
-	GuardScope( typedefNames );
-	GuardScope( typedeclNames );
-}
-
-void ReplaceTypedefCore::previsit( ast::CompoundStmt const * expr ) {
+void ReplaceTypedefCore::previsit( ast::CastExpr const * ) {
+	GuardScope( typedefNames );
+	GuardScope( typedeclNames );
+}
+
+void ReplaceTypedefCore::previsit( ast::CompoundStmt const * ) {
 	GuardScope( typedefNames );
 	GuardScope( typedeclNames );
@@ -273,5 +273,5 @@
 }
 
-void ReplaceTypedefCore::previsit( ast::TraitDecl const * decl ) {
+void ReplaceTypedefCore::previsit( ast::TraitDecl const * ) {
 	GuardScope( typedefNames );
 	GuardScope( typedeclNames );
