Index: src/ControlStruct/CaseRangeMutator.cc
===================================================================
--- src/ControlStruct/CaseRangeMutator.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/CaseRangeMutator.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 30 13:28:55 2016
-// Update Count     : 8
+// Last Modified On : Tue Jul 12 17:35:13 2016
+// Update Count     : 9
 //
 
@@ -28,9 +28,4 @@
 
 namespace ControlStruct {
-	Statement *CaseRangeMutator::mutate( ChooseStmt *chooseStmt ) {
-		// There shouldn't be any `choose' statements by now, throw an exception or something.
-		throw( 0 ) ; /* FIXME */
-	}
-
 	Statement *CaseRangeMutator::mutate( SwitchStmt *switchStmt ) {
 		std::list< Statement * > &cases = switchStmt->get_branches();
@@ -69,9 +64,4 @@
 
 		return switchStmt;
-	}
-
-	Statement *CaseRangeMutator::mutate( FallthruStmt *fallthruStmt ) {
-		//delete fallthruStmt;
-		return new NullStmt();
 	}
 
Index: src/ControlStruct/CaseRangeMutator.h
===================================================================
--- src/ControlStruct/CaseRangeMutator.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/CaseRangeMutator.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:22:51 2015
-// Update Count     : 3
+// Last Modified On : Tue Jul 12 17:35:30 2016
+// Update Count     : 4
 //
 
@@ -27,7 +27,5 @@
 		CaseRangeMutator() {}
 
-		virtual Statement *mutate( ChooseStmt * );
 		virtual Statement *mutate( SwitchStmt * );
-		virtual Statement *mutate( FallthruStmt * );
 		virtual Statement *mutate( CaseStmt * );
 	  private:
Index: src/ControlStruct/ChooseMutator.cc
===================================================================
--- src/ControlStruct/ChooseMutator.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ 	(revision )
@@ -1,71 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// ChooseMutator.cc -- 
-//
-// Author           : Rodolfo G. Esteves
-// Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jun 03 15:30:20 2015
-// Update Count     : 5
-//
-
-#include <list>
-
-#include "SynTree/Statement.h"
-#include "ChooseMutator.h"
-
-namespace ControlStruct {
-	Statement *ChooseMutator::mutate( ChooseStmt *chooseStmt ) {
-		bool enclosingChoose = insideChoose;
-		insideChoose = true;
-		mutateAll( chooseStmt->get_branches(), *this );
-		insideChoose = enclosingChoose;
-		return new SwitchStmt( chooseStmt->get_labels(),  chooseStmt->get_condition(), chooseStmt->get_branches() );
-	}
-
-	Statement *ChooseMutator::mutate( SwitchStmt *switchStmt ) {
-		bool enclosingChoose = insideChoose;
-		insideChoose = false;
-		mutateAll( switchStmt->get_branches(), *this );
-		insideChoose = enclosingChoose;
-		return switchStmt;
-	}
-
-	Statement *ChooseMutator::mutate( FallthruStmt *fallthruStmt ) {
-		delete fallthruStmt;
-		return new NullStmt();
-	}
-
-	Statement* ChooseMutator::mutate( CaseStmt *caseStmt ) {
-		std::list< Statement * > &stmts = caseStmt->get_statements();
-
-		// the difference between switch and choose is that switch has an implicit fallthrough
-		// to the next case, whereas choose has an implicit break at the end of the current case.
-		// thus to transform a choose statement into a switch, we only need to insert breaks at the
-		// end of any case that doesn't already end in a break and that doesn't end in a fallthru
-
-		if ( insideChoose ) {
-			BranchStmt *posBrk;
-			if ( (( posBrk = dynamic_cast< BranchStmt * > ( stmts.back() ) ) && 
-				  ( posBrk->get_type() == BranchStmt::Break ))  // last statement in the list is a (superfluous) 'break' 
-				 || dynamic_cast< FallthruStmt * > ( stmts.back() ) )
-				; 
-			else {
-				stmts.push_back( new BranchStmt( std::list< Label >(), "", BranchStmt::Break ) );
-			} // if
-		} // if
-
-		mutateAll ( stmts, *this );
-		return caseStmt;
-	}
-} // namespace ControlStruct
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/ControlStruct/ChooseMutator.h
===================================================================
--- src/ControlStruct/ChooseMutator.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ 	(revision )
@@ -1,44 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// ChooseMutator.h -- 
-//
-// Author           : Rodolfo G. Esteves
-// Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:33:11 2015
-// Update Count     : 3
-//
-
-#ifndef CHOOSE_MUTATOR_H
-#define CHOOSE_MUTATOR_H
-
-#include "SynTree/Mutator.h"
-
-#include "Common/utility.h"
-
-namespace ControlStruct {
-	/// transform choose statements into switch statements
-	class ChooseMutator : public Mutator {
-	  public:
-		ChooseMutator() : insideChoose( false ) {}
-
-		virtual Statement *mutate( ChooseStmt * );
-		virtual Statement *mutate( SwitchStmt * );
-		virtual Statement *mutate( FallthruStmt * );
-		virtual Statement *mutate( CaseStmt * );
-	  private:
-		bool insideChoose;
-	};
-} // namespace ControlStruct
-
-#endif // CHOOSE_MUTATOR_H
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/ControlStruct/LabelFixer.h
===================================================================
--- src/ControlStruct/LabelFixer.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/LabelFixer.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jan 25 21:22:22 2016
-// Update Count     : 32
+// Last Modified On : Tue Jul 12 17:36:16 2016
+// Update Count     : 33
 //
 
@@ -46,6 +46,4 @@
 		virtual void visit( ForStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
 		virtual void visit( SwitchStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
-		virtual void visit( ChooseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
-		virtual void visit( FallthruStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
 		virtual void visit( CaseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
 		virtual void visit( ReturnStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/MLEMutator.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul  6 17:40:02 2016
-// Update Count     : 196
+// Last Modified On : Tue Jul 12 17:36:51 2016
+// Update Count     : 197
 //
 
@@ -248,8 +248,4 @@
 		return handleSwitchStmt( switchStmt );
 	}
-
-	Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
-		return handleSwitchStmt( switchStmt );
-	}
 } // namespace ControlStruct
 
Index: src/ControlStruct/MLEMutator.h
===================================================================
--- src/ControlStruct/MLEMutator.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/MLEMutator.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul  6 18:16:26 2016
-// Update Count     : 33
+// Last Modified On : Tue Jul 12 17:37:01 2016
+// Update Count     : 34
 //
 
@@ -42,5 +42,4 @@
 		virtual Statement *mutate( IfStmt *ifStmt ) override;
 		virtual Statement *mutate( SwitchStmt *switchStmt ) override;
-		virtual Statement *mutate( ChooseStmt *switchStmt ) override;
 
 		Statement *mutateLoop( Statement *bodyLoop, Entry &e );
Index: src/ControlStruct/Mutate.cc
===================================================================
--- src/ControlStruct/Mutate.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/Mutate.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jul 15 14:50:04 2015
-// Update Count     : 7
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:37:45 2016
+// Update Count     : 8
 //
 
@@ -20,5 +20,4 @@
 
 #include "Mutate.h"
-#include "ChooseMutator.h"
 #include "LabelFixer.h"
 #include "MLEMutator.h"
@@ -39,13 +38,9 @@
 		ForExprMutator formut;
 
-		// transform choose statements into switch statements
-		ChooseMutator chmut;
-
-		// normalizes label definitions and generates multi-level
-		// exit labels
+		// normalizes label definitions and generates multi-level exit labels
 		LabelFixer lfix;
 
 		// expand case ranges and turn fallthru into a null statement
-		CaseRangeMutator ranges;  // has to run after ChooseMutator
+		CaseRangeMutator ranges;
 
 		//ExceptMutator exc;
@@ -53,5 +48,4 @@
 
 		mutateAll( translationUnit, formut );
-		mutateAll( translationUnit, chmut );
 		acceptAll( translationUnit, lfix );
 		mutateAll( translationUnit, ranges );
Index: src/ControlStruct/module.mk
===================================================================
--- src/ControlStruct/module.mk	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ControlStruct/module.mk	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -11,6 +11,6 @@
 ## Created On       : Mon Jun  1 17:49:17 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jun  1 17:51:45 2015
-## Update Count     : 1
+## Last Modified On : Tue Jul 12 17:40:31 2016
+## Update Count     : 2
 ###############################################################################
 
@@ -20,5 +20,4 @@
 	ControlStruct/CaseRangeMutator.cc \
 	ControlStruct/Mutate.cc \
-	ControlStruct/ChooseMutator.cc \
 	ControlStruct/ForExprMutator.cc \
 	ControlStruct/LabelTypeChecker.cc
Index: src/GenPoly/DeclMutator.cc
===================================================================
--- src/GenPoly/DeclMutator.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/GenPoly/DeclMutator.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Aaron B. Moss
 // Created On       : Fri Nov 27 14:44:00 2015
-// Last Modified By : Aaron B. Moss
-// Last Modified On : Fri Nov 27 14:44:00 2015
-// Update Count     : 1
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:38:46 2016
+// Update Count     : 2
 //
 
@@ -167,10 +167,4 @@
 	}
 	
-	Statement* DeclMutator::mutate(ChooseStmt *chooseStmt) {
-		chooseStmt->set_condition( maybeMutate( chooseStmt->get_condition(), *this ) );
-		mutateAll( chooseStmt->get_branches(), *this );
-		return chooseStmt;
-	}
-	
 	Statement* DeclMutator::mutate(CaseStmt *caseStmt) {
 		caseStmt->set_condition( maybeMutate( caseStmt->get_condition(), *this ) );
Index: src/GenPoly/DeclMutator.h
===================================================================
--- src/GenPoly/DeclMutator.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/GenPoly/DeclMutator.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Aaron B. Moss
 // Created On       : Fri Nov 27 14:44:00 2015
-// Last Modified By : Aaron B. Moss
-// Last Modified On : Fri Nov 27 14:44:00 2015
-// Update Count     : 1
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:39:01 2016
+// Update Count     : 2
 //
 
@@ -36,5 +36,4 @@
 		virtual Statement* mutate(ForStmt *forStmt);
 		virtual Statement* mutate(SwitchStmt *switchStmt);
-		virtual Statement* mutate(ChooseStmt *chooseStmt);
 		virtual Statement* mutate(CaseStmt *caseStmt);
 		virtual Statement* mutate(TryStmt *tryStmt);
Index: src/GenPoly/PolyMutator.cc
===================================================================
--- src/GenPoly/PolyMutator.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/GenPoly/PolyMutator.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Mon May 02 14:50:58 2016
-// Update Count     : 11
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:39:32 2016
+// Update Count     : 12
 //
 
@@ -104,10 +104,4 @@
 	}
 
-	Statement * PolyMutator::mutate(ChooseStmt *switchStmt) {
-		mutateStatementList( switchStmt->get_branches() );
-		switchStmt->set_condition( mutateExpression( switchStmt->get_condition() ) );
-		return switchStmt;
-	}
-
 	Statement * PolyMutator::mutate(CaseStmt *caseStmt) {
 		mutateStatementList( caseStmt->get_statements() );
Index: src/GenPoly/PolyMutator.h
===================================================================
--- src/GenPoly/PolyMutator.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/GenPoly/PolyMutator.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Dec 08 15:19:05 2015
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:39:41 2016
+// Update Count     : 6
 //
 
@@ -37,5 +37,4 @@
 		virtual Statement* mutate(ForStmt *forStmt);
 		virtual Statement* mutate(SwitchStmt *switchStmt);
-		virtual Statement* mutate(ChooseStmt *chooseStmt);
 		virtual Statement* mutate(CaseStmt *caseStmt);
 		virtual Statement* mutate(TryStmt *returnStmt);
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/InitTweak/FixInit.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Wed Jan 13 16:29:30 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul  6 17:34:46 2016
-// Update Count     : 33
+// Last Modified On : Tue Jul 12 17:41:15 2016
+// Update Count     : 34
 //
 
@@ -118,6 +118,4 @@
 			virtual void visit( ForStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
 			virtual void visit( SwitchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
-			virtual void visit( ChooseStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
-			virtual void visit( FallthruStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
 			virtual void visit( CaseStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
 			virtual void visit( BranchStmt *stmt ) { handleStmt( stmt ); return Parent::visit( stmt ); }
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/Makefile.in	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -110,5 +110,4 @@
 	ControlStruct/driver_cfa_cpp-CaseRangeMutator.$(OBJEXT) \
 	ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-ChooseMutator.$(OBJEXT) \
 	ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT) \
 	ControlStruct/driver_cfa_cpp-LabelTypeChecker.$(OBJEXT) \
@@ -374,6 +373,5 @@
 	ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
 	ControlStruct/MLEMutator.cc ControlStruct/CaseRangeMutator.cc \
-	ControlStruct/Mutate.cc ControlStruct/ChooseMutator.cc \
-	ControlStruct/ForExprMutator.cc \
+	ControlStruct/Mutate.cc ControlStruct/ForExprMutator.cc \
 	ControlStruct/LabelTypeChecker.cc Designators/Processor.cc \
 	GenPoly/Box.cc GenPoly/GenPoly.cc GenPoly/PolyMutator.cc \
@@ -550,7 +548,4 @@
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
 ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
-	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-ChooseMutator.$(OBJEXT):  \
 	ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
@@ -826,5 +821,4 @@
 	-rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
 	-rm -f ControlStruct/driver_cfa_cpp-CaseRangeMutator.$(OBJEXT)
-	-rm -f ControlStruct/driver_cfa_cpp-ChooseMutator.$(OBJEXT)
 	-rm -f ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT)
 	-rm -f ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT)
@@ -937,5 +931,4 @@
 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po@am__quote@
@@ -1247,18 +1240,4 @@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
 
-ControlStruct/driver_cfa_cpp-ChooseMutator.o: ControlStruct/ChooseMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ChooseMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/ChooseMutator.cc' object='ControlStruct/driver_cfa_cpp-ChooseMutator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
-
-ControlStruct/driver_cfa_cpp-ChooseMutator.obj: ControlStruct/ChooseMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ChooseMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/ChooseMutator.cc' object='ControlStruct/driver_cfa_cpp-ChooseMutator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
-
 ControlStruct/driver_cfa_cpp-ForExprMutator.o: ControlStruct/ForExprMutator.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/Parser/ParseNode.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:26:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 30 21:13:12 2016
-// Update Count     : 52
+// Last Modified On : Tue Jul 12 17:19:57 2016
+// Update Count     : 53
 // 
 
@@ -196,6 +196,5 @@
 
 ParseNode *ParseNode::set_link( ParseNode *next_ ) {
-	if ( next_ == 0 ) return this;
-	get_last()->next = next_;
+	if ( next_ != 0 ) get_last()->next = next_;
 	return this;
 }
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/Parser/StatementNode.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun  9 14:18:46 2016
-// Update Count     : 132
+// Last Modified On : Tue Jul 12 17:21:02 2016
+// Update Count     : 133
 //
 
@@ -254,8 +254,4 @@
 	  case Switch:
 		return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
-	  case Choose:
-		return new ChooseStmt( labs, maybeBuild<Expression>(get_control()), branches );
-	  case Fallthru:
-		return new FallthruStmt( labs );
 	  case Case:
 		return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/Parser/TypeData.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 15:12:51 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Apr 06 16:57:53 2016
-// Update Count     : 49
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:21:49 2016
+// Update Count     : 50
 //
 
@@ -845,21 +845,9 @@
 		assert( false );
 	} // switch
-//	buildList( aggregate->params, at->get_parameters() );
+
 	buildList( aggregate->fields, at->get_members() );
 
 	return at;
 }
-
-/// namespace {
-/// Type*
-/// makeType( Declaration* decl )
-/// {
-///   if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( decl ) ) {
-///     return dwt->get_type()->clone();
-///   } else {
-///     return 0;
-///   }
-/// }
-/// }
 
 ReferenceToType *TypeData::buildAggInst() const {
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/Parser/parser.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -1031,65 +1031,65 @@
      631,   632,   638,   639,   640,   641,   642,   643,   644,   645,
      646,   656,   663,   665,   675,   676,   681,   683,   689,   691,
-     695,   696,   701,   706,   709,   711,   713,   718,   720,   728,
-     729,   731,   735,   736,   741,   742,   747,   748,   752,   757,
-     758,   762,   764,   770,   771,   775,   777,   779,   781,   787,
-     788,   792,   793,   797,   799,   801,   806,   808,   813,   815,
-     819,   822,   826,   829,   833,   835,   839,   841,   848,   850,
-     852,   861,   863,   865,   867,   869,   874,   876,   878,   880,
-     885,   898,   899,   904,   906,   911,   915,   917,   919,   921,
-     923,   929,   930,   936,   937,   941,   942,   947,   949,   955,
-     956,   958,   963,   965,   972,   974,   978,   979,   984,   986,
-     990,   991,   995,   997,  1001,  1002,  1006,  1007,  1011,  1012,
-    1027,  1028,  1029,  1030,  1031,  1035,  1040,  1047,  1057,  1062,
-    1067,  1075,  1080,  1085,  1090,  1095,  1103,  1125,  1130,  1137,
-    1139,  1146,  1151,  1156,  1167,  1172,  1177,  1182,  1187,  1196,
-    1201,  1209,  1210,  1211,  1212,  1218,  1223,  1231,  1232,  1233,
-    1234,  1238,  1239,  1240,  1241,  1246,  1247,  1256,  1257,  1262,
-    1263,  1268,  1270,  1272,  1274,  1276,  1279,  1278,  1290,  1291,
-    1293,  1303,  1304,  1309,  1313,  1315,  1317,  1319,  1321,  1323,
-    1325,  1327,  1332,  1334,  1336,  1338,  1340,  1342,  1344,  1346,
-    1348,  1350,  1352,  1354,  1356,  1362,  1363,  1365,  1367,  1369,
-    1374,  1375,  1381,  1382,  1384,  1386,  1391,  1393,  1395,  1397,
-    1402,  1403,  1405,  1407,  1412,  1413,  1415,  1420,  1421,  1423,
-    1425,  1430,  1432,  1434,  1439,  1440,  1444,  1446,  1452,  1451,
-    1455,  1457,  1462,  1464,  1469,  1471,  1476,  1477,  1479,  1480,
-    1489,  1490,  1492,  1494,  1499,  1501,  1507,  1508,  1510,  1513,
-    1516,  1521,  1522,  1527,  1532,  1536,  1538,  1544,  1543,  1550,
-    1552,  1558,  1559,  1567,  1568,  1572,  1573,  1574,  1576,  1578,
-    1585,  1586,  1588,  1590,  1595,  1596,  1602,  1603,  1607,  1608,
-    1613,  1614,  1615,  1617,  1625,  1626,  1628,  1631,  1633,  1637,
-    1638,  1639,  1641,  1643,  1647,  1652,  1660,  1661,  1670,  1672,
-    1677,  1678,  1679,  1683,  1684,  1685,  1689,  1690,  1691,  1695,
-    1696,  1697,  1702,  1703,  1704,  1705,  1711,  1712,  1714,  1719,
-    1720,  1725,  1726,  1727,  1728,  1729,  1744,  1745,  1750,  1751,
-    1759,  1761,  1763,  1766,  1768,  1770,  1793,  1794,  1796,  1798,
-    1803,  1804,  1806,  1811,  1816,  1817,  1823,  1822,  1826,  1830,
-    1832,  1834,  1840,  1841,  1846,  1851,  1853,  1858,  1860,  1861,
-    1863,  1868,  1870,  1872,  1877,  1879,  1884,  1889,  1897,  1903,
-    1902,  1916,  1917,  1922,  1923,  1927,  1932,  1937,  1945,  1950,
-    1961,  1962,  1973,  1974,  1980,  1981,  1985,  1986,  1987,  1990,
-    1989,  2000,  2009,  2015,  2021,  2030,  2036,  2042,  2048,  2054,
-    2062,  2068,  2076,  2082,  2091,  2092,  2093,  2097,  2101,  2103,
-    2108,  2109,  2113,  2114,  2119,  2125,  2126,  2129,  2131,  2132,
-    2136,  2137,  2138,  2139,  2173,  2175,  2176,  2178,  2183,  2188,
-    2193,  2195,  2197,  2202,  2204,  2206,  2208,  2213,  2215,  2224,
-    2226,  2227,  2232,  2234,  2236,  2241,  2243,  2245,  2250,  2252,
-    2254,  2263,  2264,  2265,  2269,  2271,  2273,  2278,  2280,  2282,
-    2287,  2289,  2291,  2306,  2308,  2309,  2311,  2316,  2317,  2322,
-    2324,  2326,  2331,  2333,  2335,  2337,  2342,  2344,  2346,  2356,
-    2358,  2359,  2361,  2366,  2368,  2370,  2375,  2377,  2379,  2381,
-    2386,  2388,  2390,  2421,  2423,  2424,  2426,  2431,  2436,  2444,
-    2446,  2448,  2453,  2455,  2460,  2462,  2476,  2477,  2479,  2484,
-    2486,  2488,  2490,  2492,  2497,  2498,  2500,  2502,  2507,  2509,
-    2511,  2517,  2519,  2521,  2525,  2527,  2529,  2531,  2545,  2546,
-    2548,  2553,  2555,  2557,  2559,  2561,  2566,  2567,  2569,  2571,
-    2576,  2578,  2580,  2586,  2587,  2589,  2598,  2601,  2603,  2606,
-    2608,  2610,  2623,  2624,  2626,  2631,  2633,  2635,  2637,  2639,
-    2644,  2645,  2647,  2649,  2654,  2656,  2664,  2665,  2666,  2671,
-    2672,  2676,  2678,  2680,  2682,  2684,  2686,  2693,  2695,  2697,
-    2699,  2701,  2703,  2705,  2707,  2709,  2711,  2716,  2718,  2720,
-    2725,  2751,  2752,  2754,  2758,  2759,  2763,  2765,  2767,  2769,
-    2771,  2773,  2780,  2782,  2784,  2786,  2788,  2790,  2795,  2800,
-    2802,  2804,  2822,  2824,  2829,  2830
+     695,   696,   701,   706,   709,   711,   713,   722,   724,   735,
+     736,   738,   742,   743,   748,   749,   754,   755,   759,   764,
+     765,   769,   771,   777,   778,   782,   784,   786,   788,   794,
+     795,   799,   801,   806,   808,   810,   815,   817,   822,   824,
+     828,   831,   835,   838,   842,   844,   848,   850,   857,   859,
+     861,   870,   872,   874,   876,   878,   883,   885,   887,   889,
+     894,   907,   908,   913,   915,   920,   924,   926,   928,   930,
+     932,   938,   939,   945,   946,   950,   951,   956,   958,   964,
+     965,   967,   972,   974,   981,   983,   987,   988,   993,   995,
+     999,  1000,  1004,  1006,  1010,  1011,  1015,  1016,  1020,  1021,
+    1036,  1037,  1038,  1039,  1040,  1044,  1049,  1056,  1066,  1071,
+    1076,  1084,  1089,  1094,  1099,  1104,  1112,  1134,  1139,  1146,
+    1148,  1155,  1160,  1165,  1176,  1181,  1186,  1191,  1196,  1205,
+    1210,  1218,  1219,  1220,  1221,  1227,  1232,  1240,  1241,  1242,
+    1243,  1247,  1248,  1249,  1250,  1255,  1256,  1265,  1266,  1271,
+    1272,  1277,  1279,  1281,  1283,  1285,  1288,  1287,  1299,  1300,
+    1302,  1312,  1313,  1318,  1322,  1324,  1326,  1328,  1330,  1332,
+    1334,  1336,  1341,  1343,  1345,  1347,  1349,  1351,  1353,  1355,
+    1357,  1359,  1361,  1363,  1365,  1371,  1372,  1374,  1376,  1378,
+    1383,  1384,  1390,  1391,  1393,  1395,  1400,  1402,  1404,  1406,
+    1411,  1412,  1414,  1416,  1421,  1422,  1424,  1429,  1430,  1432,
+    1434,  1439,  1441,  1443,  1448,  1449,  1453,  1455,  1461,  1460,
+    1464,  1466,  1471,  1473,  1478,  1480,  1485,  1486,  1488,  1489,
+    1498,  1499,  1501,  1503,  1508,  1510,  1516,  1517,  1519,  1522,
+    1525,  1530,  1531,  1536,  1541,  1545,  1547,  1553,  1552,  1559,
+    1561,  1567,  1568,  1576,  1577,  1581,  1582,  1583,  1585,  1587,
+    1594,  1595,  1597,  1599,  1604,  1605,  1611,  1612,  1616,  1617,
+    1622,  1623,  1624,  1626,  1634,  1635,  1637,  1640,  1642,  1646,
+    1647,  1648,  1650,  1652,  1656,  1661,  1669,  1670,  1679,  1681,
+    1686,  1687,  1688,  1692,  1693,  1694,  1698,  1699,  1700,  1704,
+    1705,  1706,  1711,  1712,  1713,  1714,  1720,  1721,  1723,  1728,
+    1729,  1734,  1735,  1736,  1737,  1738,  1753,  1754,  1759,  1760,
+    1768,  1770,  1772,  1775,  1777,  1779,  1802,  1803,  1805,  1807,
+    1812,  1813,  1815,  1820,  1825,  1826,  1832,  1831,  1835,  1839,
+    1841,  1843,  1849,  1850,  1855,  1860,  1862,  1867,  1869,  1870,
+    1872,  1877,  1879,  1881,  1886,  1888,  1893,  1898,  1906,  1912,
+    1911,  1925,  1926,  1931,  1932,  1936,  1941,  1946,  1954,  1959,
+    1970,  1971,  1982,  1983,  1989,  1990,  1994,  1995,  1996,  1999,
+    1998,  2009,  2018,  2024,  2030,  2039,  2045,  2051,  2057,  2063,
+    2071,  2077,  2085,  2091,  2100,  2101,  2102,  2106,  2110,  2112,
+    2117,  2118,  2122,  2123,  2128,  2134,  2135,  2138,  2140,  2141,
+    2145,  2146,  2147,  2148,  2182,  2184,  2185,  2187,  2192,  2197,
+    2202,  2204,  2206,  2211,  2213,  2215,  2217,  2222,  2224,  2233,
+    2235,  2236,  2241,  2243,  2245,  2250,  2252,  2254,  2259,  2261,
+    2263,  2272,  2273,  2274,  2278,  2280,  2282,  2287,  2289,  2291,
+    2296,  2298,  2300,  2315,  2317,  2318,  2320,  2325,  2326,  2331,
+    2333,  2335,  2340,  2342,  2344,  2346,  2351,  2353,  2355,  2365,
+    2367,  2368,  2370,  2375,  2377,  2379,  2384,  2386,  2388,  2390,
+    2395,  2397,  2399,  2430,  2432,  2433,  2435,  2440,  2445,  2453,
+    2455,  2457,  2462,  2464,  2469,  2471,  2485,  2486,  2488,  2493,
+    2495,  2497,  2499,  2501,  2506,  2507,  2509,  2511,  2516,  2518,
+    2520,  2526,  2528,  2530,  2534,  2536,  2538,  2540,  2554,  2555,
+    2557,  2562,  2564,  2566,  2568,  2570,  2575,  2576,  2578,  2580,
+    2585,  2587,  2589,  2595,  2596,  2598,  2607,  2610,  2612,  2615,
+    2617,  2619,  2632,  2633,  2635,  2640,  2642,  2644,  2646,  2648,
+    2653,  2654,  2656,  2658,  2663,  2665,  2673,  2674,  2675,  2680,
+    2681,  2685,  2687,  2689,  2691,  2693,  2695,  2702,  2704,  2706,
+    2708,  2710,  2712,  2714,  2716,  2718,  2720,  2725,  2727,  2729,
+    2734,  2760,  2761,  2763,  2767,  2768,  2772,  2774,  2776,  2778,
+    2780,  2782,  2789,  2791,  2793,  2795,  2797,  2799,  2804,  2809,
+    2811,  2813,  2831,  2833,  2838,  2839
 };
 #endif
@@ -6006,5 +6006,12 @@
 /* Line 1806 of yacc.c  */
 #line 714 "parser.yy"
-    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
+    {
+			StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
+			// The semantics of the declaration list is changed to include associated initialization, which is performed
+			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
+			// statement around the switch.  Statements after the initial declaration list can never be executed, and
+			// therefore, are removed from the grammar even though C allows it. Change also applies to choose statement.
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
+		}
     break;
 
@@ -6012,6 +6019,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 719 "parser.yy"
-    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
+#line 723 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     break;
 
@@ -6019,6 +6026,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 721 "parser.yy"
-    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
+#line 725 "parser.yy"
+    {
+			StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
+		}
     break;
 
@@ -6026,5 +6036,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 728 "parser.yy"
+#line 735 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -6033,5 +6043,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 730 "parser.yy"
+#line 737 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6040,5 +6050,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 737 "parser.yy"
+#line 744 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -6047,5 +6057,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 741 "parser.yy"
+#line 748 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6054,5 +6064,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 742 "parser.yy"
+#line 749 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     break;
@@ -6061,5 +6071,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 748 "parser.yy"
+#line 755 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     break;
@@ -6068,89 +6078,89 @@
 
 /* Line 1806 of yacc.c  */
-#line 752 "parser.yy"
+#line 759 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
+    break;
+
+  case 169:
+
+/* Line 1806 of yacc.c  */
+#line 764 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 171:
+
+/* Line 1806 of yacc.c  */
+#line 770 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
+    break;
+
+  case 172:
+
+/* Line 1806 of yacc.c  */
+#line 772 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
+    break;
+
+  case 173:
+
+/* Line 1806 of yacc.c  */
+#line 777 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 175:
+
+/* Line 1806 of yacc.c  */
+#line 783 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
 
-  case 169:
-
-/* Line 1806 of yacc.c  */
-#line 757 "parser.yy"
+  case 176:
+
+/* Line 1806 of yacc.c  */
+#line 785 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
+    break;
+
+  case 177:
+
+/* Line 1806 of yacc.c  */
+#line 787 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
+    break;
+
+  case 178:
+
+/* Line 1806 of yacc.c  */
+#line 789 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
+    break;
+
+  case 179:
+
+/* Line 1806 of yacc.c  */
+#line 794 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
+    break;
+
+  case 181:
+
+/* Line 1806 of yacc.c  */
+#line 800 "parser.yy"
     { (yyval.sn) = 0; }
     break;
 
-  case 171:
-
-/* Line 1806 of yacc.c  */
-#line 763 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
-    break;
-
-  case 172:
-
-/* Line 1806 of yacc.c  */
-#line 765 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
-    break;
-
-  case 173:
-
-/* Line 1806 of yacc.c  */
-#line 770 "parser.yy"
+  case 182:
+
+/* Line 1806 of yacc.c  */
+#line 802 "parser.yy"
     { (yyval.sn) = 0; }
     break;
 
-  case 175:
-
-/* Line 1806 of yacc.c  */
-#line 776 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
-    break;
-
-  case 176:
-
-/* Line 1806 of yacc.c  */
-#line 778 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
-    break;
-
-  case 177:
-
-/* Line 1806 of yacc.c  */
-#line 780 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
-    break;
-
-  case 178:
-
-/* Line 1806 of yacc.c  */
-#line 782 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
-    break;
-
-  case 179:
-
-/* Line 1806 of yacc.c  */
-#line 787 "parser.yy"
-    { (yyval.sn) = 0; }
-    break;
-
-  case 181:
-
-/* Line 1806 of yacc.c  */
-#line 792 "parser.yy"
-    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
-    break;
-
-  case 182:
-
-/* Line 1806 of yacc.c  */
-#line 793 "parser.yy"
-    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
-    break;
-
   case 183:
 
 /* Line 1806 of yacc.c  */
-#line 798 "parser.yy"
+#line 807 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     break;
@@ -6159,5 +6169,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 800 "parser.yy"
+#line 809 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     break;
@@ -6166,5 +6176,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 802 "parser.yy"
+#line 811 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     break;
@@ -6173,5 +6183,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 807 "parser.yy"
+#line 816 "parser.yy"
     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
@@ -6180,5 +6190,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 809 "parser.yy"
+#line 818 "parser.yy"
     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -6187,5 +6197,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 814 "parser.yy"
+#line 823 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6194,5 +6204,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 818 "parser.yy"
+#line 827 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6201,5 +6211,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 821 "parser.yy"
+#line 830 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     break;
@@ -6208,5 +6218,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 825 "parser.yy"
+#line 834 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6215,5 +6225,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 828 "parser.yy"
+#line 837 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     break;
@@ -6222,5 +6232,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 832 "parser.yy"
+#line 841 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6229,5 +6239,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 834 "parser.yy"
+#line 843 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6236,5 +6246,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 836 "parser.yy"
+#line 845 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6243,5 +6253,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 840 "parser.yy"
+#line 849 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6250,5 +6260,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 842 "parser.yy"
+#line 851 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
     break;
@@ -6257,5 +6267,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 849 "parser.yy"
+#line 858 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     break;
@@ -6264,5 +6274,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 851 "parser.yy"
+#line 860 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     break;
@@ -6271,5 +6281,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 853 "parser.yy"
+#line 862 "parser.yy"
     {
 			(yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
@@ -6281,5 +6291,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 864 "parser.yy"
+#line 873 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     break;
@@ -6288,5 +6298,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 866 "parser.yy"
+#line 875 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     break;
@@ -6295,5 +6305,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 868 "parser.yy"
+#line 877 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     break;
@@ -6302,5 +6312,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 870 "parser.yy"
+#line 879 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     break;
@@ -6309,5 +6319,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 875 "parser.yy"
+#line 884 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     break;
@@ -6316,5 +6326,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 877 "parser.yy"
+#line 886 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     break;
@@ -6323,5 +6333,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 879 "parser.yy"
+#line 888 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     break;
@@ -6330,5 +6340,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 881 "parser.yy"
+#line 890 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     break;
@@ -6337,5 +6347,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 886 "parser.yy"
+#line 895 "parser.yy"
     {
 			(yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
@@ -6347,5 +6357,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 900 "parser.yy"
+#line 909 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6357,5 +6367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 905 "parser.yy"
+#line 914 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6364,5 +6374,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 907 "parser.yy"
+#line 916 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6374,5 +6384,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 916 "parser.yy"
+#line 925 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     break;
@@ -6381,5 +6391,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 918 "parser.yy"
+#line 927 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     break;
@@ -6388,5 +6398,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 920 "parser.yy"
+#line 929 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     break;
@@ -6395,5 +6405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 922 "parser.yy"
+#line 931 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
     break;
@@ -6402,5 +6412,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 924 "parser.yy"
+#line 933 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
     break;
@@ -6409,5 +6419,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 929 "parser.yy"
+#line 938 "parser.yy"
     { (yyval.flag) = false; }
     break;
@@ -6416,5 +6426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 931 "parser.yy"
+#line 940 "parser.yy"
     { (yyval.flag) = true; }
     break;
@@ -6423,5 +6433,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 936 "parser.yy"
+#line 945 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6430,5 +6440,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 943 "parser.yy"
+#line 952 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6437,5 +6447,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 948 "parser.yy"
+#line 957 "parser.yy"
     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6444,5 +6454,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 950 "parser.yy"
+#line 959 "parser.yy"
     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     break;
@@ -6451,5 +6461,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 955 "parser.yy"
+#line 964 "parser.yy"
     { (yyval.constant) = 0; }
     break;
@@ -6458,5 +6468,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 957 "parser.yy"
+#line 966 "parser.yy"
     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     break;
@@ -6465,5 +6475,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 959 "parser.yy"
+#line 968 "parser.yy"
     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     break;
@@ -6472,5 +6482,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 964 "parser.yy"
+#line 973 "parser.yy"
     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6479,5 +6489,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 966 "parser.yy"
+#line 975 "parser.yy"
     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     break;
@@ -6486,5 +6496,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 973 "parser.yy"
+#line 982 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6493,5 +6503,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 980 "parser.yy"
+#line 989 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6500,5 +6510,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 985 "parser.yy"
+#line 994 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6507,5 +6517,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 992 "parser.yy"
+#line 1001 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6514,5 +6524,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1006 "parser.yy"
+#line 1015 "parser.yy"
     {}
     break;
@@ -6521,5 +6531,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1007 "parser.yy"
+#line 1016 "parser.yy"
     {}
     break;
@@ -6528,5 +6538,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1036 "parser.yy"
+#line 1045 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6538,5 +6548,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1043 "parser.yy"
+#line 1052 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6548,5 +6558,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1048 "parser.yy"
+#line 1057 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6558,5 +6568,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1058 "parser.yy"
+#line 1067 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6568,5 +6578,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1063 "parser.yy"
+#line 1072 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6578,5 +6588,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1068 "parser.yy"
+#line 1077 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6588,5 +6598,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1076 "parser.yy"
+#line 1085 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6598,5 +6608,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1081 "parser.yy"
+#line 1090 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6608,5 +6618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1086 "parser.yy"
+#line 1095 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6618,5 +6628,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1091 "parser.yy"
+#line 1100 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6628,5 +6638,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1096 "parser.yy"
+#line 1105 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6638,5 +6648,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1104 "parser.yy"
+#line 1113 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
@@ -6647,5 +6657,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1127 "parser.yy"
+#line 1136 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6656,5 +6666,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1131 "parser.yy"
+#line 1140 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6665,5 +6675,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1138 "parser.yy"
+#line 1147 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6672,5 +6682,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1142 "parser.yy"
+#line 1151 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6679,5 +6689,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1147 "parser.yy"
+#line 1156 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6689,5 +6699,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1152 "parser.yy"
+#line 1161 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6699,5 +6709,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1157 "parser.yy"
+#line 1166 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6709,5 +6719,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1168 "parser.yy"
+#line 1177 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6719,5 +6729,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1173 "parser.yy"
+#line 1182 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6729,5 +6739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1178 "parser.yy"
+#line 1187 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6739,5 +6749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1183 "parser.yy"
+#line 1192 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6749,5 +6759,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1188 "parser.yy"
+#line 1197 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6759,5 +6769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1197 "parser.yy"
+#line 1206 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6769,5 +6779,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1202 "parser.yy"
+#line 1211 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6779,5 +6789,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1219 "parser.yy"
+#line 1228 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6789,5 +6799,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1224 "parser.yy"
+#line 1233 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6799,5 +6809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1246 "parser.yy"
+#line 1255 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6806,5 +6816,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1258 "parser.yy"
+#line 1267 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6813,5 +6823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1269 "parser.yy"
+#line 1278 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6820,5 +6830,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1271 "parser.yy"
+#line 1280 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6827,5 +6837,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1273 "parser.yy"
+#line 1282 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6834,5 +6844,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1275 "parser.yy"
+#line 1284 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6841,5 +6851,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1277 "parser.yy"
+#line 1286 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6848,5 +6858,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1279 "parser.yy"
+#line 1288 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6857,5 +6867,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1283 "parser.yy"
+#line 1292 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6867,5 +6877,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1292 "parser.yy"
+#line 1301 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6874,5 +6884,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1294 "parser.yy"
+#line 1303 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6881,5 +6891,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1305 "parser.yy"
+#line 1314 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6888,5 +6898,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1314 "parser.yy"
+#line 1323 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6895,5 +6905,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1316 "parser.yy"
+#line 1325 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6902,5 +6912,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1318 "parser.yy"
+#line 1327 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6909,5 +6919,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1320 "parser.yy"
+#line 1329 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6916,5 +6926,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1322 "parser.yy"
+#line 1331 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     break;
@@ -6923,5 +6933,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1324 "parser.yy"
+#line 1333 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6930,5 +6940,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1326 "parser.yy"
+#line 1335 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     break;
@@ -6937,5 +6947,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1328 "parser.yy"
+#line 1337 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6944,5 +6954,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1333 "parser.yy"
+#line 1342 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6951,5 +6961,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1335 "parser.yy"
+#line 1344 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6958,5 +6968,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1337 "parser.yy"
+#line 1346 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6965,5 +6975,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1339 "parser.yy"
+#line 1348 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6972,5 +6982,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1341 "parser.yy"
+#line 1350 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     break;
@@ -6979,5 +6989,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1343 "parser.yy"
+#line 1352 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     break;
@@ -6986,5 +6996,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1345 "parser.yy"
+#line 1354 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     break;
@@ -6993,5 +7003,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1347 "parser.yy"
+#line 1356 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     break;
@@ -7000,5 +7010,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1349 "parser.yy"
+#line 1358 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -7007,5 +7017,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1351 "parser.yy"
+#line 1360 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -7014,5 +7024,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1353 "parser.yy"
+#line 1362 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     break;
@@ -7021,5 +7031,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1355 "parser.yy"
+#line 1364 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     break;
@@ -7028,5 +7038,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1357 "parser.yy"
+#line 1366 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
@@ -7035,5 +7045,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1364 "parser.yy"
+#line 1373 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7042,5 +7052,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1366 "parser.yy"
+#line 1375 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7049,5 +7059,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1368 "parser.yy"
+#line 1377 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7056,5 +7066,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1370 "parser.yy"
+#line 1379 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7063,5 +7073,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1376 "parser.yy"
+#line 1385 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7070,5 +7080,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1383 "parser.yy"
+#line 1392 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7077,5 +7087,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1385 "parser.yy"
+#line 1394 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7084,5 +7094,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1387 "parser.yy"
+#line 1396 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7091,5 +7101,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1392 "parser.yy"
+#line 1401 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -7098,5 +7108,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1394 "parser.yy"
+#line 1403 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7105,5 +7115,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1396 "parser.yy"
+#line 1405 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7112,5 +7122,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1398 "parser.yy"
+#line 1407 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7119,5 +7129,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1404 "parser.yy"
+#line 1413 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7126,5 +7136,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1406 "parser.yy"
+#line 1415 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7133,5 +7143,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1408 "parser.yy"
+#line 1417 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7140,5 +7150,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1414 "parser.yy"
+#line 1423 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7147,5 +7157,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1416 "parser.yy"
+#line 1425 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7154,5 +7164,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1422 "parser.yy"
+#line 1431 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7161,5 +7171,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1424 "parser.yy"
+#line 1433 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7168,5 +7178,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1426 "parser.yy"
+#line 1435 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7175,5 +7185,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1431 "parser.yy"
+#line 1440 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7182,5 +7192,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1433 "parser.yy"
+#line 1442 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7189,5 +7199,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1435 "parser.yy"
+#line 1444 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7196,5 +7206,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1445 "parser.yy"
+#line 1454 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7203,5 +7213,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1447 "parser.yy"
+#line 1456 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7213,5 +7223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1452 "parser.yy"
+#line 1461 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7220,6 +7230,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1454 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl)); }
+#line 1463 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl) ); }
     break;
 
@@ -7227,5 +7237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1456 "parser.yy"
+#line 1465 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
     break;
@@ -7234,5 +7244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1458 "parser.yy"
+#line 1467 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7241,5 +7251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1463 "parser.yy"
+#line 1472 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -7248,5 +7258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1465 "parser.yy"
+#line 1474 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -7255,5 +7265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1470 "parser.yy"
+#line 1479 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
     break;
@@ -7262,5 +7272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1472 "parser.yy"
+#line 1481 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7269,5 +7279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1478 "parser.yy"
+#line 1487 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
@@ -7276,5 +7286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1481 "parser.yy"
+#line 1490 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
@@ -7287,5 +7297,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1491 "parser.yy"
+#line 1500 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7294,5 +7304,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1493 "parser.yy"
+#line 1502 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7301,5 +7311,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1495 "parser.yy"
+#line 1504 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -7308,5 +7318,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1500 "parser.yy"
+#line 1509 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7315,5 +7325,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1502 "parser.yy"
+#line 1511 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -7322,5 +7332,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1507 "parser.yy"
+#line 1516 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -7329,5 +7339,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1509 "parser.yy"
+#line 1518 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7336,5 +7346,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1512 "parser.yy"
+#line 1521 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7343,5 +7353,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1515 "parser.yy"
+#line 1524 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7350,5 +7360,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1521 "parser.yy"
+#line 1530 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7357,5 +7367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1523 "parser.yy"
+#line 1532 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7364,5 +7374,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1528 "parser.yy"
+#line 1537 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7371,5 +7381,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1537 "parser.yy"
+#line 1546 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7378,5 +7388,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1539 "parser.yy"
+#line 1548 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7388,5 +7398,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1544 "parser.yy"
+#line 1553 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7395,5 +7405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1546 "parser.yy"
+#line 1555 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
@@ -7402,5 +7412,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1551 "parser.yy"
+#line 1560 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7409,5 +7419,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1553 "parser.yy"
+#line 1562 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7416,5 +7426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1558 "parser.yy"
+#line 1567 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7423,5 +7433,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1560 "parser.yy"
+#line 1569 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7430,5 +7440,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1567 "parser.yy"
+#line 1576 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7437,5 +7447,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1575 "parser.yy"
+#line 1584 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7444,5 +7454,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1577 "parser.yy"
+#line 1586 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7451,5 +7461,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1579 "parser.yy"
+#line 1588 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7458,5 +7468,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1587 "parser.yy"
+#line 1596 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7465,5 +7475,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1589 "parser.yy"
+#line 1598 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7472,5 +7482,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1591 "parser.yy"
+#line 1600 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7479,5 +7489,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1597 "parser.yy"
+#line 1606 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7486,5 +7496,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1602 "parser.yy"
+#line 1611 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7493,5 +7503,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1609 "parser.yy"
+#line 1618 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7500,5 +7510,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1616 "parser.yy"
+#line 1625 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7507,5 +7517,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1618 "parser.yy"
+#line 1627 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7514,5 +7524,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1627 "parser.yy"
+#line 1636 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7521,5 +7531,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1630 "parser.yy"
+#line 1639 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7528,5 +7538,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1632 "parser.yy"
+#line 1641 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7535,5 +7545,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1642 "parser.yy"
+#line 1651 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7542,5 +7552,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1648 "parser.yy"
+#line 1657 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7552,5 +7562,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1653 "parser.yy"
+#line 1662 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7562,5 +7572,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1662 "parser.yy"
+#line 1671 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7569,5 +7579,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1671 "parser.yy"
+#line 1680 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7576,5 +7586,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1673 "parser.yy"
+#line 1682 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7583,5 +7593,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1698 "parser.yy"
+#line 1707 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7590,5 +7600,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1706 "parser.yy"
+#line 1715 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7597,5 +7607,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1711 "parser.yy"
+#line 1720 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7604,5 +7614,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1713 "parser.yy"
+#line 1722 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7611,5 +7621,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1715 "parser.yy"
+#line 1724 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
@@ -7618,5 +7628,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1719 "parser.yy"
+#line 1728 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7625,5 +7635,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1720 "parser.yy"
+#line 1729 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
@@ -7632,5 +7642,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1725 "parser.yy"
+#line 1734 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7639,5 +7649,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1727 "parser.yy"
+#line 1736 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
@@ -7646,5 +7656,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1728 "parser.yy"
+#line 1737 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     break;
@@ -7653,5 +7663,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1730 "parser.yy"
+#line 1739 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
@@ -7660,5 +7670,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1746 "parser.yy"
+#line 1755 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     break;
@@ -7667,5 +7677,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1752 "parser.yy"
+#line 1761 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     break;
@@ -7674,5 +7684,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1760 "parser.yy"
+#line 1769 "parser.yy"
     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -7681,5 +7691,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1762 "parser.yy"
+#line 1771 "parser.yy"
     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     break;
@@ -7688,5 +7698,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1765 "parser.yy"
+#line 1774 "parser.yy"
     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     break;
@@ -7695,5 +7705,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1767 "parser.yy"
+#line 1776 "parser.yy"
     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     break;
@@ -7702,5 +7712,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1769 "parser.yy"
+#line 1778 "parser.yy"
     { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
     break;
@@ -7709,5 +7719,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1771 "parser.yy"
+#line 1780 "parser.yy"
     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     break;
@@ -7716,5 +7726,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1795 "parser.yy"
+#line 1804 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7723,5 +7733,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1797 "parser.yy"
+#line 1806 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7730,5 +7740,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1799 "parser.yy"
+#line 1808 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7737,5 +7747,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1805 "parser.yy"
+#line 1814 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7744,5 +7754,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1807 "parser.yy"
+#line 1816 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7751,5 +7761,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1812 "parser.yy"
+#line 1821 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7758,5 +7768,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1818 "parser.yy"
+#line 1827 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7765,5 +7775,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1823 "parser.yy"
+#line 1832 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
@@ -7772,5 +7782,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1825 "parser.yy"
+#line 1834 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7779,5 +7789,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1831 "parser.yy"
+#line 1840 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Type; }
     break;
@@ -7786,5 +7796,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1833 "parser.yy"
+#line 1842 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7793,5 +7803,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1835 "parser.yy"
+#line 1844 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7800,5 +7810,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1840 "parser.yy"
+#line 1849 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7807,6 +7817,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1842 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
+#line 1851 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
@@ -7814,5 +7824,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1847 "parser.yy"
+#line 1856 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7824,5 +7834,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1852 "parser.yy"
+#line 1861 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7831,5 +7841,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1854 "parser.yy"
+#line 1863 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7838,5 +7848,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1859 "parser.yy"
+#line 1868 "parser.yy"
     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -7845,5 +7855,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1862 "parser.yy"
+#line 1871 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     break;
@@ -7852,5 +7862,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1864 "parser.yy"
+#line 1873 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -7859,5 +7869,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1869 "parser.yy"
+#line 1878 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7866,5 +7876,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1871 "parser.yy"
+#line 1880 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7873,5 +7883,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1873 "parser.yy"
+#line 1882 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7880,5 +7890,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1878 "parser.yy"
+#line 1887 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7887,5 +7897,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1880 "parser.yy"
+#line 1889 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7894,5 +7904,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1885 "parser.yy"
+#line 1894 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7904,5 +7914,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1890 "parser.yy"
+#line 1899 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7914,5 +7924,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1898 "parser.yy"
+#line 1907 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7924,5 +7934,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1903 "parser.yy"
+#line 1912 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7934,5 +7944,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1908 "parser.yy"
+#line 1917 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7945,5 +7955,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1918 "parser.yy"
+#line 1927 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7952,5 +7962,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1928 "parser.yy"
+#line 1937 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7962,5 +7972,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1933 "parser.yy"
+#line 1942 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7972,5 +7982,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1938 "parser.yy"
+#line 1947 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7982,5 +7992,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1946 "parser.yy"
+#line 1955 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7992,5 +8002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1951 "parser.yy"
+#line 1960 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -8002,5 +8012,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1961 "parser.yy"
+#line 1970 "parser.yy"
     {}
     break;
@@ -8009,5 +8019,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1963 "parser.yy"
+#line 1972 "parser.yy"
     {
 			if ( theTree ) {
@@ -8022,5 +8032,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1975 "parser.yy"
+#line 1984 "parser.yy"
     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -8029,5 +8039,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1980 "parser.yy"
+#line 1989 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -8036,5 +8046,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1988 "parser.yy"
+#line 1997 "parser.yy"
     {}
     break;
@@ -8043,5 +8053,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1990 "parser.yy"
+#line 1999 "parser.yy"
     {
 			linkageStack.push( linkage );
@@ -8053,5 +8063,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1995 "parser.yy"
+#line 2004 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -8064,5 +8074,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2001 "parser.yy"
+#line 2010 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
@@ -8075,5 +8085,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2016 "parser.yy"
+#line 2025 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8086,5 +8096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2022 "parser.yy"
+#line 2031 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8097,5 +8107,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2031 "parser.yy"
+#line 2040 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8108,5 +8118,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2037 "parser.yy"
+#line 2046 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8119,5 +8129,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2043 "parser.yy"
+#line 2052 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8130,5 +8140,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2049 "parser.yy"
+#line 2058 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8141,5 +8151,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2055 "parser.yy"
+#line 2064 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8152,5 +8162,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2063 "parser.yy"
+#line 2072 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8163,5 +8173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2069 "parser.yy"
+#line 2078 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8174,5 +8184,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2077 "parser.yy"
+#line 2086 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8185,5 +8195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2083 "parser.yy"
+#line 2092 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -8196,5 +8206,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2098 "parser.yy"
+#line 2107 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -8203,5 +8213,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2108 "parser.yy"
+#line 2117 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -8210,5 +8220,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2115 "parser.yy"
+#line 2124 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8217,5 +8227,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2121 "parser.yy"
+#line 2130 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -8224,5 +8234,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2136 "parser.yy"
+#line 2145 "parser.yy"
     {}
     break;
@@ -8231,5 +8241,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2137 "parser.yy"
+#line 2146 "parser.yy"
     {}
     break;
@@ -8238,5 +8248,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2138 "parser.yy"
+#line 2147 "parser.yy"
     {}
     break;
@@ -8245,5 +8255,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2139 "parser.yy"
+#line 2148 "parser.yy"
     {}
     break;
@@ -8252,5 +8262,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2174 "parser.yy"
+#line 2183 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8259,5 +8269,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2177 "parser.yy"
+#line 2186 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8266,5 +8276,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2179 "parser.yy"
+#line 2188 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8273,5 +8283,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2184 "parser.yy"
+#line 2193 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8283,33 +8293,33 @@
 
 /* Line 1806 of yacc.c  */
-#line 2189 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 570:
-
-/* Line 1806 of yacc.c  */
-#line 2194 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 571:
-
-/* Line 1806 of yacc.c  */
-#line 2196 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 572:
-
-/* Line 1806 of yacc.c  */
 #line 2198 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
+  case 570:
+
+/* Line 1806 of yacc.c  */
+#line 2203 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 571:
+
+/* Line 1806 of yacc.c  */
+#line 2205 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 572:
+
+/* Line 1806 of yacc.c  */
+#line 2207 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 573:
 
 /* Line 1806 of yacc.c  */
-#line 2203 "parser.yy"
+#line 2212 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8318,5 +8328,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2205 "parser.yy"
+#line 2214 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8325,5 +8335,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2207 "parser.yy"
+#line 2216 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8332,5 +8342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2209 "parser.yy"
+#line 2218 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8339,5 +8349,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2214 "parser.yy"
+#line 2223 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8346,5 +8356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2216 "parser.yy"
+#line 2225 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8353,5 +8363,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2225 "parser.yy"
+#line 2234 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8360,5 +8370,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2228 "parser.yy"
+#line 2237 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8367,5 +8377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2233 "parser.yy"
+#line 2242 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8374,30 +8384,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2235 "parser.yy"
+#line 2244 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 584:
-
-/* Line 1806 of yacc.c  */
-#line 2237 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 585:
-
-/* Line 1806 of yacc.c  */
-#line 2242 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 586:
-
-/* Line 1806 of yacc.c  */
-#line 2244 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 587:
 
 /* Line 1806 of yacc.c  */
@@ -8406,19 +8395,19 @@
     break;
 
-  case 588:
+  case 585:
 
 /* Line 1806 of yacc.c  */
 #line 2251 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 589:
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 586:
 
 /* Line 1806 of yacc.c  */
 #line 2253 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 590:
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 587:
 
 /* Line 1806 of yacc.c  */
@@ -8427,8 +8416,29 @@
     break;
 
+  case 588:
+
+/* Line 1806 of yacc.c  */
+#line 2260 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 589:
+
+/* Line 1806 of yacc.c  */
+#line 2262 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 590:
+
+/* Line 1806 of yacc.c  */
+#line 2264 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 594:
 
 /* Line 1806 of yacc.c  */
-#line 2270 "parser.yy"
+#line 2279 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8437,30 +8447,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2272 "parser.yy"
+#line 2281 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
 
   case 596:
-
-/* Line 1806 of yacc.c  */
-#line 2274 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 597:
-
-/* Line 1806 of yacc.c  */
-#line 2279 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 598:
-
-/* Line 1806 of yacc.c  */
-#line 2281 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 599:
 
 /* Line 1806 of yacc.c  */
@@ -8469,19 +8458,19 @@
     break;
 
-  case 600:
+  case 597:
 
 /* Line 1806 of yacc.c  */
 #line 2288 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 601:
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 598:
 
 /* Line 1806 of yacc.c  */
 #line 2290 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 602:
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 599:
 
 /* Line 1806 of yacc.c  */
@@ -8490,8 +8479,29 @@
     break;
 
+  case 600:
+
+/* Line 1806 of yacc.c  */
+#line 2297 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 601:
+
+/* Line 1806 of yacc.c  */
+#line 2299 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 602:
+
+/* Line 1806 of yacc.c  */
+#line 2301 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 603:
 
 /* Line 1806 of yacc.c  */
-#line 2307 "parser.yy"
+#line 2316 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8500,5 +8510,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2310 "parser.yy"
+#line 2319 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8507,30 +8517,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2312 "parser.yy"
+#line 2321 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 608:
-
-/* Line 1806 of yacc.c  */
-#line 2318 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 609:
-
-/* Line 1806 of yacc.c  */
-#line 2323 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 610:
-
-/* Line 1806 of yacc.c  */
-#line 2325 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 611:
 
 /* Line 1806 of yacc.c  */
@@ -8539,8 +8528,29 @@
     break;
 
+  case 609:
+
+/* Line 1806 of yacc.c  */
+#line 2332 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 610:
+
+/* Line 1806 of yacc.c  */
+#line 2334 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 611:
+
+/* Line 1806 of yacc.c  */
+#line 2336 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 612:
 
 /* Line 1806 of yacc.c  */
-#line 2332 "parser.yy"
+#line 2341 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8549,5 +8559,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2334 "parser.yy"
+#line 2343 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8556,30 +8566,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2336 "parser.yy"
+#line 2345 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 615:
-
-/* Line 1806 of yacc.c  */
-#line 2338 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 616:
-
-/* Line 1806 of yacc.c  */
-#line 2343 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 617:
-
-/* Line 1806 of yacc.c  */
-#line 2345 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 618:
 
 /* Line 1806 of yacc.c  */
@@ -8588,8 +8577,29 @@
     break;
 
+  case 616:
+
+/* Line 1806 of yacc.c  */
+#line 2352 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 617:
+
+/* Line 1806 of yacc.c  */
+#line 2354 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 618:
+
+/* Line 1806 of yacc.c  */
+#line 2356 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 619:
 
 /* Line 1806 of yacc.c  */
-#line 2357 "parser.yy"
+#line 2366 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8598,5 +8608,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2360 "parser.yy"
+#line 2369 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8605,5 +8615,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2362 "parser.yy"
+#line 2371 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8612,5 +8622,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2367 "parser.yy"
+#line 2376 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8619,5 +8629,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2369 "parser.yy"
+#line 2378 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8626,5 +8636,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2371 "parser.yy"
+#line 2380 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8633,5 +8643,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2376 "parser.yy"
+#line 2385 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8640,5 +8650,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2378 "parser.yy"
+#line 2387 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8647,30 +8657,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2380 "parser.yy"
+#line 2389 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 629:
-
-/* Line 1806 of yacc.c  */
-#line 2382 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 630:
-
-/* Line 1806 of yacc.c  */
-#line 2387 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 631:
-
-/* Line 1806 of yacc.c  */
-#line 2389 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 632:
 
 /* Line 1806 of yacc.c  */
@@ -8679,8 +8668,29 @@
     break;
 
+  case 630:
+
+/* Line 1806 of yacc.c  */
+#line 2396 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 631:
+
+/* Line 1806 of yacc.c  */
+#line 2398 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 632:
+
+/* Line 1806 of yacc.c  */
+#line 2400 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 633:
 
 /* Line 1806 of yacc.c  */
-#line 2422 "parser.yy"
+#line 2431 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8689,5 +8699,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2425 "parser.yy"
+#line 2434 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8696,5 +8706,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2427 "parser.yy"
+#line 2436 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8703,5 +8713,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2432 "parser.yy"
+#line 2441 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8713,5 +8723,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2437 "parser.yy"
+#line 2446 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8723,5 +8733,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2445 "parser.yy"
+#line 2454 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8730,5 +8740,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2447 "parser.yy"
+#line 2456 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8737,5 +8747,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2449 "parser.yy"
+#line 2458 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8744,5 +8754,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2454 "parser.yy"
+#line 2463 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8751,5 +8761,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2456 "parser.yy"
+#line 2465 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8758,5 +8768,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2461 "parser.yy"
+#line 2470 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8765,5 +8775,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2463 "parser.yy"
+#line 2472 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8772,5 +8782,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2478 "parser.yy"
+#line 2487 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8779,5 +8789,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2480 "parser.yy"
+#line 2489 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8786,5 +8796,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2485 "parser.yy"
+#line 2494 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8793,5 +8803,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2487 "parser.yy"
+#line 2496 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8800,5 +8810,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2489 "parser.yy"
+#line 2498 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8807,5 +8817,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2491 "parser.yy"
+#line 2500 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8814,5 +8824,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2493 "parser.yy"
+#line 2502 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8821,5 +8831,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2499 "parser.yy"
+#line 2508 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8828,30 +8838,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2501 "parser.yy"
+#line 2510 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 657:
-
-/* Line 1806 of yacc.c  */
-#line 2503 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 658:
-
-/* Line 1806 of yacc.c  */
-#line 2508 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
-    break;
-
-  case 659:
-
-/* Line 1806 of yacc.c  */
-#line 2510 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 660:
 
 /* Line 1806 of yacc.c  */
@@ -8860,8 +8849,29 @@
     break;
 
+  case 658:
+
+/* Line 1806 of yacc.c  */
+#line 2517 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 659:
+
+/* Line 1806 of yacc.c  */
+#line 2519 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 660:
+
+/* Line 1806 of yacc.c  */
+#line 2521 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 661:
 
 /* Line 1806 of yacc.c  */
-#line 2518 "parser.yy"
+#line 2527 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8870,5 +8880,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2520 "parser.yy"
+#line 2529 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -8877,5 +8887,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2526 "parser.yy"
+#line 2535 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8884,5 +8894,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2528 "parser.yy"
+#line 2537 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8891,5 +8901,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2530 "parser.yy"
+#line 2539 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8898,5 +8908,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2532 "parser.yy"
+#line 2541 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8905,5 +8915,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2547 "parser.yy"
+#line 2556 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8912,5 +8922,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2549 "parser.yy"
+#line 2558 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8919,5 +8929,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2554 "parser.yy"
+#line 2563 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8926,5 +8936,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2556 "parser.yy"
+#line 2565 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8933,5 +8943,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2558 "parser.yy"
+#line 2567 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8940,5 +8950,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2560 "parser.yy"
+#line 2569 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8947,5 +8957,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2562 "parser.yy"
+#line 2571 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8954,5 +8964,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2568 "parser.yy"
+#line 2577 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8961,30 +8971,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2570 "parser.yy"
+#line 2579 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 679:
-
-/* Line 1806 of yacc.c  */
-#line 2572 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 680:
-
-/* Line 1806 of yacc.c  */
-#line 2577 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
-    break;
-
-  case 681:
-
-/* Line 1806 of yacc.c  */
-#line 2579 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 682:
 
 /* Line 1806 of yacc.c  */
@@ -8993,8 +8982,29 @@
     break;
 
+  case 680:
+
+/* Line 1806 of yacc.c  */
+#line 2586 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 681:
+
+/* Line 1806 of yacc.c  */
+#line 2588 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 682:
+
+/* Line 1806 of yacc.c  */
+#line 2590 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
   case 684:
 
 /* Line 1806 of yacc.c  */
-#line 2588 "parser.yy"
+#line 2597 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -9003,5 +9013,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2599 "parser.yy"
+#line 2608 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -9010,5 +9020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2602 "parser.yy"
+#line 2611 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -9017,5 +9027,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2604 "parser.yy"
+#line 2613 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -9024,5 +9034,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2607 "parser.yy"
+#line 2616 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -9031,5 +9041,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2609 "parser.yy"
+#line 2618 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -9038,5 +9048,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2611 "parser.yy"
+#line 2620 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -9045,5 +9055,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2625 "parser.yy"
+#line 2634 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -9052,5 +9062,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2627 "parser.yy"
+#line 2636 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -9059,5 +9069,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2632 "parser.yy"
+#line 2641 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -9066,5 +9076,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2634 "parser.yy"
+#line 2643 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -9073,5 +9083,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2636 "parser.yy"
+#line 2645 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9080,5 +9090,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2638 "parser.yy"
+#line 2647 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -9087,5 +9097,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2640 "parser.yy"
+#line 2649 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -9094,5 +9104,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2646 "parser.yy"
+#line 2655 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -9101,5 +9111,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2648 "parser.yy"
+#line 2657 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -9108,5 +9118,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2650 "parser.yy"
+#line 2659 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -9115,5 +9125,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2655 "parser.yy"
+#line 2664 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -9122,5 +9132,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2657 "parser.yy"
+#line 2666 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -9129,5 +9139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2667 "parser.yy"
+#line 2676 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9136,5 +9146,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2677 "parser.yy"
+#line 2686 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9143,5 +9153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2679 "parser.yy"
+#line 2688 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9150,5 +9160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2681 "parser.yy"
+#line 2690 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9157,5 +9167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2683 "parser.yy"
+#line 2692 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9164,5 +9174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2685 "parser.yy"
+#line 2694 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9171,5 +9181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2687 "parser.yy"
+#line 2696 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9178,5 +9188,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2694 "parser.yy"
+#line 2703 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9185,5 +9195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2696 "parser.yy"
+#line 2705 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9192,5 +9202,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2698 "parser.yy"
+#line 2707 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9199,5 +9209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2700 "parser.yy"
+#line 2709 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -9206,5 +9216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2702 "parser.yy"
+#line 2711 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9213,5 +9223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2704 "parser.yy"
+#line 2713 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9220,5 +9230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2706 "parser.yy"
+#line 2715 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9227,5 +9237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2708 "parser.yy"
+#line 2717 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9234,5 +9244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2710 "parser.yy"
+#line 2719 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -9241,5 +9251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2712 "parser.yy"
+#line 2721 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9248,5 +9258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2717 "parser.yy"
+#line 2726 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -9255,5 +9265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2719 "parser.yy"
+#line 2728 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -9262,5 +9272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2724 "parser.yy"
+#line 2733 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -9269,5 +9279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2726 "parser.yy"
+#line 2735 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -9276,5 +9286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2753 "parser.yy"
+#line 2762 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9283,5 +9293,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2764 "parser.yy"
+#line 2773 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9290,5 +9300,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2766 "parser.yy"
+#line 2775 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9297,5 +9307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2768 "parser.yy"
+#line 2777 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9304,5 +9314,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2770 "parser.yy"
+#line 2779 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9311,5 +9321,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2772 "parser.yy"
+#line 2781 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9318,5 +9328,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2774 "parser.yy"
+#line 2783 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9325,5 +9335,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2781 "parser.yy"
+#line 2790 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9332,5 +9342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2783 "parser.yy"
+#line 2792 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9339,5 +9349,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2785 "parser.yy"
+#line 2794 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9346,5 +9356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2787 "parser.yy"
+#line 2796 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9353,5 +9363,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2789 "parser.yy"
+#line 2798 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9360,5 +9370,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2791 "parser.yy"
+#line 2800 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9367,5 +9377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2796 "parser.yy"
+#line 2805 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9374,5 +9384,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2801 "parser.yy"
+#line 2810 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     break;
@@ -9381,5 +9391,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2803 "parser.yy"
+#line 2812 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9388,5 +9398,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2805 "parser.yy"
+#line 2814 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9395,5 +9405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2829 "parser.yy"
+#line 2838 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9402,5 +9412,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2831 "parser.yy"
+#line 2840 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9409,5 +9419,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 9412 "Parser/parser.cc"
+#line 9422 "Parser/parser.cc"
       default: break;
     }
@@ -9640,5 +9650,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2834 "parser.yy"
+#line 2843 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/Parser/parser.yy	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 30 21:15:54 2016
-// Update Count     : 1657
+// Last Modified On : Tue Jul 12 17:26:32 2016
+// Update Count     : 1659
 //
 
@@ -712,12 +712,19 @@
 		{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
 	| SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
-		{ $$ = new StatementNode( StatementNode::Switch, $3, $8 ); /* xxx */ }
-		// The semantics of the declaration list is changed to include any associated initialization, which is performed
-		// *before* the transfer to the appropriate case clause.  Statements after the initial declaration list can
-		// never be executed, and therefore, are removed from the grammar even though C allows it.
+		{
+			StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
+			// The semantics of the declaration list is changed to include associated initialization, which is performed
+			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
+			// statement around the switch.  Statements after the initial declaration list can never be executed, and
+			// therefore, are removed from the grammar even though C allows it. Change also applies to choose statement.
+			$$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
+		}
 	| CHOOSE '(' comma_expression ')' case_clause		// CFA
-		{ $$ = new StatementNode( StatementNode::Choose, $3, $5 ); }
+		{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
 	| CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
-		{ $$ = new StatementNode( StatementNode::Choose, $3, $8 ); }
+		{
+			StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
+			$$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
+		}
 	;
 
@@ -750,5 +757,5 @@
 
 case_clause:											// CFA
-	case_label_list statement					{ $$ = $1->append_last_case( $2 ); }
+	case_label_list statement					{ $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
 	;
 
@@ -761,7 +768,7 @@
 switch_clause_list:										// CFA
 	case_label_list statement_list
-		{ $$ = $1->append_last_case( $2 ); }
+		{ $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
 	| switch_clause_list case_label_list statement_list
-		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
+		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( $3 ) ) ) ); }
 	;
 
@@ -776,20 +783,22 @@
 		{ $$ = $1->append_last_case( $2 ); }
 	| case_label_list statement_list fall_through_opt
-		{ $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3 ))); }
+		{ $$ = $1->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$2, *$3 ) ) ) ); }
 	| choose_clause_list case_label_list fall_through
 		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
 	| choose_clause_list case_label_list statement_list fall_through_opt
-		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case((StatementNode *)mkList((*$3,*$4 ))))); }
+		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$3, *$4 ) ) ) ) ) ); }
 	;
 
 fall_through_opt:										// CFA
 	// empty
