Index: src/GenPoly/DeclMutator.cc
===================================================================
--- src/GenPoly/DeclMutator.cc	(revision ea5daeb4b5e91cb1198c40e000259aabd648fe5a)
+++ src/GenPoly/DeclMutator.cc	(revision c3314061a7f72e82701eb3e9bdf37c2cd6d45268)
@@ -10,6 +10,6 @@
 // Created On       : Fri Nov 27 14:44:00 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 12 17:38:46 2016
-// Update Count     : 2
+// Last Modified On : Thu Aug  4 11:16:43 2016
+// Update Count     : 3
 //
 
@@ -163,5 +163,5 @@
 	Statement* DeclMutator::mutate(SwitchStmt *switchStmt) {
 		switchStmt->set_condition( maybeMutate( switchStmt->get_condition(), *this ) );
-		mutateAll( switchStmt->get_branches(), *this );
+		mutateAll( switchStmt->get_statements(), *this );
 		return switchStmt;
 	}
Index: src/GenPoly/DeclMutator.h
===================================================================
--- src/GenPoly/DeclMutator.h	(revision ea5daeb4b5e91cb1198c40e000259aabd648fe5a)
+++ src/GenPoly/DeclMutator.h	(revision c3314061a7f72e82701eb3e9bdf37c2cd6d45268)
@@ -28,7 +28,10 @@
 	class DeclMutator : public Mutator {
 	public:
+		typedef Mutator Parent;
+
 		DeclMutator();
 		virtual ~DeclMutator();
-		
+
+		using Parent::mutate;
 		virtual CompoundStmt* mutate(CompoundStmt *compoundStmt);
 		virtual Statement* mutate(IfStmt *ifStmt);
@@ -42,5 +45,5 @@
 		/// Mutates a list of declarations with this visitor
 		void mutateDeclarationList(std::list< Declaration* >& decls);
-		
+
 		/// Called on entry to a new scope; overriders should call this as a super-class call
 		virtual void doBeginScope();
Index: src/GenPoly/PolyMutator.cc
===================================================================
--- src/GenPoly/PolyMutator.cc	(revision ea5daeb4b5e91cb1198c40e000259aabd648fe5a)
+++ src/GenPoly/PolyMutator.cc	(revision c3314061a7f72e82701eb3e9bdf37c2cd6d45268)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 12 17:39:32 2016
-// Update Count     : 12
+// Last Modified On : Thu Aug  4 11:26:22 2016
+// Update Count     : 16
 //
 
@@ -99,5 +99,5 @@
 
 	Statement * PolyMutator::mutate(SwitchStmt *switchStmt) {
-		mutateStatementList( switchStmt->get_branches() );
+		mutateStatementList( switchStmt->get_statements() );
 		switchStmt->set_condition( mutateExpression( switchStmt->get_condition() ) );
 		return switchStmt;
Index: src/GenPoly/Specialize.cc
===================================================================
--- src/GenPoly/Specialize.cc	(revision ea5daeb4b5e91cb1198c40e000259aabd648fe5a)
+++ src/GenPoly/Specialize.cc	(revision c3314061a7f72e82701eb3e9bdf37c2cd6d45268)
@@ -31,4 +31,5 @@
 #include "Common/UniqueName.h"
 #include "Common/utility.h"
+#include "InitTweak/InitTweak.h"
 
 namespace GenPoly {
@@ -184,10 +185,13 @@
 		mutateAll( appExpr->get_args(), *this );
 
-		// create thunks for the inferred parameters
-		for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) {
-			inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &appExpr->get_inferParams() );
-		}
-
-		handleExplicitParams( appExpr );
+		if ( ! InitTweak::isIntrinsicCallExpr( appExpr ) ) {
+			// create thunks for the inferred parameters
+			// don't need to do this for intrinsic calls, because they aren't actually passed
+			for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) {
+				inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &appExpr->get_inferParams() );
+			}
+
+			handleExplicitParams( appExpr );
+		}
 
 		return appExpr;
