Index: translator/SynTree/Initializer.cc
===================================================================
--- translator/SynTree/Initializer.cc	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Initializer.cc	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -39,17 +39,4 @@
 }
 
-MemberInit::MemberInit( Expression *_value, std::string _member ) : member ( _member ), value ( _value ) {}
-
-MemberInit::~MemberInit() {}
-
-MemberInit * MemberInit::clone() const {
-    return new MemberInit( *this );
-}
-
-void MemberInit::print( std::ostream &os, int indent ) {
-    os << "Member Initializer";
-    value->print( os, indent+2 );
-}
-
 ListInit::ListInit( std::list<Initializer*> &_initializers, std::list<Expression *> &_designators )
     : initializers( _initializers ), designators( _designators ) {
Index: translator/SynTree/Initializer.h
===================================================================
--- translator/SynTree/Initializer.h	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Initializer.h	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -61,44 +61,4 @@
 };
 
-// MemberInit represents an initializer for a member of an aggregate object (e.g., struct q { int a; } x = { a : 4 } )
-class MemberInit : public Initializer {
-  public:
-    MemberInit( Expression *value, std::string member = std::string("") );
-    virtual ~MemberInit();
-    
-    std::string get_member() { return member; }
-    void set_member( std::string newValue ) { member = newValue; }
-    Expression *get_value() { return value; }
-    void set_value( Expression *newValue ) { value = newValue; }
-
-    virtual MemberInit *clone() const;
-    virtual void accept( Visitor &v ) { v.visit( this ); }
-    virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-    virtual void print( std::ostream &os, int indent = 0 );
-  private:
-    std::string member;
-    Expression *value;
-};
-
-// ElementInit represents an initializer of an element of an array (e.g., [10] int x = { [7] : 4 }
-class ElementInit : public Initializer {
-  public:
-    ElementInit( Expression *value );
-    virtual ~ElementInit();
-    
-    int get_index() { return index; }
-    void set_index( int newValue ) { index = newValue; }
-    Expression *get_value() { return value; }
-    void set_value( Expression *newValue ) { value = newValue; }
-
-    virtual ElementInit *clone() const;
-    virtual void accept( Visitor &v ) { v.visit( this ); }
-    virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-    virtual void print( std::ostream &os, int indent = 0 );
-  private:
-    int index;
-    Expression *value;
-};
-
 // ListInit represents an initializer that is composed recursively of a list of initializers; this is used to initialize
 // an array or aggregate
Index: translator/SynTree/Mutator.cc
===================================================================
--- translator/SynTree/Mutator.cc	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Mutator.cc	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -368,14 +368,4 @@
 }
 
-Initializer *Mutator::mutate( MemberInit *memberInit ) {
-    memberInit->set_value( memberInit->get_value()->acceptMutator( *this ) );
-    return memberInit;
-}
-
-Initializer *Mutator::mutate( ElementInit *elementInit ) {
-    elementInit->set_value( elementInit->get_value()->acceptMutator( *this ) );
-    return elementInit;
-}
-
 Initializer *Mutator::mutate( SingleInit *singleInit ) {
     singleInit->set_value( singleInit->get_value()->acceptMutator( *this ) );
Index: translator/SynTree/Mutator.h
===================================================================
--- translator/SynTree/Mutator.h	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Mutator.h	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -72,6 +72,4 @@
     virtual Type* mutate( AttrType *attrType );
 
-    virtual Initializer* mutate( MemberInit *memberInit );
-    virtual Initializer* mutate( ElementInit *elementInit );
     virtual Initializer* mutate( SingleInit *singleInit );
     virtual Initializer* mutate( ListInit *listInit );
Index: translator/SynTree/SynTree.h
===================================================================
--- translator/SynTree/SynTree.h	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/SynTree.h	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -89,6 +89,4 @@
 
 class Initializer;
-class MemberInit;
-class ElementInit;
 class SingleInit;
 class ListInit;
Index: translator/SynTree/Type.cc
===================================================================
--- translator/SynTree/Type.cc	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Type.cc	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -57,3 +57,6 @@
 	os << "lvalue ";
     } // if
+    if ( tq.isAtomic ) {
+	os << "_Atomic ";
+    } // if
 }
