Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 71f4e4f59e25d1ae31af19227f4d2a8a9365bac7)
+++ src/ResolvExpr/Resolver.cc	(revision f1e012b7aa1aaea6aa2dde9bcb3b0e83dcf13824)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 12:17:01 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jan 13 16:23:51 2016
-// Update Count     : 186
+// Last Modified On : Thu Jan 14 16:45:32 2016
+// Update Count     : 203
 //
 
@@ -60,4 +60,5 @@
 	  void resolveAggrInit( AggregateDecl *, InitIterator &, InitIterator & );
 	  void resolveSingleAggrInit( Declaration *, InitIterator &, InitIterator & );
+	  void fallbackInit( ConstructorInit * ctorInit );
 
 		std::list< Type * > functionReturn;
@@ -467,17 +468,33 @@
 	}
 
+	// ConstructorInit - fall back on C-style initializer
+	void Resolver::fallbackInit( ConstructorInit * ctorInit ) {
+		// could not find valid constructor, or found an intrinsic constructor
+		// fall back on C-style initializer
+		delete ctorInit->get_ctor();
+		ctorInit->set_ctor( NULL );
+		maybeAccept( ctorInit->get_init(), *this );
+	}
+
 	void Resolver::visit( ConstructorInit *ctorInit ) {
 		TypeEnvironment env;
 		AlternativeFinder finder( *this, env );
 		finder.find( ctorInit->get_ctor() );
+
 		if ( finder.get_alternatives().size() == 0 ) {
-			// could not find valid constructor
-			delete ctorInit->get_ctor();
-			ctorInit->set_ctor( NULL );
-
-			maybeAccept( ctorInit->get_init(), *this );
+			fallbackInit( ctorInit );
 		} else if ( finder.get_alternatives().size() == 1 ) {
+			Alternative &choice = finder.get_alternatives().front();
+			if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( choice.expr ) ) {
+				if ( VariableExpr * function = dynamic_cast< VariableExpr * > ( appExpr->get_function() ) ) {
+					if ( function->get_var()->get_linkage() == LinkageSpec::Intrinsic ) {
+						// if the constructor that was found is intrinsic, reset to C-style
+						// initializer so that code generation is easy to handle
+						fallbackInit( ctorInit );
+						return;
+					}
+				}
+			}
 			// found a constructor - can get rid of C-style initializer
-			Alternative &choice = finder.get_alternatives().front();
 			Expression *newExpr = choice.expr->clone();
 			finishExpr( newExpr, choice.env );
