Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 4fd45bc68a860b66735e58a7cc9d93a896457835)
+++ src/Parser/DeclarationNode.cc	(revision 70a1c3aed5e5b84a329ddc71a02c60806fd80216)
@@ -509,5 +509,5 @@
 
 	for ( Attribute *attr: reverseIterate( q->attributes ) ) {
-		attributes.push_front( attr->clone() );
+		attributes.insert(attributes.begin(), attr->clone() );
 	} // for
 	return this;
@@ -770,5 +770,5 @@
 	if ( a ) {
 		for ( Attribute *attr: reverseIterate( a->attributes ) ) {
-			attributes.push_front( attr );
+			attributes.insert( attributes.begin(), attr );
 		} // for
 		a->attributes.clear();
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 4fd45bc68a860b66735e58a7cc9d93a896457835)
+++ src/Parser/ParseNode.h	(revision 70a1c3aed5e5b84a329ddc71a02c60806fd80216)
@@ -344,5 +344,5 @@
 	LinkageSpec::Spec linkage;
 	Expression * asmName = nullptr;
-	std::list< Attribute * > attributes;
+	std::vector< Attribute * > attributes;
 	InitializerNode * initializer = nullptr;
 	bool extension = false;
@@ -374,5 +374,5 @@
 
 	virtual StatementNode * add_label( const std::string * name, DeclarationNode * attr = nullptr ) {
-		stmt->get_labels().emplace_back( * name, nullptr, attr ? std::move( attr->attributes ) : std::list< Attribute * > {} );
+		stmt->get_labels().emplace_back( * name, nullptr, attr ? std::move( attr->attributes ) : std::vector< Attribute * > {} );
 		delete attr;
 		delete name;
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 4fd45bc68a860b66735e58a7cc9d93a896457835)
+++ src/Parser/TypeData.cc	(revision 70a1c3aed5e5b84a329ddc71a02c60806fd80216)
@@ -760,5 +760,5 @@
 
 
-AggregateDecl * buildAggregate( const TypeData * td, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) {
+AggregateDecl * buildAggregate( const TypeData * td, std::vector< Attribute * > attributes, LinkageSpec::Spec linkage ) {
 	assert( td->kind == TypeData::Aggregate );
 	AggregateDecl * at;
@@ -790,5 +790,5 @@
 
 
-ReferenceToType * buildComAggInst( const TypeData * type, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) {
+ReferenceToType * buildComAggInst( const TypeData * type, std::vector< Attribute * > attributes, LinkageSpec::Spec linkage ) {
 	switch ( type->kind ) {
 	  case TypeData::Enum: {
@@ -850,5 +850,5 @@
 	assert( td->kind == TypeData::AggregateInst );
 
-	// ReferenceToType * ret = buildComAggInst( td->aggInst.aggregate, std::list< Attribute * >() );
+	// ReferenceToType * ret = buildComAggInst( td->aggInst.aggregate, std::vector< Attribute * >() );
 	ReferenceToType * ret = nullptr;
 	TypeData * type = td->aggInst.aggregate;
@@ -887,5 +887,5 @@
 
 
-NamedTypeDecl * buildSymbolic( const TypeData * td, std::list< Attribute * > attributes, const string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage ) {
+NamedTypeDecl * buildSymbolic( const TypeData * td, std::vector< Attribute * > attributes, const string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage ) {
 	assert( td->kind == TypeData::Symbolic );
 	NamedTypeDecl * ret;
@@ -898,10 +898,10 @@
 	buildList( td->symbolic.params, ret->get_parameters() );
 	buildList( td->symbolic.assertions, ret->get_assertions() );
-	ret->base->attributes.splice( ret->base->attributes.end(), attributes );
+	ret->base->attributes.insert( ret->base->attributes.end(), attributes.begin(), attributes.end() );
 	return ret;
 } // buildSymbolic
 
 
-EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) {
+EnumDecl * buildEnum( const TypeData * td, std::vector< Attribute * > attributes, LinkageSpec::Spec linkage ) {
 	assert( td->kind == TypeData::Enum );
 	EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes, linkage );
@@ -947,5 +947,5 @@
 
 
-Declaration * buildDecl( const TypeData * td, const string &name, Type::StorageClasses scs, Expression * bitfieldWidth, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec linkage, Expression *asmName, Initializer * init, std::list< Attribute * > attributes ) {
+Declaration * buildDecl( const TypeData * td, const string &name, Type::StorageClasses scs, Expression * bitfieldWidth, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec linkage, Expression *asmName, Initializer * init, std::vector< Attribute * > attributes ) {
 	if ( td->kind == TypeData::Function ) {
 		if ( td->function.idList ) {					// KR function ?
@@ -1020,5 +1020,5 @@
 				param->type = decl->type;				// set copy declaration type to parameter type
 				decl->type = nullptr;					// reset declaration type
-				param->attributes.splice( param->attributes.end(), decl->attributes ); // copy and reset attributes from declaration to parameter
+				param->attributes.insert( param->attributes.end(), decl->attributes.begin(), decl->attributes.end() ); // copy and reset attributes from declaration to parameter
 			} // if
 		} // for
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 4fd45bc68a860b66735e58a7cc9d93a896457835)
+++ src/Parser/TypeData.h	(revision 70a1c3aed5e5b84a329ddc71a02c60806fd80216)
@@ -19,4 +19,5 @@
 #include <list>                  // for list
 #include <string>                // for string
+#include <vector>
 
 #include "ParseNode.h"           // for DeclarationNode, DeclarationNode::Ag...
@@ -120,14 +121,14 @@
 ArrayType * buildArray( const TypeData * );
 ReferenceType * buildReference( const TypeData * );
-AggregateDecl * buildAggregate( const TypeData *, std::list< Attribute * > );
-ReferenceToType * buildComAggInst( const TypeData *, std::list< Attribute * > attributes, LinkageSpec::Spec linkage );
+AggregateDecl * buildAggregate( const TypeData *, std::vector< Attribute * > );
+ReferenceToType * buildComAggInst( const TypeData *, std::vector< Attribute * > attributes, LinkageSpec::Spec linkage );
 ReferenceToType * buildAggInst( const TypeData * );
 TypeDecl * buildVariable( const TypeData * );
-EnumDecl * buildEnum( const TypeData *, std::list< Attribute * >, LinkageSpec::Spec );
+EnumDecl * buildEnum( const TypeData *, std::vector< Attribute * >, LinkageSpec::Spec );
 TypeInstType * buildSymbolicInst( const TypeData * );
 TupleType * buildTuple( const TypeData * );
 TypeofType * buildTypeof( const TypeData * );
 Declaration * buildDecl( const TypeData *, const std::string &, Type::StorageClasses, Expression *, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec, Expression * asmName,
-						 Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
+						 Initializer * init = nullptr, std::vector< Attribute * > attributes = std::vector< Attribute * >() );
 FunctionType * buildFunction( const TypeData * );
 void buildKRFunction( const TypeData::Function_t & function );
