Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/AST/Expr.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -276,9 +276,6 @@
 // --- SizeofExpr
 
-SizeofExpr::SizeofExpr( const CodeLocation & loc, const Expr * e )
-: Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), expr( e ), type( nullptr ) {}
-
 SizeofExpr::SizeofExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), expr( nullptr ), type( t ) {}
+: Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), type( t ) {}
 
 // --- CountExpr
@@ -292,9 +289,6 @@
 // --- AlignofExpr
 
-AlignofExpr::AlignofExpr( const CodeLocation & loc, const Expr * e )
-: Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), expr( e ), type( nullptr ) {}
-
 AlignofExpr::AlignofExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), expr( nullptr ), type( t ) {}
+: Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), type( t ) {}
 
 // --- OffsetofExpr
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/AST/Expr.hpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -480,22 +480,19 @@
 class SizeofExpr final : public Expr {
 public:
+	ptr<Type> type;
+
+	SizeofExpr( const CodeLocation & loc, const Type * t );
+
+	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
+private:
+	SizeofExpr * clone() const override { return new SizeofExpr{ *this }; }
+	MUTATE_FRIEND
+};
+
+class CountExpr final : public Expr {
+public:
 	ptr<Expr> expr;
 	ptr<Type> type;
 
-	SizeofExpr( const CodeLocation & loc, const Expr * e );
-	SizeofExpr( const CodeLocation & loc, const Type * t );
-	// deliberately no disambiguating overload for nullptr_t
-
-	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
-private:
-	SizeofExpr * clone() const override { return new SizeofExpr{ *this }; }
-	MUTATE_FRIEND
-};
-
-class CountExpr final : public Expr {
-public:
-	ptr<Expr> expr;
-	ptr<Type> type;
-
 	CountExpr( const CodeLocation & loc, const Expr * t );
 	CountExpr( const CodeLocation & loc, const Type * t );
@@ -510,10 +507,7 @@
 class AlignofExpr final : public Expr {
 public:
-	ptr<Expr> expr;
 	ptr<Type> type;
 
-	AlignofExpr( const CodeLocation & loc, const Expr * e );
 	AlignofExpr( const CodeLocation & loc, const Type * t );
-	// deliberately no disambiguating overload for nullptr_t
 
 	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/AST/Pass.hpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -342,5 +342,5 @@
 /// set visit_children false of all child nodes should be ignored
 struct WithShortCircuiting {
-	bool visit_children;
+	bool visit_children = true;
 };
 
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/AST/Pass.impl.hpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -1319,9 +1319,5 @@
 			maybe_accept( node, &SizeofExpr::result );
 		}
-		if ( node->type ) {
-			maybe_accept( node, &SizeofExpr::type );
-		} else {
-			maybe_accept( node, &SizeofExpr::expr );
-		}
+		maybe_accept( node, &SizeofExpr::type );
 	}
 
@@ -1359,9 +1355,5 @@
 			maybe_accept( node, &AlignofExpr::result );
 		}
-		if ( node->type ) {
-			maybe_accept( node, &AlignofExpr::type );
-		} else {
-			maybe_accept( node, &AlignofExpr::expr );
-		}
+		maybe_accept( node, &AlignofExpr::type );
 	}
 
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/AST/Print.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -1152,19 +1152,18 @@
 		os << "Sizeof Expression on: ";
 		++indent;
+		node->type->accept( *this );
+		--indent;
+		postprint( node );
+
+		return node;
+	}
+
+	virtual const ast::Expr * visit( const ast::CountExpr * node ) override final {
+		os << "Count Expression on: ";
+		++indent;
 		if ( node->type ) node->type->accept( *this );
 		else safe_print( node->expr );
 		--indent;
 		postprint( node );
-
-		return node;
-	}
-
-	virtual const ast::Expr * visit( const ast::CountExpr * node ) override final {
-		os << "Count Expression on: ";
-		++indent;
-		if ( node->type ) node->type->accept( *this );
-		else safe_print( node->expr );
-		--indent;
-		postprint( node );
 		return node;
 	}
@@ -1173,6 +1172,5 @@
 		os << "Alignof Expression on: ";
 		++indent;
-		if ( node->type ) node->type->accept( *this );
-		else safe_print( node->expr );
+		node->type->accept( *this );
 		--indent;
 		postprint( node );