+		{ $$ = new StatementNode( StatementNode::Break ); }	// insert implicit break
+	| fall_through
+	;
+
+fall_through:											// CFA
+	FALLTHRU
 		{ $$ = 0; }
-	| fall_through
-	;
-
-fall_through:											// CFA
-	FALLTHRU									{ $$ = new StatementNode( StatementNode::Fallthru ); }
-	| FALLTHRU ';'								{ $$ = new StatementNode( StatementNode::Fallthru ); }
+	| FALLTHRU ';'
+		{ $$ = 0; }
 	;
 
@@ -814,5 +823,5 @@
 		{ $$ = new StatementNode( StatementNode::Goto, $2 ); }
 	| GOTO '*' comma_expression ';'						// GCC, computed goto
-		// The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3 );
+		// The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
 		// whereas normal operator precedence yields goto (*i)+3;
 		{ $$ = new StatementNode( StatementNode::Goto, $3 ); }
@@ -820,5 +829,5 @@
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement.
 		{ $$ = new StatementNode( StatementNode::Continue ); }
-	| CONTINUE IDENTIFIER ';'					// CFA, multi-level continue
+	| CONTINUE IDENTIFIER ';'							// CFA, multi-level continue
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
 		// the target of the transfer appears only at the start of an iteration statement.
