Index: src/SynTree/GcTracer.h
===================================================================
--- src/SynTree/GcTracer.h	(revision 5af7306aa8aedc45c7e1b675f42139b19edd2a7c)
+++ src/SynTree/GcTracer.h	(revision 2efe4b8f0141e181a04fcc0495d13a8c7a0a06b9)
@@ -20,4 +20,5 @@
 #include "BaseSyntaxNode.h"
 #include "Expression.h"
+#include "Label.h"
 #include "Type.h"
 
@@ -53,4 +54,8 @@
 	}
 
+	void postvisit( AggregateDecl* decl ) {
+		acceptAll( decl->attributes, *visitor );
+	}
+
 	void postvisit( DeclarationWithType* decl ) {
 		maybeAccept( decl->asmName, *visitor );
@@ -73,4 +78,10 @@
 	}
 
+	void postvisit( UniqueExpr* expr ) {
+		postvisit( static_cast<Expression*>(expr) );
+		maybeAccept( expr->object, *visitor );
+		maybeAccept( expr->var, *visitor );
+	}
+
 	void postvisit( UntypedExpr* expr ) {
 		postvisit( static_cast<Expression*>(expr) );
@@ -81,4 +92,17 @@
 		postvisit( static_cast<Expression*>(expr) );
 		maybeAccept( expr->var, *visitor );  // not in PassVisitor because it causes cycle
+	}
+
+private:
+	void visit( Label& lbl ) {
+		acceptAll( lbl.get_attributes(), *visitor );
+		maybeAccept( lbl.get_statement(), *visitor );  // xxx - not sure this is needed...
+	}
+
+public:
+	void postvisit( Statement* stmt ) {
+		for ( Label& l : stmt->labels ) {
+			visit( l );
+		}
 	}
 