Index: src/AST/Util.cpp
===================================================================
--- src/AST/Util.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/AST/Util.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -104,13 +104,4 @@
 	}
 	assertf( false, "Member not found." );
-}
-
-template<typename node_t>
-void oneOfExprOrType( const node_t * node ) {
-	if ( node->expr ) {
-		assertf( node->expr && !node->type, "Exactly one of expr or type should be set." );
-	} else {
-		assertf( !node->expr && node->type, "Exactly one of expr or type should be set." );
-	}
 }
 
@@ -159,14 +150,4 @@
 		previsit( (const ParseNode *)node );
 		memberMatchesAggregate( node );
-	}
-
-	void previsit( const SizeofExpr * node ) {
-		previsit( (const ParseNode *)node );
-		oneOfExprOrType( node );
-	}
-
-	void previsit( const AlignofExpr * node ) {
-		previsit( (const ParseNode *)node );
-		oneOfExprOrType( node );
 	}
 
Index: src/CodeGen/CodeGenerator.cpp
===================================================================
--- src/CodeGen/CodeGenerator.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/CodeGen/CodeGenerator.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -744,8 +744,8 @@
 	extension( expr );
 	output << "sizeof(";
-	if ( expr->type ) {
+	if ( auto type = expr->type.as<ast::TypeofType>() ) {
+		type->expr->accept( *visitor );
+	} else {
 		output << genType( expr->type, "", options );
-	} else {
-		expr->expr->accept( *visitor );
 	}
 	output << ")";
@@ -756,8 +756,8 @@
 	extension( expr );
 	output << "__alignof__(";
-	if ( expr->type ) {
+	if ( auto type = expr->type.as<ast::TypeofType>() ) {
+		type->expr->accept( *visitor );
+	} else {
 		output << genType( expr->type, "", options );
-	} else {
-		expr->expr->accept( *visitor );
 	}
 	output << ")";
Index: src/Concurrency/Waitfor.cpp
===================================================================
--- src/Concurrency/Waitfor.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/Concurrency/Waitfor.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -230,5 +230,6 @@
 			ast::ConstantExpr::from_int( location, 0 ),
 			new ast::SizeofExpr( location,
-				new ast::VariableExpr( location, acceptables ) ),
+				new ast::TypeofType(
+					new ast::VariableExpr( location, acceptables ) ) ),
 		}
 	);
Index: src/GenPoly/Box.cpp
===================================================================
--- src/GenPoly/Box.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/GenPoly/Box.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -1925,6 +1925,5 @@
 ast::Expr const * PolyGenericCalculator::postvisit(
 		ast::SizeofExpr const * expr ) {
-	ast::Type const * type = expr->type ? expr->type : expr->expr->result;
-	ast::Expr const * gen = genSizeof( expr->location, type );
+	ast::Expr const * gen = genSizeof( expr->location, expr->type );
 	return ( gen ) ? gen : expr;
 }
@@ -1932,6 +1931,5 @@
 ast::Expr const * PolyGenericCalculator::postvisit(
 		ast::AlignofExpr const * expr ) {
-	ast::Type const * type = expr->type ? expr->type : expr->expr->result;
-	ast::Expr const * gen = genAlignof( expr->location, type );
+	ast::Expr const * gen = genAlignof( expr->location, expr->type );
 	return ( gen ) ? gen : expr;
 }
Index: src/GenPoly/GenPoly.cpp
===================================================================
--- src/GenPoly/GenPoly.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/GenPoly/GenPoly.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -299,7 +299,6 @@
 		ast::SizeofExpr const * r = as<ast::SizeofExpr>(rhs);
 
-		assert((l->type != nullptr) ^ (l->expr != nullptr));
-		assert((r->type != nullptr) ^ (r->expr != nullptr));
-		if ( !(l->type && r->type) ) return false;
+		assert( l->type );
+		assert( r->type );
 
 		// mutual recursion with type poly compatibility
