Index: src/SymTab/ImplementationType.cc
===================================================================
--- src/SymTab/ImplementationType.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
+++ src/SymTab/ImplementationType.cc	(revision 6f950007fd85cf2f04928840823d690ed9c9d98b)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:32:01 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:31:20 2016
-// Update Count     : 3
+// Last Modified On : Thu Mar 16 15:54:08 2017
+// Update Count     : 4
 //
 
@@ -105,5 +105,5 @@
 		if ( typeDecl && typeDecl->get_base() ) {
 			Type *base = implementationType( typeDecl->get_base(), indexer );
-			base->get_qualifiers() += inst->get_qualifiers();
+			base->get_qualifiers() |= inst->get_qualifiers();
 			result = base;
 		} // if
@@ -114,5 +114,5 @@
 		for ( std::list< Type* >::iterator i = tupleType->get_types().begin(); i != tupleType->get_types().end(); ++i ) {
 			Type *implType = implementationType( *i, indexer );
-			implType->get_qualifiers() += tupleType->get_qualifiers();
+			implType->get_qualifiers() |= tupleType->get_qualifiers();
 			newType->get_types().push_back( implType );
 		} // for
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
+++ src/SymTab/Validate.cc	(revision 6f950007fd85cf2f04928840823d690ed9c9d98b)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:50:04 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 08:02:54 2017
-// Update Count     : 351
+// Last Modified On : Thu Mar 16 16:39:15 2017
+// Update Count     : 353
 //
 
@@ -611,5 +611,5 @@
 		if ( def != typedefNames.end() ) {
 			Type *ret = def->second.first->get_base()->clone();
-			ret->get_qualifiers() += typeInst->get_qualifiers();
+			ret->get_qualifiers() |= typeInst->get_qualifiers();
 			// place instance parameters on the typedef'd type
 			if ( ! typeInst->get_parameters().empty() ) {
@@ -656,9 +656,11 @@
 		// hence the type-name "screen" must be defined.
 		// Note, qualifiers on the typedef are superfluous for the forward declaration.
-		if ( StructInstType *aggDecl = dynamic_cast< StructInstType * >( tyDecl->get_base() ) ) {
+
+		Type *designatorType = tyDecl->get_base()->stripDeclarator();
+		if ( StructInstType *aggDecl = dynamic_cast< StructInstType * >( designatorType ) ) {
 			return new StructDecl( aggDecl->get_name() );
-		} else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( tyDecl->get_base() ) ) {
+		} else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( designatorType ) ) {
 			return new UnionDecl( aggDecl->get_name() );
-		} else if ( EnumInstType *enumDecl = dynamic_cast< EnumInstType * >( tyDecl->get_base() ) ) {
+		} else if ( EnumInstType *enumDecl = dynamic_cast< EnumInstType * >( designatorType ) ) {
 			return new EnumDecl( enumDecl->get_name() );
 		} else {
