Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 85dac33f47b97046aafe89719ccb94143075c733)
+++ src/SynTree/Expression.cc	(revision 033ff3711d4010b2ccdeb4a02f5a7a01b1512ca6)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Feb 19 18:10:55 2019
-// Update Count     : 60
+// Last Modified On : Thu Jul 25 22:21:48 2019
+// Update Count     : 61
 //
 
@@ -249,33 +249,4 @@
 	os << "Offset pack expression on ";
 	type->print(os, indent+1);
-	Expression::print( os, indent );
-}
-
-AttrExpr::AttrExpr( Expression * attr, Expression * expr_ ) :
-		Expression(), attr( attr ), expr(expr_), type(0), isType(false) {
-}
-
-AttrExpr::AttrExpr( Expression * attr, Type * type_ ) :
-		Expression(), attr( attr ), expr(0), type(type_), isType(true) {
-}
-
-AttrExpr::AttrExpr( const AttrExpr & other ) :
-		Expression( other ), attr( maybeClone( other.attr ) ), expr( maybeClone( other.expr ) ), type( maybeClone( other.type ) ), isType( other.isType ) {
-}
-
-AttrExpr::~AttrExpr() {
-	delete attr;
-	delete expr;
-	delete type;
-}
-
-void AttrExpr::print( std::ostream & os, Indenter indent) const {
-	os << "Attr ";
-	attr->print( os, indent+1);
-	if ( isType || expr ) {
-		os << "applied to: ";
-		if (isType) type->print(os, indent+1);
-		else expr->print(os, indent+1);
-	} // if
 	Expression::print( os, indent );
 }
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 85dac33f47b97046aafe89719ccb94143075c733)
+++ src/SynTree/Expression.h	(revision 033ff3711d4010b2ccdeb4a02f5a7a01b1512ca6)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb 18 18:29:51 2019
-// Update Count     : 49
+// Last Modified On : Thu Jul 25 22:21:44 2019
+// Update Count     : 50
 //
 
@@ -463,33 +463,4 @@
 };
 
-/// AttrExpr represents an @attribute expression (like sizeof, but user-defined)
-class AttrExpr : public Expression {
-  public:
-	Expression * attr;
-	Expression * expr;
-	Type * type;
-	bool isType;
-
-	AttrExpr(Expression * attr, Expression * expr );
-	AttrExpr( const AttrExpr & other );
-	AttrExpr( Expression * attr, Type * type );
-	virtual ~AttrExpr();
-
-	Expression * get_attr() const { return attr; }
-	void set_attr( Expression * newValue ) { attr = newValue; }
-	Expression * get_expr() const { return expr; }
-	void set_expr( Expression * newValue ) { expr = newValue; }
-	Type * get_type() const { return type; }
-	void set_type( Type * newValue ) { type = newValue; }
-	bool get_isType() const { return isType; }
-	void set_isType( bool newValue ) { isType = newValue; }
-
-	virtual AttrExpr * clone() const override { return new AttrExpr( * this ); }
-	virtual void accept( Visitor & v ) override { v.visit( this ); }
-	virtual void accept( Visitor & v ) const override { v.visit( this ); }
-	virtual Expression * acceptMutator( Mutator & m ) override { return m.mutate( this ); }
-	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
-};
-
 /// LogicalExpr represents a short-circuit boolean expression (&& or ||)
 class LogicalExpr : public Expression {
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision 85dac33f47b97046aafe89719ccb94143075c733)
+++ src/SynTree/Mutator.h	(revision 033ff3711d4010b2ccdeb4a02f5a7a01b1512ca6)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Mon Jul 24 16:31:00 2017
-// Update Count     : 16
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 25 22:37:46 2019
+// Update Count     : 17
 //
 #pragma once
@@ -74,5 +74,4 @@
 	virtual Expression * mutate( OffsetofExpr * offsetofExpr ) = 0;
 	virtual Expression * mutate( OffsetPackExpr * offsetPackExpr ) = 0;
-	virtual Expression * mutate( AttrExpr * attrExpr ) = 0;
 	virtual Expression * mutate( LogicalExpr * logicalExpr ) = 0;
 	virtual Expression * mutate( ConditionalExpr * conditionalExpr ) = 0;
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision 85dac33f47b97046aafe89719ccb94143075c733)
+++ src/SynTree/SynTree.h	(revision 033ff3711d4010b2ccdeb4a02f5a7a01b1512ca6)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Mon Jul 24 16:54:00 2017
-// Update Count     : 11
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 25 22:37:45 2019
+// Update Count     : 12
 //
 
@@ -79,5 +79,4 @@
 class OffsetofExpr;
 class OffsetPackExpr;
-class AttrExpr;
 class LogicalExpr;
 class ConditionalExpr;
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision 85dac33f47b97046aafe89719ccb94143075c733)
+++ src/SynTree/Visitor.h	(revision 033ff3711d4010b2ccdeb4a02f5a7a01b1512ca6)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Mon Jul 24 16:28:00 2017
-// Update Count     : 13
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 25 22:21:49 2019
+// Update Count     : 14
 //
 
@@ -123,6 +123,4 @@
 	virtual void visit( OffsetPackExpr * node ) { visit( const_cast<const OffsetPackExpr *>(node) ); }
 	virtual void visit( const OffsetPackExpr * offsetPackExpr ) = 0;
-	virtual void visit( AttrExpr * node ) { visit( const_cast<const AttrExpr *>(node) ); }
-	virtual void visit( const AttrExpr * attrExpr ) = 0;
 	virtual void visit( LogicalExpr * node ) { visit( const_cast<const LogicalExpr *>(node) ); }
 	virtual void visit( const LogicalExpr * logicalExpr ) = 0;