@@ -827,5 +836,5 @@
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement.
 		{ $$ = new StatementNode( StatementNode::Break ); }
-	| BREAK IDENTIFIER ';'						// CFA, multi-level exit
+	| BREAK IDENTIFIER ';'								// CFA, multi-level exit
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
 		// the target of the transfer appears only at the start of an iteration statement.
@@ -951,5 +960,5 @@
 	;
 
-asm_clobbers_list_opt:										// GCC
+asm_clobbers_list_opt:									// GCC
 	// empty
 		{ $$ = 0; }										// use default argument
@@ -1452,5 +1461,5 @@
 		{ typedefTable.makeTypedef( *$2 ); }
 		'{' field_declaration_list '}'
-		{ $$ = DeclarationNode::newAggregate( $1, $2, 0, $5); }
+		{ $$ = DeclarationNode::newAggregate( $1, $2, 0, $5 ); }
 	| aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
 		{ $$ = DeclarationNode::newAggregate( $1, 0, $3, $6 ); }
@@ -1840,5 +1849,5 @@
 		{ $$ = 0; }
 	| assertion_list_opt assertion
-		{ $$ = $1 == 0 ? $2 : $1->appendList( $2 ); }
+		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
 	;
 
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/ResolvExpr/Resolver.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 12:17:01 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 13 11:36:40 2016
-// Update Count     : 203
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:45:42 2016
+// Update Count     : 204
 //
 
