Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ src/AST/Expr.cpp	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -281,21 +281,30 @@
 // --- SizeofExpr
 
-SizeofExpr::SizeofExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, ast::TranslationDeps::getSizeType() ), type( t ) {}
+SizeofExpr::SizeofExpr( const CodeLocation & loc, const Type * type )
+: SizeofExpr( loc, type, nullptr ) {}
+
+SizeofExpr::SizeofExpr( const CodeLocation & loc, const Type * type, const Type * result )
+: Expr( loc, result ), type( type ) {}
 
 // --- AlignofExpr
 
-AlignofExpr::AlignofExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, ast::TranslationDeps::getSizeType() ), type( t ) {}
+AlignofExpr::AlignofExpr( const CodeLocation & loc, const Type * type )
+: AlignofExpr( loc, type, nullptr ) {}
+
+AlignofExpr::AlignofExpr( const CodeLocation & loc, const Type * type, const Type * result )
+: Expr( loc, result ), type( type ) {}
 
 // --- CountofExpr
 
 CountofExpr::CountofExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, ast::TranslationDeps::getSizeType() ), type( t ) {}
+: Expr( loc ), type( t ) {}
 
 // --- OffsetofExpr
 
 OffsetofExpr::OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * mem )
-: Expr( loc, ast::TranslationDeps::getSizeType() ), type( ty ), member( mem ) {
+: OffsetofExpr( loc, ty, mem, nullptr ) {}
+
+OffsetofExpr::OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * mem, const Type * res )
+: Expr( loc, res ), type( ty ), member( mem ) {
 	assert( type );
 	assert( member );
@@ -305,7 +314,5 @@
 
 OffsetPackExpr::OffsetPackExpr( const CodeLocation & loc, const StructInstType * ty )
-: Expr( loc, new ArrayType{
-	ast::TranslationDeps::getSizeType(), nullptr, FixedLen, DynamicDim }
-), type( ty ) {
+: Expr( loc ), type( ty ) {
 	assert( type );
 }
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ src/AST/Expr.hpp	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -483,4 +483,5 @@
 
 	SizeofExpr( const CodeLocation & loc, const Type * t );
+	SizeofExpr( const CodeLocation & loc, const Type * t, const Type * r );
 
 	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
@@ -496,4 +497,5 @@
 
 	AlignofExpr( const CodeLocation & loc, const Type * t );
+	AlignofExpr( const CodeLocation & loc, const Type * t, const Type * r );
 
 	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
@@ -538,4 +540,5 @@
 
 	OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * mem );
+	OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * mem, const Type * res );
 
 	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
Index: src/AST/Util.cpp
===================================================================
--- src/AST/Util.cpp	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ src/AST/Util.cpp	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -384,30 +384,3 @@
 }
 
-namespace {
-	const TranslationUnit * transUnit = 0;
-}
-
-void TranslationDeps::evolve( TranslationUnit & u ) {
-	transUnit = &u;
-}
-
-const ast::Type * TranslationDeps::getSizeType() {
-	static const ast::Type * zd_abstract = new TypeInstType{ "size_t", TypeDecl::Kind::Dtype };
-	static const ast::Type * ld_concrete = new BasicType( BasicKind::LongUnsignedInt );
-	if ( ! transUnit ) {
-		// early state
-		// as if `size_t` in program text were freshly parsed
-		return zd_abstract;
-	} else if ( transUnit->global.sizeType ) {
-		// late state, normal run
-		// whatever size_t was defined as
-		return transUnit->global.sizeType;
-	} else {
-		// late state, no prelude (-n)
-		// placeholder: cfa-cpp is being used experimentally, stay out of the way
-		return ld_concrete;
-	}
-}
-
-
 } // namespace ast
Index: src/AST/Util.hpp
===================================================================
--- src/AST/Util.hpp	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ src/AST/Util.hpp	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -26,27 +26,3 @@
 void checkInvariants( TranslationUnit & );
 
