Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 08d5507b99eb502f8fb69133c61233301ed6b029)
+++ src/Parser/DeclarationNode.cc	(revision e4963038932ac33928b1e543951f9cd852293517)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar 14 10:19:38 2017
-// Update Count     : 964
+// Last Modified On : Tue Mar 14 14:45:52 2017
+// Update Count     : 973
 //
 
@@ -202,5 +202,5 @@
 
 
-DeclarationNode * DeclarationNode::newStorageClass( DeclarationNode::StorageClasses sc ) {
+DeclarationNode * DeclarationNode::newStorageClass( StorageClasses sc ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->storageClasses = sc;
@@ -208,5 +208,5 @@
 } // DeclarationNode::newStorageClass
 
-DeclarationNode * DeclarationNode::newFuncSpecifier( DeclarationNode::FuncSpecifiers fs ) {
+DeclarationNode * DeclarationNode::newFuncSpecifier( FuncSpecifiers fs ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->funcSpecs = fs;
@@ -214,8 +214,8 @@
 } // DeclarationNode::newFuncSpecifier
 
-DeclarationNode * DeclarationNode::newTypeQualifier( TypeQualifier tq ) {
+DeclarationNode * DeclarationNode::newTypeQualifier( TypeQualifiers tq ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = new TypeData();
-	newnode->type->typeQualifiers[ tq ] = true;
+	newnode->type->typeQualifiers = tq;
 	return newnode;
 } // DeclarationNode::newQualifier
@@ -457,7 +457,7 @@
 
 void DeclarationNode::checkQualifiers( const TypeData * src, const TypeData * dst ) {
-	const TypeData::TypeQualifiers qsrc = src->typeQualifiers, qdst = dst->typeQualifiers; // optimization
-
-	if ( (qsrc & qdst).any() ) {						// duplicates ?
+	const TypeQualifiers qsrc = src->typeQualifiers, qdst = dst->typeQualifiers; // optimization
+
+	if ( (qsrc.val & qdst.val) != 0 ) {					// duplicates ?
 		for ( unsigned int i = 0; i < NoTypeQualifier; i += 1 ) { // find duplicates
 			if ( qsrc[i] && qdst[i] ) {
@@ -520,5 +520,5 @@
 		src = nullptr;
 	} else {
-		dst->typeQualifiers |= src->typeQualifiers;
+		dst->typeQualifiers.val |= src->typeQualifiers.val;
 	} // if
 } // addQualifiersToType
@@ -578,10 +578,10 @@
 		switch ( dst->kind ) {
 		  case TypeData::Unknown:
-			src->typeQualifiers |= dst->typeQualifiers;
+			src->typeQualifiers.val |= dst->typeQualifiers.val;
 			dst = src;
 			src = nullptr;
 			break;
 		  case TypeData::Basic:
-			dst->typeQualifiers |= src->typeQualifiers;
+			dst->typeQualifiers.val |= src->typeQualifiers.val;
 			if ( src->kind != TypeData::Unknown ) {
 				assert( src->kind == TypeData::Basic );
@@ -619,5 +619,5 @@
 					dst->base->aggInst.params = maybeClone( src->aggregate.actuals );
 				} // if
-				dst->base->typeQualifiers |= src->typeQualifiers;
+				dst->base->typeQualifiers.val |= src->typeQualifiers.val;
 				src = nullptr;
 				break;
@@ -651,5 +651,5 @@
 						type->aggInst.hoistType = o->type->enumeration.body;
 					} // if
-					type->typeQualifiers |= o->type->typeQualifiers;
+					type->typeQualifiers.val |= o->type->typeQualifiers.val;
 				} else {
 					type = o->type;
@@ -807,5 +807,5 @@
 					p->type->base->aggInst.params = maybeClone( type->aggregate.actuals );
 				} // if
-				p->type->base->typeQualifiers |= type->typeQualifiers;
+				p->type->base->typeQualifiers.val |= type->typeQualifiers.val;
 				break;
 
@@ -844,5 +844,5 @@
 					lastArray->base->aggInst.params = maybeClone( type->aggregate.actuals );
 				} // if
-				lastArray->base->typeQualifiers |= type->typeQualifiers;
+				lastArray->base->typeQualifiers.val |= type->typeQualifiers.val;
 				break;
 			  default:
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 08d5507b99eb502f8fb69133c61233301ed6b029)
+++ src/Parser/ParseNode.h	(revision e4963038932ac33928b1e543951f9cd852293517)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar 14 11:05:05 2017
-// Update Count     : 752
+// Last Modified On : Tue Mar 14 16:53:19 2017
+// Update Count     : 757
 //
 
@@ -19,5 +19,4 @@
 #include <string>
 #include <list>
-#include <bitset>
 #include <iterator>
 #include <memory>
@@ -232,5 +231,20 @@
 	}; // FuncSpecifiers
 
-	enum TypeQualifier { Const, Restrict, Volatile, Lvalue, Mutex, Atomic, NoTypeQualifier };
+	enum { Const = 1 << 0, Restrict = 1 << 1, Volatile = 1 << 2, Lvalue = 1 << 3, Mutex = 1 << 4, Atomic = 1 << 5, NoTypeQualifier = 6 };
+	union TypeQualifiers {
+		unsigned int val;
+		struct {
+			bool is_const : 1;
+			bool is_restrict : 1;
+			bool is_volatile : 1;
+			bool is_lvalue : 1;
+			bool is_mutex : 1;
+			bool is_atomic : 1;
+		};
+		TypeQualifiers() : val( 0 ) {}
+		TypeQualifiers( unsigned int val ) : val( val ) {}
+		bool operator[]( unsigned int i ) const { return val & (1 << i); }
+	}; // TypeQualifiers
+
 	enum BasicType { Void, Bool, Char, Int, Float, Double, LongDouble, NoBasicType };
 	enum ComplexType { Complex, Imaginary, NoComplexType };
@@ -254,5 +268,5 @@
 	static DeclarationNode * newStorageClass( StorageClasses );
 	static DeclarationNode * newFuncSpecifier( FuncSpecifiers );
-	static DeclarationNode * newTypeQualifier( TypeQualifier );
+	static DeclarationNode * newTypeQualifier( TypeQualifiers );
 	static DeclarationNode * newBasicType( BasicType );
 	static DeclarationNode * newComplexType( ComplexType );
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 08d5507b99eb502f8fb69133c61233301ed6b029)
+++ src/Parser/TypeData.cc	(revision e4963038932ac33928b1e543951f9cd852293517)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  7 08:08:21 2017
-// Update Count     : 538
+// Last Modified On : Tue Mar 14 15:01:44 2017
+// Update Count     : 548
 //
 
@@ -26,5 +26,5 @@
 using namespace std;
 
-TypeData::TypeData( Kind k ) : kind( k ), base( nullptr ), forall( nullptr ) {
+TypeData::TypeData( Kind k ) : kind( k ), base( nullptr ), forall( nullptr ) /*, PTR1( (void*)(0xdeadbeefdeadbeef)), PTR2( (void*)(0xdeadbeefdeadbeef) ) */ {
 	switch ( kind ) {
 	  case Unknown:
@@ -50,4 +50,10 @@
 		function.newStyle = false;
 		break;
+		// Enum is an Aggregate, so both structures are initialized together.
+	  case Enum:
+		// enumeration = new Enumeration_t;
+		enumeration.name = nullptr;
+		enumeration.constants = nullptr;
+		enumeration.body = false;
 	  case Aggregate:
 		// aggregate = new Aggregate_t;
@@ -63,10 +69,4 @@
 		aggInst.params = nullptr;
 		aggInst.hoistType = false;;
-		break;
-	  case Enum:
-		// enumeration = new Enumeration_t;
-		enumeration.name = nullptr;
-		enumeration.constants = nullptr;
-		enumeration.body = false;
 		break;
 	  case Symbolic:
@@ -494,9 +494,9 @@
 Type::Qualifiers buildQualifiers( const TypeData * td ) {
 	Type::Qualifiers q;
-	q.isConst = td->typeQualifiers[ DeclarationNode::Const ];
-	q.isVolatile = td->typeQualifiers[ DeclarationNode::Volatile ];
-	q.isRestrict = td->typeQualifiers[ DeclarationNode::Restrict ];
-	q.isLvalue = td->typeQualifiers[ DeclarationNode::Lvalue ];
-	q.isAtomic = td->typeQualifiers[ DeclarationNode::Atomic ];;
+	q.isConst = td->typeQualifiers.is_const;
+	q.isVolatile = td->typeQualifiers.is_volatile;
+	q.isRestrict = td->typeQualifiers.is_restrict;
+	q.isLvalue = td->typeQualifiers.is_lvalue;
+	q.isAtomic = td->typeQualifiers.is_atomic;
 	return q;
 } // buildQualifiers
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 08d5507b99eb502f8fb69133c61233301ed6b029)
+++ src/Parser/TypeData.h	(revision e4963038932ac33928b1e543951f9cd852293517)
@@ -10,12 +10,10 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  8 22:28:33 2017
-// Update Count     : 174
+// Last Modified On : Tue Mar 14 16:51:26 2017
+// Update Count     : 181
 //
 
 #ifndef TYPEDATA_H
 #define TYPEDATA_H
-
-#include <bitset>
 
 #include "ParseNode.h"
@@ -77,6 +75,5 @@
 	DeclarationNode::BuiltinType builtintype = DeclarationNode::NoBuiltinType;
 
-	typedef std::bitset< DeclarationNode::NoTypeQualifier > TypeQualifiers;
-	TypeQualifiers typeQualifiers;
+	DeclarationNode::TypeQualifiers typeQualifiers;
 	DeclarationNode * forall;
 
