Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 4cb935efa354074c5683f9c0730f6ae143c682ce)
+++ src/SynTree/Declaration.h	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 18 23:50:24 2016
-// Update Count     : 40
+// Last Modified On : Tue Dec 13 13:37:33 2016
+// Update Count     : 49
 //
 
@@ -69,10 +69,13 @@
 
 	std::string get_mangleName() const { return mangleName; }
-	void set_mangleName( std::string newValue ) { mangleName = newValue; }
+	DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
 
 	std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
 
 	int get_scopeLevel() const { return scopeLevel; }
-	void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
+	DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
+
+	ConstantExpr *get_asmName() const { return asmName; }
+	DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
 
 	std::list< Attribute * >& get_attributes() { return attributes; }
@@ -87,8 +90,8 @@
 	// this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
 	std::string mangleName;
-	// need to remember the scope level at which the variable was declared, so that
-	// shadowed identifiers can be accessed
+	// need to remember the scope level at which the variable was declared, so that shadowed identifiers can be accessed
 	int scopeLevel = 0;
 
+	ConstantExpr *asmName;
 	std::list< Attribute * > attributes;
 };
@@ -106,4 +109,5 @@
 	Initializer *get_init() const { return init; }
 	void set_init( Initializer *newValue ) { init = newValue; }
+
 	Expression *get_bitfieldWidth() const { return bitfieldWidth; }
 	void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
Index: src/SynTree/DeclarationWithType.cc
===================================================================
--- src/SynTree/DeclarationWithType.cc	(revision 4cb935efa354074c5683f9c0730f6ae143c682ce)
+++ src/SynTree/DeclarationWithType.cc	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 18 23:50:41 2016
-// Update Count     : 4
+// Last Modified On : Tue Dec 13 14:49:43 2016
+// Update Count     : 7
 //
 
@@ -20,5 +20,5 @@
 
 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
-		: Declaration( name, sc, linkage ), attributes( attributes ) {
+	: Declaration( name, sc, linkage ), asmName( nullptr ), attributes( attributes ) {
 }
 
@@ -26,8 +26,10 @@
 		: Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
 	cloneAll( other.attributes, attributes );
+	asmName = maybeClone( other.asmName );
 }
 
 DeclarationWithType::~DeclarationWithType() {
 	deleteAll( attributes );
+	delete asmName;
 }
 