-/// Maintains an AST-module state for contextual information needed in
-/// ast::* implementations, notably constructors:
-///    early: while parsing, use bootstrap versions
-///    late: once a whole TranslationUnit exists, use its answers
-/// When the program is in the later state, ast::* construcors effectively get
-/// the benefit of WithTranslationUnit, without having to pass them one.
-class TranslationDeps {
-
-    TranslationDeps() = delete;
-
-    friend class SizeofExpr;
-    friend class AlignofExpr;
-    friend class CountofExpr;
-    friend class OffsetofExpr;
-    friend class OffsetPackExpr;
-
-    /// Appropriate return type for built-in expressions that report on sizes
-    static const Type * getSizeType();
-
-  public:
-    /// Transition from early to late states
-    static void evolve( TranslationUnit & );
-};
-
 }
Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -1486,7 +1486,16 @@
 
 	void Finder::postvisit( const ast::SizeofExpr * sizeofExpr ) {
+		const ast::Type * type = resolveTypeof( sizeofExpr->type, context );
+		const ast::Type * sizeType = context.global.sizeType.get();
 		addCandidate(
-			new ast::SizeofExpr{
-				sizeofExpr->location, resolveTypeof( sizeofExpr->type, context ) },
+			new ast::SizeofExpr( sizeofExpr->location, type, sizeType ),
+			tenv );
+	}
+
+	void Finder::postvisit( const ast::AlignofExpr * alignofExpr ) {
+		const ast::Type * type = resolveTypeof( alignofExpr->type, context );
+		const ast::Type * sizeType = context.global.sizeType.get();
+		addCandidate(
+			new ast::AlignofExpr( alignofExpr->location, type, sizeType ),
 			tenv );
 	}
@@ -1516,11 +1525,4 @@
 	}
 
-	void Finder::postvisit( const ast::AlignofExpr * alignofExpr ) {
-		addCandidate(
-			new ast::AlignofExpr{
-				alignofExpr->location, resolveTypeof( alignofExpr->type, context ) },
-			tenv );
-	}
-
 	void Finder::postvisit( const ast::UntypedOffsetofExpr * offsetofExpr ) {
 		const ast::BaseInstType * aggInst;
@@ -1529,8 +1531,9 @@
 		else return;
 
+		const ast::Type * sizeType = context.global.sizeType.get();
 		for ( const ast::Decl * member : aggInst->lookup( offsetofExpr->member ) ) {
 			auto dwt = strict_dynamic_cast< const ast::DeclWithType * >( member );
 			addCandidate(
-				new ast::OffsetofExpr{ offsetofExpr->location, aggInst, dwt }, tenv );
+				new ast::OffsetofExpr( offsetofExpr->location, aggInst, dwt, sizeType ), tenv );
 		}
 	}
Index: src/main.cpp
===================================================================
--- src/main.cpp	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ src/main.cpp	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -199,6 +199,4 @@
 		Stats::Time::StopBlock();
 
-		ast::TranslationDeps::evolve( transUnit );
-
 		PASS( "Hoist Type Decls", Validate::hoistTypeDecls, transUnit );
 
Index: tests/.expect/alloc-ERROR.arm64.txt
===================================================================
--- tests/.expect/alloc-ERROR.arm64.txt	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ tests/.expect/alloc-ERROR.arm64.txt	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -16,6 +16,4 @@
           Name: stp
 
-      ... with resolved type:
-        unsigned long int
 
 
Index: tests/.expect/alloc-ERROR.x64.txt
===================================================================
--- tests/.expect/alloc-ERROR.x64.txt	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ tests/.expect/alloc-ERROR.x64.txt	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -16,6 +16,4 @@
           Name: stp
 
-      ... with resolved type:
-        unsigned long int
 
 
Index: tests/.expect/alloc-ERROR.x86.txt
===================================================================
--- tests/.expect/alloc-ERROR.x86.txt	(revision 3e5e32cfbbd281d3366f00338f63eb2bfb890578)
+++ tests/.expect/alloc-ERROR.x86.txt	(revision 17fa94fc6137fe38192c7283b80f37fec136dd24)
@@ -16,6 +16,4 @@
           Name: stp
 
-      ... with resolved type:
-        unsigned int
 
 
