Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision 5e8d75bbda1b63dfcc63fb0a003758c17cc3fae5)
+++ src/AST/Expr.cpp	(revision 53f4b555094e994044173ff395eae0f5a2e92085)
@@ -301,7 +301,4 @@
 // --- OffsetofExpr
 
-OffsetofExpr::OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * 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 ) {
@@ -324,4 +321,5 @@
 
 // --- CommaExpr
+
 bool CommaExpr::get_lvalue() const {
 	// This is wrong by C, but the current implementation uses it.
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision 5e8d75bbda1b63dfcc63fb0a003758c17cc3fae5)
+++ src/AST/Expr.hpp	(revision 53f4b555094e994044173ff395eae0f5a2e92085)
@@ -539,5 +539,4 @@
 	readonly<DeclWithType> member;
 
-	OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * mem );
 	OffsetofExpr( const CodeLocation & loc, const Type * ty, const DeclWithType * mem, const Type * res );
 
Index: src/GenPoly/Box.cpp
===================================================================
--- src/GenPoly/Box.cpp	(revision 5e8d75bbda1b63dfcc63fb0a003758c17cc3fae5)
+++ src/GenPoly/Box.cpp	(revision 53f4b555094e994044173ff395eae0f5a2e92085)
@@ -2002,5 +2002,6 @@
 			new ast::OffsetofExpr( expr->location,
 				deepCopy( type ),
-				memberDecl
+				memberDecl,
+				getLayoutType( transUnit() )
 			)
 		) );
