Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision bd06384ff9b3300e1d878bc19523e6051209bb15)
+++ src/SymTab/Validate.cc	(revision 5af7306aa8aedc45c7e1b675f42139b19edd2a7c)
@@ -48,4 +48,5 @@
 #include "CodeGen/CodeGenerator.h"     // for genName
 #include "CodeGen/OperatorTable.h"     // for isCtorDtor, isCtorDtorAssign
+#include "Common/GC.h"                 // for new_static_root, register_static_root
 #include "Common/PassVisitor.h"        // for PassVisitor, WithDeclsToAdd
 #include "Common/ScopedMap.h"          // for ScopedMap
@@ -673,8 +674,10 @@
 			// grab and remember declaration of size_t
 			SizeType = eliminator.pass.typedefNames["size_t"].first->get_base()->clone();
+			GC::get().register_static_root( SizeType );
 		} else {
 			// xxx - missing global typedef for size_t - default to long unsigned int, even though that may be wrong
 			// eventually should have a warning for this case.
-			SizeType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
+			SizeType = 
+				new_static_root<BasicType>( Type::Qualifiers(), BasicType::LongUnsignedInt );
 		}
 		filter( translationUnit, isTypedef );