@@ -49,5 +49,4 @@
 		virtual void visit( ForStmt *forStmt );
 		virtual void visit( SwitchStmt *switchStmt );
-		virtual void visit( ChooseStmt *switchStmt );
 		virtual void visit( CaseStmt *caseStmt );
 		virtual void visit( BranchStmt *branchStmt );
@@ -302,8 +301,4 @@
 
 	void Resolver::visit( SwitchStmt *switchStmt ) {
-		handleSwitchStmt( switchStmt, *this );
-	}
-
-	void Resolver::visit( ChooseStmt *switchStmt ) {
 		handleSwitchStmt( switchStmt, *this );
 	}
Index: src/SymTab/AddVisit.h
===================================================================
--- src/SymTab/AddVisit.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SymTab/AddVisit.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 16:14:32 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 15:52:42 2016
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:46:33 2016
+// Update Count     : 6
 //
 
@@ -38,16 +38,4 @@
 
 	template< typename Visitor >
-	inline void addVisit(ChooseStmt *switchStmt, Visitor &visitor) {
-		addVisitStatementList( switchStmt->get_branches(), visitor );
-		maybeAccept( switchStmt->get_condition(), visitor );
-	}
-
-	// template< typename Visitor >
-	// inline void addVisit(CaseStmt *caseStmt, Visitor &visitor) {
-	// 	addVisitStatementList( caseStmt->get_statements(), visitor );
-	// 	maybeAccept( caseStmt->get_condition(), visitor );
-	// }
-
-	template< typename Visitor >
 	void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor, bool addBefore ) {
 		std::list< Declaration * >::iterator i = translationUnit.begin();
Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SymTab/Autogen.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Rob Schluntz
 // Created On       : Thu Mar 03 15:45:56 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu May 26 14:14:09 2016
-// Update Count     : 1
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:47:17 2016
+// Update Count     : 2
 //
 
@@ -42,6 +42,4 @@
 		virtual void visit( CompoundStmt *compoundStmt );
 		virtual void visit( SwitchStmt *switchStmt );
-		virtual void visit( ChooseStmt *chooseStmt );
-		// virtual void visit( CaseStmt *caseStmt );
 
 		AutogenerateRoutines() : functionNesting( 0 ) {}
@@ -559,11 +557,3 @@
 		visitStatement( switchStmt );
 	}
