Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision cc79d97aac8c65840db0f7f3343a3822f28c7f51)
+++ src/CodeGen/GenType.cc	(revision 71bd8c643a0b33dbf0524e863716e19b32478cfd)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun  8 14:36:02 2015
-// Update Count     : 9
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jul 08 16:08:24 2015
+// Update Count     : 10
 //
 
@@ -93,10 +93,11 @@
 			os << "_Atomic ";
 		} // if
-		if ( isVarLen ) {
-			os << "*";
-		} // if
 		if ( dimension != 0 ) {
 			CodeGenerator cg( os );
 			dimension->accept( cg );
+		} else if ( isVarLen ) {
+			// no dimension expression on a VLA
+			// means it came in with the * token
+			os << "*";
 		} // if
 		os << "]";
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision cc79d97aac8c65840db0f7f3343a3822f28c7f51)
+++ src/Parser/DeclarationNode.cc	(revision 71bd8c643a0b33dbf0524e863716e19b32478cfd)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 12:34:05 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul  3 12:35:02 2015
-// Update Count     : 108
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jul 08 16:40:37 2015
+// Update Count     : 121
 //
 
@@ -284,5 +284,9 @@
 	newnode->type->array->dimension = size;
 	newnode->type->array->isStatic = isStatic;
-	newnode->type->array->isVarLen = false;
+	if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantNode *>( newnode->type->array->dimension ) ) {
+		newnode->type->array->isVarLen = false;
+	} else {
+		newnode->type->array->isVarLen = true;
+	} // if
 	return newnode->addQualifiers( qualifiers );
 }
@@ -464,4 +468,10 @@
 			bitfieldWidth = o->bitfieldWidth;
 		} // if
+
+		// there may be typedefs chained onto the type
+		if ( o->get_link() ) {
+			set_link( o->get_link()->clone() );
+		}
+
 	} // if
 	delete o;
Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision cc79d97aac8c65840db0f7f3343a3822f28c7f51)
+++ src/Parser/ParseNode.cc	(revision 71bd8c643a0b33dbf0524e863716e19b32478cfd)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:26:29 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun  6 20:17:58 2015
-// Update Count     : 23
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jul 08 14:46:45 2015
+// Update Count     : 25
 // 
 
@@ -41,10 +41,7 @@
 
 ParseNode *ParseNode::set_link( ParseNode *next_ ) {
-	ParseNode *follow;
-
 	if ( next_ == 0 ) return this;
 
-	for ( follow = this; follow->next != 0; follow = follow->next );
-	follow->next = next_;
+	get_last()->next = next_;
 
 	return this;
Index: src/SymTab/TypeEquality.cc
===================================================================
--- src/SymTab/TypeEquality.cc	(revision cc79d97aac8c65840db0f7f3343a3822f28c7f51)
+++ src/SymTab/TypeEquality.cc	(revision 71bd8c643a0b33dbf0524e863716e19b32478cfd)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jul 07 16:28:29 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jul 08 13:41:53 2015
-// Update Count     : 34
+// Last Modified On : Wed Jul 08 16:20:09 2015
+// Update Count     : 35
 //
 
@@ -102,4 +102,15 @@
 			}
 
+			if ( ! arrayType->get_isVarLen() && ! at->get_isVarLen() ) {
+				ConstantExpr * ce1 = dynamic_cast< ConstantExpr * >( arrayType->get_dimension() );
+				ConstantExpr * ce2 = dynamic_cast< ConstantExpr * >( at->get_dimension() );
+				assert(ce1 && ce2);
+
+				Constant * c1 = ce1->get_constant();
+				Constant * c2 = ce2->get_constant();
+
+				result = result && c1->get_value() == c2->get_value();
+			}
+
 			other = at->get_base();
 			arrayType->get_base()->accept( *this );