Index: translator/SynTree/Type.h
===================================================================
--- translator/SynTree/Type.h	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Type.h	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -10,6 +10,6 @@
   public:
     struct Qualifiers {  
-      Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ) {}
-      Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue ): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ) {}
+      Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ), isAtomic( false ) {}
+      Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic ): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ) {}
 	
 	Qualifiers &operator+=( const Qualifiers &other );
@@ -27,4 +27,5 @@
 	bool isRestrict;
 	bool isLvalue;
+	bool isAtomic;
     };	
 
@@ -38,8 +39,10 @@
     bool get_isRestrict() { return tq.isRestrict; }
     bool get_isLvalue() { return tq.isLvalue; }
+    bool get_isAtomic() { return tq.isAtomic; }
     void set_isConst( bool newValue ) { tq.isConst = newValue; }
     void set_iisVolatile( bool newValue ) { tq.isVolatile = newValue; }
     void set_isRestrict( bool newValue ) { tq.isRestrict = newValue; }
     void set_isLvalue( bool newValue ) { tq.isLvalue = newValue; }
+    void set_isAtomic( bool newValue ) { tq.isAtomic = newValue; }
     std::list<TypeDecl*>& get_forall() { return forall; }
 
@@ -380,4 +383,5 @@
     isRestrict |= other.isRestrict;
     isLvalue |= other.isLvalue;
+    isAtomic |= other.isAtomic;
     return *this;
 }
@@ -387,4 +391,5 @@
     if ( other.isVolatile ) isVolatile = 0;
     if ( other.isRestrict ) isRestrict = 0;
+    if ( other.isAtomic ) isAtomic = 0;
     return *this;
 }
@@ -398,7 +403,8 @@
 inline bool Type::Qualifiers::operator==( const Qualifiers &other ) {
     return isConst == other.isConst
-    && isVolatile == other.isVolatile
-    && isRestrict == other.isRestrict;
-///	    && isLvalue == other.isLvalue;
+	&& isVolatile == other.isVolatile
+	&& isRestrict == other.isRestrict
+//	&& isLvalue == other.isLvalue
+	&& isAtomic == other.isAtomic;
 }
 
@@ -406,6 +412,7 @@
     return isConst != other.isConst
 	|| isVolatile != other.isVolatile
-	|| isRestrict != other.isRestrict;
-///	    && isLvalue == other.isLvalue;
+	|| isRestrict != other.isRestrict
+//	|| isLvalue != other.isLvalue
+	|| isAtomic != other.isAtomic;
 }
 
@@ -413,6 +420,7 @@
     return isConst <= other.isConst
 	&& isVolatile <= other.isVolatile
-	&& isRestrict <= other.isRestrict;
-///	    && isLvalue >= other.isLvalue;
+	&& isRestrict <= other.isRestrict
+//	&& isLvalue >= other.isLvalue
+	&& isAtomic == other.isAtomic;
 }
 
@@ -420,6 +428,7 @@
     return isConst >= other.isConst
 	&& isVolatile >= other.isVolatile
-	&& isRestrict >= other.isRestrict;
-///	    && isLvalue <= other.isLvalue;
+	&& isRestrict >= other.isRestrict
+//	&& isLvalue <= other.isLvalue
+	&& isAtomic == other.isAtomic;
 }
 
Index: translator/SynTree/Visitor.cc
===================================================================
--- translator/SynTree/Visitor.cc	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Visitor.cc	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -309,12 +309,4 @@
 }
 
-void Visitor::visit(MemberInit *memberInit) {
-    memberInit->get_value()->accept( *this );
-}
-
-void Visitor::visit(ElementInit *elementInit) {
-    elementInit->get_value()->accept( *this );
-}
-
 void Visitor::visit(SingleInit *singleInit) {
     singleInit->get_value()->accept( *this );
Index: translator/SynTree/Visitor.h
===================================================================
--- translator/SynTree/Visitor.h	(revision 6c3744ea42a3b5b7c0caad3216f7a909daf8e9ed)
+++ translator/SynTree/Visitor.h	(revision bdd516a5257cb93cc0c5b4a4c343cc112252022a)
@@ -72,6 +72,4 @@
     virtual void visit( AttrType *attrType );
 
-    virtual void visit( MemberInit *memberInit );
-    virtual void visit( ElementInit *elementInit );
     virtual void visit( SingleInit *singleInit );
     virtual void visit( ListInit *listInit );