-
-	void AutogenerateRoutines::visit( ChooseStmt *switchStmt ) {
-		visitStatement( switchStmt );
-	}
-
-	// void AutogenerateRoutines::visit( CaseStmt *caseStmt ) {
-	// 	visitStatement( caseStmt );
-	// }
 } // SymTab
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SymTab/Indexer.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 21:37:33 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri Apr 22 15:25:43 2016
-// Update Count     : 11
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:47:47 2016
+// Update Count     : 12
 //
 
@@ -520,6 +520,5 @@
 			const MangleTable &mangleTable = decls->second;
 			for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
-				// check for C decls with the same name, skipping
-				// those with a compatible type (by mangleName)
+				// check for C decls with the same name, skipping those with a compatible type (by mangleName)
 				if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true;
 			}
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SymTab/Validate.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 21:50:04 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed May 11 13:17:52 2016
-// Update Count     : 297
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:49:21 2016
+// Update Count     : 298
 //
 
@@ -74,6 +74,4 @@
 		virtual void visit( CompoundStmt *compoundStmt );
 		virtual void visit( SwitchStmt *switchStmt );
-		virtual void visit( ChooseStmt *chooseStmt );
-		// virtual void visit( CaseStmt *caseStmt );
 	  private:
 		HoistStruct();
