Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/Parser/StatementNode.cc	(revision 6d49ea3165b7fb8906721da9a6f6949632d35140)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 16 16:39:43 2017
-// Update Count     : 340
+// Last Modified On : Thu Aug 17 16:01:31 2017
+// Update Count     : 345
 //
 
@@ -24,4 +24,5 @@
 #include "SynTree/Expression.h"    // for Expression, ConstantExpr
 #include "SynTree/Label.h"         // for Label, noLabels
+#include "SynTree/Declaration.h"
 #include "SynTree/Statement.h"     // for Statement, BranchStmt, CaseStmt
 #include "parserutility.h"         // for notZeroExpr
@@ -98,13 +99,7 @@
 	} // if
 
-	return new IfStmt( noLabels, notZeroExpr(
-							   /*ctl->condition
-								 ?*/ maybeMoveBuild< Expression >(ctl->condition)
-								 /*: new VariableExpr( init.end() )*/ )
-						   , thenb, elseb );
-	// ret->initialization = init;
-	// delete ctl;
-	// assert( ret );
-	// return ret;
+	Expression * cond = ctl->condition ? maybeMoveBuild< Expression >(ctl->condition) : new VariableExpr( dynamic_cast<DeclarationWithType *>( dynamic_cast<DeclStmt *>( init.back() )->decl ) );
+	delete ctl;
+	return new IfStmt( noLabels, notZeroExpr( cond ), thenb, elseb, init );
 }
 
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/Parser/parser.yy	(revision 6d49ea3165b7fb8906721da9a6f6949632d35140)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 16 18:09:14 2017
-// Update Count     : 2485
+// Last Modified On : Thu Aug 17 15:52:12 2017
+// Update Count     : 2489
 //
 
@@ -796,9 +796,9 @@
 
 selection_statement:
-	IF '(' if_control_expression ')' statement				%prec THEN
+	IF '(' push if_control_expression ')' statement				%prec THEN
 		// explicitly deal with the shift/reduce conflict on if/else
-		{ $$ = new StatementNode( build_if( $3, $5, nullptr ) ); }
-	| IF '(' if_control_expression ')' statement ELSE statement
-		{ $$ = new StatementNode( build_if( $3, $5, $7 ) ); }
+		{ $$ = new StatementNode( build_if( $4, $6, nullptr ) ); }
+	| IF '(' push if_control_expression ')' statement ELSE statement
+		{ $$ = new StatementNode( build_if( $4, $6, $8 ) ); }
 	| SWITCH '(' comma_expression ')' case_clause		// CFA
 		{ $$ = new StatementNode( build_switch( $3, $5 ) ); }
@@ -823,11 +823,11 @@
 
 if_control_expression:
-	comma_expression
+	comma_expression pop
 		{ $$ = new IfCtl( nullptr, $1 ); }
-	| c_declaration										// no semi-coln
+	| c_declaration										// no semi-colon
 		{ $$ = new IfCtl( $1, nullptr ); }
 	| cfa_declaration									// no semi-colon
 		{ $$ = new IfCtl( $1, nullptr ); }
-	| declaration comma_expression
+	| declaration comma_expression						// semi-colon separated
 		{ $$ = new IfCtl( $1, $2 ); }
  	;