Index: src/GenPoly/Lvalue.cpp
===================================================================
--- src/GenPoly/Lvalue.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/GenPoly/Lvalue.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -607,5 +607,4 @@
 ast::SizeofExpr const * ReferenceTypeElimination::previsit(
 		ast::SizeofExpr const * expr ) {
-	if ( expr->expr ) return expr;
 	return ast::mutate_field( expr, &ast::SizeofExpr::type,
 		expr->type->stripReferences() );
@@ -614,5 +613,4 @@
 ast::AlignofExpr const * ReferenceTypeElimination::previsit(
 		ast::AlignofExpr const * expr ) {
-	if ( expr->expr ) return expr;
 	return ast::mutate_field( expr, &ast::AlignofExpr::type,
 		expr->type->stripReferences() );
Index: src/Parser/StatementNode.cpp
===================================================================
--- src/Parser/StatementNode.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/Parser/StatementNode.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -11,6 +11,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 11 11:44:15 2023
-// Update Count     : 429
+// Last Modified On : Mon Sep  9 11:28:07 2024
+// Update Count     : 430
 //
 
@@ -208,13 +208,14 @@
 
 ast::Stmt * build_for( const CodeLocation & location, ForCtrl * forctl, StatementNode * stmt, StatementNode * else_ ) {
-	std::vector<ast::ptr<ast::Stmt>> astinit;						// maybe empty
+	std::vector<ast::ptr<ast::Stmt>> astinit;			// maybe empty
 	buildMoveList( forctl->init, astinit );
 
 	if ( forctl->range_over ) {
 		ast::Expr * range_over = maybeMoveBuild( forctl->range_over );
+		auto kind = forctl->kind;						// save before delete, used in return
 		delete forctl;
 		return new ast::ForStmt( location,
 			std::move( astinit ),
-			range_over, forctl->kind == OperKinds::LEThan,
+			range_over, kind == OperKinds::LEThan,
 			buildMoveSingle( stmt ),
 			buildMoveOptional( else_ )
Index: src/Parser/TypeData.cpp
===================================================================
--- src/Parser/TypeData.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/Parser/TypeData.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -1476,6 +1476,7 @@
 		} else if ( cur->has_enumeratorValue() ) {
 			ast::Expr * initValue;
-			if (ret->isCfa && ret->base) {
-				initValue = new ast::CastExpr( cur->enumeratorValue->location, maybeMoveBuild( cur->consume_enumeratorValue() ), ret->base  );
+			if ( ret->isCfa && ret->base ) {
+				CodeLocation location = cur->enumeratorValue->location;
+				initValue = new ast::CastExpr( location, maybeMoveBuild( cur->consume_enumeratorValue() ), ret->base );
 			} else {
 				initValue = maybeMoveBuild( cur->consume_enumeratorValue() );
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/Parser/parser.yy	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -927,9 +927,9 @@
 		{ $$ = new ExpressionNode( build_unary_val( yylloc, OperKinds::Decr, $2 ) ); }
 	| SIZEOF unary_expression
-		{ $$ = new ExpressionNode( new ast::SizeofExpr( yylloc, maybeMoveBuild( $2 ) ) ); }
+		{ $$ = new ExpressionNode( new ast::SizeofExpr( yylloc, new ast::TypeofType( maybeMoveBuild( $2 ) ) ) ); }
 	| SIZEOF '(' type_no_function ')'
 		{ $$ = new ExpressionNode( new ast::SizeofExpr( yylloc, maybeMoveBuildType( $3 ) ) ); }
 	| ALIGNOF unary_expression							// GCC, variable alignment
-		{ $$ = new ExpressionNode( new ast::AlignofExpr( yylloc, maybeMoveBuild( $2 ) ) ); }
+		{ $$ = new ExpressionNode( new ast::AlignofExpr( yylloc, new ast::TypeofType( maybeMoveBuild( $2 ) ) ) ); }
 	| ALIGNOF '(' type_no_function ')'					// GCC, type alignment
 		{ $$ = new ExpressionNode( new ast::AlignofExpr( yylloc, maybeMoveBuildType( $3 ) ) ); }
Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -10,6 +10,6 @@
 // Created On       : Wed Jun 5 14:30:00 2019
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun 22 08:07:26 2024
-// Update Count     : 4
+// Last Modified On : Mon Sep  9 11:30:11 2024
+// Update Count     : 5
 //
 
@@ -1239,5 +1239,5 @@
 		CandidateList matches;
 		Cost minExprCost = Cost::infinity;
-		Cost minCastCost = Cost::infinity;
+		// Cost minCastCost = Cost::infinity;
 		for ( CandidateRef & cand : finder.candidates ) {
 			ast::ptr< ast::Type > fromType = cand->expr->result;
@@ -1482,25 +1482,8 @@
 
 	void Finder::postvisit( const ast::SizeofExpr * sizeofExpr ) {
-		if ( sizeofExpr->type ) {
-			addCandidate(
-				new ast::SizeofExpr{
-					sizeofExpr->location, resolveTypeof( sizeofExpr->type, context ) },
-				tenv );
-		} else {
-			// find all candidates for the argument to sizeof
-			CandidateFinder finder( context, tenv );
-			finder.find( sizeofExpr->expr );
-			// find the lowest-cost candidate, otherwise ambiguous
-			CandidateList winners = findMinCost( finder.candidates );
-			if ( winners.size() != 1 ) {
-				SemanticError(
-					sizeofExpr->expr.get(), "Ambiguous expression in sizeof operand: " );
-			}
-			// return the lowest-cost candidate
-			CandidateRef & choice = winners.front();
-			choice->expr = referenceToRvalueConversion( choice->expr, choice->cost );
-			choice->cost = Cost::zero;
-			addCandidate( *choice, new ast::SizeofExpr{ sizeofExpr->location, choice->expr } );
-		}
+		addCandidate(
+			new ast::SizeofExpr{
+				sizeofExpr->location, resolveTypeof( sizeofExpr->type, context ) },
+			tenv );
 	}
 
@@ -1537,26 +1520,8 @@
 
 	void Finder::postvisit( const ast::AlignofExpr * alignofExpr ) {
-		if ( alignofExpr->type ) {
-			addCandidate(
-				new ast::AlignofExpr{
-					alignofExpr->location, resolveTypeof( alignofExpr->type, context ) },
-				tenv );
-		} else {
-			// find all candidates for the argument to alignof
-			CandidateFinder finder( context, tenv );
-			finder.find( alignofExpr->expr );
-			// find the lowest-cost candidate, otherwise ambiguous
-			CandidateList winners = findMinCost( finder.candidates );
-			if ( winners.size() != 1 ) {
-				SemanticError(
-					alignofExpr->expr.get(), "Ambiguous expression in alignof operand: " );
-			}
-			// return the lowest-cost candidate
-			CandidateRef & choice = winners.front();
-			choice->expr = referenceToRvalueConversion( choice->expr, choice->cost );
-			choice->cost = Cost::zero;
-			addCandidate(
-				*choice, new ast::AlignofExpr{ alignofExpr->location, choice->expr } );
-		}
+		addCandidate(
+			new ast::AlignofExpr{
+				alignofExpr->location, resolveTypeof( alignofExpr->type, context ) },
+			tenv );
 	}
 
Index: src/ResolvExpr/ConversionCost.cpp
===================================================================
--- src/ResolvExpr/ConversionCost.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/ResolvExpr/ConversionCost.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -192,5 +192,5 @@
 
 Cost enumCastCost (
-	const ast::EnumInstType * src, const ast::EnumInstType * dst, 
+	const ast::EnumInstType * src, const ast::EnumInstType * dst,
 	const ast::SymbolTable & symtab, const ast::TypeEnvironment & env
 );
@@ -488,5 +488,5 @@
 // (dst) src is safe is src is a subtype of dst, or dst {inline src, ...}
 Cost enumCastCost (
-	const ast::EnumInstType * src, const ast::EnumInstType * dst, 
+	const ast::EnumInstType * src, const ast::EnumInstType * dst,
 	const ast::SymbolTable & symtab, const ast::TypeEnvironment & env
 ) {
Index: src/ResolvExpr/Unify.cpp
===================================================================
--- src/ResolvExpr/Unify.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/ResolvExpr/Unify.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -234,8 +234,4 @@
 			if ( !e2so ) return;
 
-			assert((e1->type != nullptr) ^ (e1->expr != nullptr));
-			assert((e2so->type != nullptr) ^ (e2so->expr != nullptr));
-			if ( !(e1->type && e2so->type) ) return;
-
 			// expression unification calls type unification (mutual recursion)
 			result = unifyExact( e1->type, e2so->type, tenv, need, have, open, widen );
Index: src/Validate/InitializerLength.cpp
===================================================================
--- src/Validate/InitializerLength.cpp	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ src/Validate/InitializerLength.cpp	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -29,19 +29,37 @@
 ///   int x[] = { 1, 2, 3 };
 ///   int y[][2] = { { 1, 2, 3 }, { 1, 2, 3 } };
+///   char z[] = "hello";
 /// here x and y are known at compile-time to have length 3, so change this into
 ///   int x[3] = { 1, 2, 3 };
 ///   int y[3][2] = { { 1, 2, 3 }, { 1, 2, 3 } };
+///   char z[6] = "hello";
 struct InitializerLength {
 	const ast::ObjectDecl * previsit( const ast::ObjectDecl * decl );
 };
 
+ast::ConstantExpr * makeDimension( const ast::ObjectDecl * decl ) {
+	if ( auto init = decl->init.as<ast::ListInit>() ) {
+		return ast::ConstantExpr::from_ulong( decl->location, init->size() );
+	} else if ( auto init = decl->init.as<ast::SingleInit>() ) {
+		if ( auto constant = init->value.as<ast::ConstantExpr>() ) {
+			if ( auto type = constant->result.as<ast::ArrayType>() ) {
+				if ( auto dim = type->dimension.as<ast::ConstantExpr>() ) {
+					ast::ConstantExpr * dimension = ast::deepCopy( dim );
+					dimension->location = decl->location;
+					return dimension;
+				}
+			}
+		}
+	}
+	return nullptr;
+}
+
 const ast::ObjectDecl * InitializerLength::previsit( const ast::ObjectDecl * decl ) {
 	if ( auto type = decl->type.as<ast::ArrayType>() ) {
 		if ( type->dimension ) return decl;
-		if ( auto init = decl->init.as<ast::ListInit>() ) {
+		if ( auto dimension = makeDimension( decl ) ) {
 			ast::ObjectDecl * mutDecl = ast::mutate( decl );
 			ast::ArrayType * mutType = ast::mutate( type );
-			mutType->dimension = ast::ConstantExpr::from_ulong(
-				mutDecl->location, init->size() );
+			mutType->dimension = dimension;
 			mutDecl->type = mutType;
 			return mutDecl;
Index: tests/.expect/alloc-ERROR.txt
===================================================================
--- tests/.expect/alloc-ERROR.txt	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ tests/.expect/alloc-ERROR.txt	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -11,5 +11,5 @@
     ...to:
       Name: dim
-      Sizeof Expression on: Applying untyped:
+      Sizeof Expression on: type-of expression Applying untyped:
           Name: *?
         ...to:
Index: tests/.expect/extension.arm64.txt
===================================================================
--- tests/.expect/extension.arm64.txt	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ tests/.expect/extension.arm64.txt	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -465,5 +465,5 @@
     }
     {
-        ((void)__extension__ sizeof(3));
+        ((void)__extension__ sizeof(signed int ));
     }
 
@@ -473,5 +473,5 @@
 
     {
-        ((void)__extension__ __alignof__(__extension__ _X1ai_2));
+        ((void)__extension__ __alignof__(signed int ));
     }
 
Index: tests/.expect/extension.x64.txt
===================================================================
--- tests/.expect/extension.x64.txt	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ tests/.expect/extension.x64.txt	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -465,5 +465,5 @@
     }
     {
-        ((void)__extension__ sizeof(3));
+        ((void)__extension__ sizeof(signed int ));
     }
 
@@ -473,5 +473,5 @@
 
     {
-        ((void)__extension__ __alignof__(__extension__ _X1ai_2));
+        ((void)__extension__ __alignof__(signed int ));
     }
 
Index: tests/.expect/extension.x86.txt
===================================================================
--- tests/.expect/extension.x86.txt	(revision d93b8131b6d6f864fdf457bb174840310cb9dfd1)
+++ tests/.expect/extension.x86.txt	(revision 3d618a082395e09cbc727c5d2b78ac976923f136)
@@ -465,5 +465,5 @@
     }
     {
-        ((void)__extension__ sizeof(3));
+        ((void)__extension__ sizeof(signed int ));
     }
 
@@ -473,5 +473,5 @@
 
     {
-        ((void)__extension__ __alignof__(__extension__ _X1ai_2));
+        ((void)__extension__ __alignof__(signed int ));
     }
 