@@ -268,12 +266,4 @@
 		addVisit( switchStmt, *this );
 	}
-
-	void HoistStruct::visit( ChooseStmt *switchStmt ) {
-		addVisit( switchStmt, *this );
-	}
-
-	// void HoistStruct::visit( CaseStmt *caseStmt ) {
-	// 	addVisit( caseStmt, *this );
-	// }
 
 	void Pass1::visit( EnumDecl *enumDecl ) {
@@ -551,4 +541,5 @@
 		if ( StructInstType *aggDecl = dynamic_cast< StructInstType * >( tyDecl->get_base() ) ) {
 			return new StructDecl( aggDecl->get_name() );
+//			return aggDecl->get_baseStruct();
 		} else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( tyDecl->get_base() ) ) {
 			return new UnionDecl( aggDecl->get_name() );
@@ -645,4 +636,5 @@
 		} // if
 	}
+
 	Declaration *EliminateTypedef::mutate( StructDecl * structDecl ) {
 		addImplicitTypedef( structDecl );
@@ -691,12 +683,4 @@
 
 		Visitor::visit( funcDecl );
-		// original idea: modify signature of ctor/dtors and insert appropriate return statements
-		// to cause desired behaviour
-		// new idea: add comma exprs to every ctor call to produce first parameter.
-		// this requires some memoization of the first parameter, because it can be a
-		// complicated expression with side effects (see: malloc). idea: add temporary variable
-		// that is assigned address of constructed object in ctor argument position and
-		// return the temporary. It should also be done after all implicit ctors are
-		// added, so not in this pass!
 	}
 
Index: src/SynTree/AddStmtVisitor.cc
===================================================================
--- src/SynTree/AddStmtVisitor.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/AddStmtVisitor.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Rob Schluntz
 // Created On       : Wed Jun 22 12:11:17 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jun 22 12:16:29 2016
-// Update Count     : 11
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:49:59 2016
+// Update Count     : 12
 //
 
@@ -75,9 +75,4 @@
 }
 
-void AddStmtVisitor::visit(ChooseStmt *switchStmt) {
-	visitStatementList( switchStmt->get_branches() );
-	maybeAccept( switchStmt->get_condition(), *this );
-}
-
 void AddStmtVisitor::visit(CaseStmt *caseStmt) {
 	visitStatementList( caseStmt->get_statements() );
Index: src/SynTree/AddStmtVisitor.h
===================================================================
--- src/SynTree/AddStmtVisitor.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/AddStmtVisitor.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Rob Schluntz
 // Created On       : Wed Jun 22 12:05:48 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jun 22 12:12:05 2016
-// Update Count     : 7
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:50:32 2016
+// Update Count     : 8
 //
 
@@ -32,5 +32,4 @@
 	virtual void visit(ForStmt *forStmt);
 	virtual void visit(SwitchStmt *switchStmt);
-	virtual void visit(ChooseStmt *chooseStmt);
 	virtual void visit(CaseStmt *caseStmt);
 	virtual void visit(CatchStmt *catchStmt);
Index: src/SynTree/Mutator.cc
===================================================================
--- src/SynTree/Mutator.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/Mutator.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Apr 27 17:07:29 2016
-// Update Count     : 16
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:51:19 2016
+// Update Count     : 17
 //
 
@@ -130,14 +130,4 @@
 }
 
-Statement *Mutator::mutate( ChooseStmt *switchStmt ) {
-	switchStmt->set_condition( maybeMutate( switchStmt->get_condition(), *this ) );
-	mutateAll( switchStmt->get_branches(), *this );
-	return switchStmt;
-}
-
-Statement *Mutator::mutate( FallthruStmt *fallthruStmt ) {
-	return fallthruStmt;
-}
-
 Statement *Mutator::mutate( CaseStmt *caseStmt ) {
 	caseStmt->set_condition( maybeMutate( caseStmt->get_condition(), *this ) );
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/Mutator.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 15:32:00 2016
-// Update Count     : 10
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:51:43 2016
+// Update Count     : 11
 //
 #include <cassert>
@@ -42,6 +42,4 @@
 	virtual Statement* mutate( ForStmt *forStmt );
 	virtual Statement* mutate( SwitchStmt *switchStmt );
-	virtual Statement* mutate( ChooseStmt *chooseStmt );
-	virtual Statement* mutate( FallthruStmt *fallthruStmt );
 	virtual Statement* mutate( CaseStmt *caseStmt );
 	virtual Statement* mutate( BranchStmt *branchStmt );
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/Statement.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu May 12 13:33:18 2016
-// Update Count     : 54
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:52:32 2016
+// Update Count     : 55
 //
 
@@ -206,37 +206,4 @@
 	for ( i = stmts.begin(); i != stmts.end(); i++)
 		(*i )->print( os, indent + 4 );
-}
-
-//ChooseStmt::ChooseStmt( std::list<Label> labels, Expression *condition, Statement *body ) {}
-ChooseStmt::ChooseStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
-	Statement( _labels ), condition( _condition ), branches( _branches ) {
-}
-
-ChooseStmt::ChooseStmt( const ChooseStmt & other ):
-	Statement( other ), condition( maybeClone( other.condition ) ) {
-		cloneAll( other.branches, branches );
-}
-
-ChooseStmt::~ChooseStmt() {
-	delete condition;
-}
-
-void ChooseStmt::add_case( CaseStmt *c ) {}
-
-void ChooseStmt::print( std::ostream &os, int indent ) const {
-	os << "Choose on condition: ";
-	condition->print( os );
-	os << endl;
-
-	// branches
-	std::list<Statement *>::const_iterator i;
-	for ( i = branches.begin(); i != branches.end(); i++)
-		(*i )->print( os, indent + 4 );
-
-	//for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
-}
-
-void FallthruStmt::print( std::ostream &os, int indent ) const {
-	os << string( indent, ' ' ) << "Fall-through statement" << endl;
 }
 
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/Statement.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Dec 09 14:09:24 2015
-// Update Count     : 46
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:53:29 2016
+// Update Count     : 47
 //
 
@@ -149,37 +149,4 @@
 };
 
-class ChooseStmt : public Statement {
-  public:
-	ChooseStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &branches );
-	ChooseStmt( const ChooseStmt &other );
-	virtual ~ChooseStmt();
-
-	Expression *get_condition() { return condition; }
-	void set_condition( Expression *newValue ) { condition = newValue; }
-
-	std::list<Statement *>& get_branches() { return branches; }
-	void add_case( CaseStmt * );
-
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-
-	virtual ChooseStmt *clone() const { return new ChooseStmt( *this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	Expression *condition;
-	std::list<Statement *> branches; // should be list of CaseStmt
-};
-
-class FallthruStmt : public Statement {
-  public:
-	FallthruStmt( std::list<Label> labels ) : Statement( labels ) { }
-
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-
-	virtual FallthruStmt *clone() const { return new FallthruStmt( *this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-};
-
 class CaseStmt : public Statement {
   public:
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/SynTree.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 15:31:36 2016
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:54:02 2016
+// Update Count     : 6
 //
 
@@ -45,6 +45,4 @@
 class ForStmt;
 class SwitchStmt;
-class ChooseStmt;
-class FallthruStmt;
 class CaseStmt;
 class BranchStmt;
Index: src/SynTree/Visitor.cc
===================================================================
--- src/SynTree/Visitor.cc	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/Visitor.cc	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Apr 27 17:07:40 2016
-// Update Count     : 18
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:54:39 2016
+// Update Count     : 19
 //
 
@@ -112,11 +112,4 @@
 }
 
-void Visitor::visit( ChooseStmt *switchStmt ) {
-	maybeAccept( switchStmt->get_condition(), *this );
-	acceptAll( switchStmt->get_branches(), *this );
-}
-
-void Visitor::visit( FallthruStmt *fallthruStmt ) {}
-
 void Visitor::visit( CaseStmt *caseStmt ) {
 	maybeAccept( caseStmt->get_condition(), *this );
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/SynTree/Visitor.h	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Apr 14 15:30:58 2016
-// Update Count     : 7
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 17:55:09 2016
+// Update Count     : 8
 //
 
@@ -42,6 +42,4 @@
 	virtual void visit( ForStmt *forStmt );
 	virtual void visit( SwitchStmt *switchStmt );
-	virtual void visit( ChooseStmt *switchStmt );
-	virtual void visit( FallthruStmt *switchStmt );
 	virtual void visit( CaseStmt *caseStmt );
 	virtual void visit( BranchStmt *branchStmt );
Index: src/examples/includes.c
===================================================================
--- src/examples/includes.c	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/examples/includes.c	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr 13 22:30:02 2016
-// Update Count     : 370
+// Last Modified On : Tue Jul 12 17:59:25 2016
+// Update Count     : 371
 //
 
@@ -22,17 +22,17 @@
 #endif // __CFA__
 
+#if 0
 #if 1
 #define _GNU_SOURCE
-//#include <aio.h>
-//#include <a.out.h>
-//#include <aliases.h>
-//#include <alloca.h>
-//#include <ansidecl.h>
-//#include <ar.h>
-//#include <argp.h>
+#include <aio.h>
+#include <a.out.h>
+#include <aliases.h>
+#include <alloca.h>
+#include <ansidecl.h>
+#include <ar.h>
+#include <argp.h>
 #include <argz.h>
-//#include <assert.h>
+#include <assert.h>
 #include <bfd.h>
-#if 0
 #include <bfdlink.h>
 #include <byteswap.h>
@@ -44,8 +44,10 @@
 #include <ctype.h>
 #include <curses.h>
-#include <demangle.h>
+//#include <demangle.h>
 #include <dialog.h>
 #include <dirent.h>
 #include <dis-asm.h>
+#endif
+#if 0
 #include <dlfcn.h>
 #include <dlg_colors.h>
@@ -128,7 +130,9 @@
 #else
 
-//#define _GNU_SOURCE
-#include <bfd.h>
+#define _GNU_SOURCE
+//#include <bfd.h>
 //#include <error.h>
+
+#include <demangle.h>
 
 #endif // 0
Index: src/libcfa/iostream
===================================================================
--- src/libcfa/iostream	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/libcfa/iostream	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Apr 10 23:00:12 2016
-// Update Count     : 92
+// Last Modified On : Tue Jul 12 18:01:09 2016
+// Update Count     : 93
 //
 
@@ -42,5 +42,5 @@
 };
 
-// implement writable for some intrinsic types
+// implement writable for intrinsic types
 
 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, char );
@@ -67,4 +67,5 @@
 
 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype * ) );
+// manipulators
 forall( dtype ostype | ostream( ostype ) ) ostype * endl( ostype * );
 forall( dtype ostype | ostream( ostype ) ) ostype * sepOn( ostype * );
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/libcfa/iostream.c	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 26 10:08:31 2016
-// Update Count     : 305
+// Last Modified On : Tue Jul 12 18:01:39 2016
+// Update Count     : 306
 //
 
@@ -185,5 +185,5 @@
 
 forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, ostype * (* manip)( ostype * ) ) {
+ostype * ?|?( ostype * os, ostype * (* manip)( ostype * ) ) {
 	return manip( os );
 } // ?|?
Index: src/tests/.expect/gccExtensions.txt
===================================================================
--- src/tests/.expect/gccExtensions.txt	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/tests/.expect/gccExtensions.txt	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -27,32 +27,32 @@
     }
     inline void ___constructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
-        ((void)((*___dst__P2sS_2).__a__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__c__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
     }
     inline void ___constructor__F_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
-        ((void)((*___dst__P2sS_2).__a__i_2=___src__2sS_2.__a__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__b__i_2=___src__2sS_2.__b__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__c__i_2=___src__2sS_2.__c__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=___src__2sS_2.__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=___src__2sS_2.__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=___src__2sS_2.__c__i_2) /* ?{} */);
     }
     inline void ___destructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
-        ((void)((*___dst__P2sS_2).__c__i_2) /* ^?{} */);
-        ((void)((*___dst__P2sS_2).__b__i_2) /* ^?{} */);
-        ((void)((*___dst__P2sS_2).__a__i_2) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ^?{} */);
     }
     inline void ___constructor__F_P2sSi_autogen___2(struct S *___dst__P2sS_2, int __a__i_2){
-        ((void)((*___dst__P2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__c__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
     }
     inline void ___constructor__F_P2sSii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2){
-        ((void)((*___dst__P2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__c__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
     }
     inline void ___constructor__F_P2sSiii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2, int __c__i_2){
-        ((void)((*___dst__P2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__P2sS_2).__c__i_2=__c__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=__c__i_2) /* ?{} */);
     }
     int __i__i_2;
@@ -92,14 +92,14 @@
     }
     inline void ___constructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
-        ((void)((*___dst__P3ss2_2).__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ?{} */);
     }
     inline void ___constructor__F_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
-        ((void)((*___dst__P3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=___src__3ss2_2.__i__i_2) /* ?{} */);
     }
     inline void ___destructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
-        ((void)((*___dst__P3ss2_2).__i__i_2) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ^?{} */);
     }
     inline void ___constructor__F_P3ss2i_autogen___2(struct s2 *___dst__P3ss2_2, int __i__i_2){
-        ((void)((*___dst__P3ss2_2).__i__i_2=__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=__i__i_2) /* ?{} */);
     }
     struct s3 {
@@ -111,14 +111,14 @@
     }
     inline void ___constructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
-        ((void)((*___dst__P3ss3_2).__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ?{} */);
     }
     inline void ___constructor__F_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
-        ((void)((*___dst__P3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=___src__3ss3_2.__i__i_2) /* ?{} */);
     }
     inline void ___destructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
-        ((void)((*___dst__P3ss3_2).__i__i_2) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ^?{} */);
     }
     inline void ___constructor__F_P3ss3i_autogen___2(struct s3 *___dst__P3ss3_2, int __i__i_2){
-        ((void)((*___dst__P3ss3_2).__i__i_2=__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=__i__i_2) /* ?{} */);
     }
     struct s3 __x1__3ss3_2;
@@ -136,14 +136,14 @@
     }
     inline void ___constructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
-        ((void)((*___dst__P3ss4_2).__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ?{} */);
     }
     inline void ___constructor__F_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
-        ((void)((*___dst__P3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=___src__3ss4_2.__i__i_2) /* ?{} */);
     }
     inline void ___destructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
-        ((void)((*___dst__P3ss4_2).__i__i_2) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ^?{} */);
     }
     inline void ___constructor__F_P3ss4i_autogen___2(struct s4 *___dst__P3ss4_2, int __i__i_2){
-        ((void)((*___dst__P3ss4_2).__i__i_2=__i__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=__i__i_2) /* ?{} */);
     }
     struct s4 __x2__3ss4_2;
Index: src/tests/switch.c
===================================================================
--- src/tests/switch.c	(revision 8884112f6012d1ef3898e66c4346b27c42414419)
+++ src/tests/switch.c	(revision d1b9d78dbb8ce4a49ec02c3d7f5de714bde90513)
@@ -1,42 +1,99 @@
-int main(int argc, char const *argv[]) {
-    int i;
-    switch ( i ) case 3 : i = 1;
-    switch ( i ) default : i = 1;
-    switch ( 3 )
-      default:
-      case 2:
-      case 3:
-	3;
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// switch.c -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul 12 06:50:22 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 12 18:02:23 2016
+// Update Count     : 22
+// 
 
-    switch ( i ) {
-    }
+int f( int i ) { return i; }
 
-    switch ( i ) {
-	int i;
-      case 8~10:
-      default:
-	i = 3;
-      case 3:
-      case 'A' ... 'Z':
-      case 5 ... 6:
-      case 2, 4:
-	i = 3;
-	break;
-    }
+int main() {
+	int i = 0;
+	switch ( i ) case 3 : i = 1;
+	switch ( i ) default : f( 3 );
 
-    choose ( i ) case 3 : i = 1;
-    choose ( i ) default : i = 1;
-    choose ( i ) {
-	int i;
-      case 3:
-      case 'A' ... 'Z':
-      case 5 ... 6:
-      case 2, 4, 7:
-	i = 3;
-	fallthru;
-      default:
-	i = 3;
-      case 8~10:
-	fallthru
-    }
+	switch ( 3 )
+	  default:
+	  case 2:
+	  case 3:
+		f( 3 );
+
+	switch ( i ) {}
+	switch ( i ) {
+	  case 3:
+		f( 3 );
+	} // switch
+
+	// switch (3 ) {
+	// 	int j;
+	//   case 3:
+	// 	break;
+	//   case 4:
+	// 	j = 0;
+	// }
+
+	switch ( i ) {
+		int j = 0;
+		int k = 0;
+		struct S { int i; };
+		S s;
+	  case 8~10:
+	  default:
+		i = 3;
+	  case 3:
+	  case 'A' ... 'Z':
+	  case 5 ... 6:
+	  case 2, 4:
+		j = 3;
+		f( 3 );
+		break;
+	} // switch
+
+	choose ( i ) case 3 : f( 3 );
+	choose ( i ) default : i = 1;
+
+	choose ( 3 )
+	  case 2:
+	  default:
+	  case 3:
+		f( 3 );
+
+	choose ( i ) {}
+	choose ( i ) {
+	  case 3:
+		f( 3 );
+	} // choose
+
+	choose ( i ) {
+		int j = 0;
+		int k = 0;
+		struct S { int i; };
+		S s;
+	  case 3:
+	  case 'A' ... 'Z':
+	  case 5 ... 6:
+	  case 2, 4, 7:
+		i = 3;
+		f( 3 );
+	  default:
+		j = 3;
+	  case 8~10:
+		f( 3 );
+		fallthru
+	  case 'd':
+		j = 5;
+	} // choose
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa switch.c" //
+// End: //
