Remove some wuffs_base__make_empty_struct calls
diff --git a/internal/cgen/builtin.go b/internal/cgen/builtin.go
index b7e4947..b525474 100644
--- a/internal/cgen/builtin.go
+++ b/internal/cgen/builtin.go
@@ -29,7 +29,7 @@
 	errOptimizationNotApplicable = errors.New("cgen: internal error: optimization not applicable")
 )
 
-func (g *gen) writeBuiltinCall(b *buffer, n *a.Expr, depth uint32) error {
+func (g *gen) writeBuiltinCall(b *buffer, n *a.Expr, sideEffectsOnly bool, depth uint32) error {
 	if n.Operator() != t.IDOpenParen {
 		return errNoSuchBuiltin
 	}
@@ -70,7 +70,7 @@
 				}
 				b.writes("((wuffs_base__flicks)(")
 			}
-			if err := g.writeExpr(b, o.AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 			if i == u64ToFlicksIndex {
@@ -81,9 +81,9 @@
 		return nil
 
 	case t.IDSlice:
-		return g.writeBuiltinSlice(b, recv, method.Ident(), n.Args(), depth)
+		return g.writeBuiltinSlice(b, recv, method.Ident(), n.Args(), sideEffectsOnly, depth)
 	case t.IDTable:
-		return g.writeBuiltinTable(b, recv, method.Ident(), n.Args(), depth)
+		return g.writeBuiltinTable(b, recv, method.Ident(), n.Args(), sideEffectsOnly, depth)
 	default:
 		return errNoSuchBuiltin
 	}
@@ -98,9 +98,9 @@
 	} else {
 		switch qid[1] {
 		case t.IDIOReader:
-			return g.writeBuiltinIOReader(b, recv, method.Ident(), n.Args(), depth)
+			return g.writeBuiltinIOReader(b, recv, method.Ident(), n.Args(), sideEffectsOnly, depth)
 		case t.IDIOWriter:
-			return g.writeBuiltinIOWriter(b, recv, method.Ident(), n.Args(), depth)
+			return g.writeBuiltinIOWriter(b, recv, method.Ident(), n.Args(), sideEffectsOnly, depth)
 		case t.IDPixelSwizzler:
 			switch method.Ident() {
 			case t.IDLimitedSwizzleU32InterleavedFromReader, t.IDSwizzleInterleavedFromReader:
@@ -111,13 +111,13 @@
 					b.writes("swizzle_interleaved_from_reader")
 				}
 				b.writes("(\n&")
-				if err := g.writeExpr(b, recv, depth); err != nil {
+				if err := g.writeExpr(b, recv, false, depth); err != nil {
 					return err
 				}
 				args := n.Args()
 				for _, o := range args[:len(args)-1] {
 					b.writes(",\n")
-					if err := g.writeExpr(b, o.AsArg().Value(), depth); err != nil {
+					if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
 						return err
 					}
 				}
@@ -142,7 +142,7 @@
 				return nil
 			}
 		case t.IDSSE128I:
-			return g.writeBuiltinCPUArch(b, recv, method.Ident(), n.Args(), depth)
+			return g.writeBuiltinCPUArch(b, recv, method.Ident(), n.Args(), sideEffectsOnly, depth)
 		}
 	}
 	return errNoSuchBuiltin
@@ -173,7 +173,7 @@
 	return errNoSuchBuiltin
 }
 
-func (g *gen) writeBuiltinIOReader(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, depth uint32) error {
+func (g *gen) writeBuiltinIOReader(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
 	recvName, err := g.recvName(recv)
 	if err != nil {
 		return err
@@ -184,14 +184,24 @@
 		b.printf("((uint64_t)(wuffs_base__utf_8__longest_valid_prefix(%s%s,\n"+
 			"((size_t)(wuffs_base__u64__min(((uint64_t)(%s%s - %s%s)), ",
 			iopPrefix, recvName, io2Prefix, recvName, iopPrefix, recvName)
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writes("))))))")
 		return nil
 
 	case t.IDUndoByte:
-		b.printf("(%s%s--, wuffs_base__make_empty_struct())", iopPrefix, recvName)
+		if !sideEffectsOnly {
+			// Generate a two part expression using the comma operator: "(etc,
+			// return_empty_struct call)". The final part is a function call
+			// (to a static inline function) instead of a struct literal, to
+			// avoid a "expression result unused" compiler error.
+			b.writes("(")
+		}
+		b.printf("%s%s--", iopPrefix, recvName)
+		if !sideEffectsOnly {
+			b.writes(", wuffs_base__make_empty_struct())")
+		}
 		return nil
 
 	case t.IDCanUndoByte:
@@ -205,7 +215,7 @@
 
 	case t.IDCountSince:
 		b.printf("wuffs_base__io__count_since(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.printf(", ((uint64_t)(%s%s - %s%s)))", iopPrefix, recvName, io0Prefix, recvName)
@@ -222,7 +232,7 @@
 	case t.IDMatch7:
 		b.printf("wuffs_base__io_reader__match7(%s%s, %s%s, %s,",
 			iopPrefix, recvName, io2Prefix, recvName, recvName)
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writeb(')')
@@ -230,7 +240,7 @@
 
 	case t.IDPeekU64LEAt:
 		b.printf("wuffs_base__peek_u64le__no_bounds_check(%s%s + ", iopPrefix, recvName)
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writeb(')')
@@ -243,7 +253,7 @@
 
 	case t.IDSince:
 		b.printf("wuffs_base__io__since(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.printf(", ((uint64_t)(%s%s - %s%s)), %s%s)",
@@ -251,15 +261,20 @@
 		return nil
 
 	case t.IDSkipU32Fast:
-		// Generate a two part expression using the comma operator: "(pointer
-		// increment, return_empty_struct call)". The final part is a function
-		// call (to a static inline function) instead of a struct literal, to
-		// avoid a "expression result unused" compiler error.
-		b.printf("(%s%s += ", iopPrefix, recvName)
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if !sideEffectsOnly {
+			// Generate a two part expression using the comma operator: "(etc,
+			// return_empty_struct call)". The final part is a function call
+			// (to a static inline function) instead of a struct literal, to
+			// avoid a "expression result unused" compiler error.
+			b.writes("(")
+		}
+		b.printf("%s%s += ", iopPrefix, recvName)
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
-		b.writes(", wuffs_base__make_empty_struct())")
+		if !sideEffectsOnly {
+			b.writes(", wuffs_base__make_empty_struct())")
+		}
 		return nil
 	}
 
@@ -282,7 +297,7 @@
 	return g.writeBuiltinIO(b, recv, method, args, depth)
 }
 
-func (g *gen) writeBuiltinIOWriter(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, depth uint32) error {
+func (g *gen) writeBuiltinIOWriter(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
 	recvName, err := g.recvName(recv)
 	if err != nil {
 		return err
@@ -298,7 +313,7 @@
 			suffix, iopPrefix, recvName, io0Prefix, recvName, io2Prefix, recvName)
 		for _, o := range args {
 			b.writes(", ")
-			if err := g.writeExpr(b, o.AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 		}
@@ -313,7 +328,7 @@
 
 		b.printf("wuffs_base__io_writer__limited_copy_u32_from_reader(\n&%s%s, %s%s,",
 			iopPrefix, recvName, io2Prefix, recvName)
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.printf(", &%s%s, %s%s)", iopPrefix, readerName, io2Prefix, readerName)
@@ -331,7 +346,7 @@
 
 	case t.IDCountSince:
 		b.printf("wuffs_base__io__count_since(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.printf(", ((uint64_t)(%s%s - %s%s)))", iopPrefix, recvName, io0Prefix, recvName)
@@ -348,7 +363,7 @@
 
 	case t.IDSince:
 		b.printf("wuffs_base__io__since(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.printf(", ((uint64_t)(%s%s - %s%s)), %s%s)",
@@ -359,18 +374,21 @@
 	if method >= writeFastMethodsBase {
 		if m := method - writeFastMethodsBase; m < t.ID(len(writeFastMethods)) {
 			if p := writeFastMethods[m]; p.n != 0 {
-				// Generate a three part expression using the comma operator:
-				// "(store, pointer increment, return_empty_struct call)". The
-				// final part is a function call (to a static inline function)
-				// instead of a struct literal, to avoid a "expression result
-				// unused" compiler error.
-				b.printf("(wuffs_base__poke_u%d%ce__no_bounds_check(%s%s,",
+				// Generate a two/three part expression using the comma
+				// operator: "(store, pointer increment, return_empty_struct
+				// call)". The final part is a function call (to a static
+				// inline function) instead of a struct literal, to avoid a
+				// "expression result unused" compiler error.
+				b.printf("(wuffs_base__poke_u%d%ce__no_bounds_check(%s%s, ",
 					p.n, p.endianness, iopPrefix, recvName)
-				if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+				if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 					return err
 				}
-				b.printf("), %s%s += %d, wuffs_base__make_empty_struct())",
-					iopPrefix, recvName, p.n/8)
+				b.printf("), %s%s += %d", iopPrefix, recvName, p.n/8)
+				if !sideEffectsOnly {
+					b.writes(", wuffs_base__make_empty_struct()")
+				}
+				b.writes(")")
 				return nil
 			}
 		}
@@ -391,32 +409,32 @@
 		if method == t.IDWriteSimpleTokenFast {
 			b.writes("(((uint64_t)(")
 			if cv := args[0].AsArg().Value().ConstValue(); (cv == nil) || (cv.Sign() != 0) {
-				if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+				if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 					return err
 				}
 				b.writes(")) << WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT) |\n(((uint64_t)(")
 			}
 
-			if err := g.writeExpr(b, args[1].AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, args[1].AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 			b.writes(")) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |\n(((uint64_t)(")
 		} else {
 			b.writes("(~")
-			if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 			b.writes(" << WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT) |\n(((uint64_t)(")
 		}
 
 		if cv := args[len(args)-2].AsArg().Value().ConstValue(); (cv == nil) || (cv.Sign() != 0) {
-			if err := g.writeExpr(b, args[len(args)-2].AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, args[len(args)-2].AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 			b.writes(")) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |\n(((uint64_t)(")
 		}
 
-		if err := g.writeExpr(b, args[len(args)-1].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[len(args)-1].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writes(")) << WUFFS_BASE__TOKEN__LENGTH__SHIFT))")
@@ -426,29 +444,33 @@
 	return g.writeBuiltinIO(b, recv, method, args, depth)
 }
 
-func (g *gen) writeBuiltinCPUArch(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, depth uint32) error {
+func (g *gen) writeBuiltinCPUArch(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
 	switch method {
 	case t.IDLoadU32:
 		// TODO: ensure that the receiver is a variable, not an arbitrary expression.
-		//
-		// Generate a two part expression using the comma operator: "(etc,
-		// return_empty_struct call)". The final part is a function call (to a
-		// static inline function) instead of a struct literal, to avoid a
-		// "expression result unused" compiler error.
-		b.writes("(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if !sideEffectsOnly {
+			// Generate a two part expression using the comma operator: "(etc,
+			// return_empty_struct call)". The final part is a function call
+			// (to a static inline function) instead of a struct literal, to
+			// avoid a "expression result unused" compiler error.
+			b.writes("(")
+		}
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(" = _mm_cvtsi32_si128((int)(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
-		b.writes(")), wuffs_base__make_empty_struct())")
+		b.writes("))")
+		if !sideEffectsOnly {
+			b.writes(", wuffs_base__make_empty_struct())")
+		}
 		return nil
 
 	case t.IDTruncateU32:
 		b.writes("((uint32_t)(_mm_cvtsi128_si32(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(")))")
@@ -469,19 +491,19 @@
 				b.writes("(char)(")
 				after = ")"
 			}
-			if err := g.writeExpr(b, o.AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 			b.writes(after)
 		}
 	} else {
 		b.printf("%s(", methodStr)
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		for _, o := range args {
 			b.writes(", ")
-			if err := g.writeExpr(b, o.AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 		}
@@ -497,7 +519,7 @@
 		//  - "((recv) & constant)"
 		//  - "((recv) & WUFFS_BASE__LOW_BITS_MASK__UXX(n))"
 		b.writes("((")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(") & ")
@@ -513,7 +535,7 @@
 			} else {
 				b.printf("WUFFS_BASE__LOW_BITS_MASK__U%d(", 8*sz)
 			}
-			if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+			if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 				return err
 			}
 			b.writes(")")
@@ -525,7 +547,7 @@
 	case t.IDHighBits:
 		// "recv.high_bits(n:etc)" in C is "((recv) >> (8*sizeof(recv) - (n)))".
 		b.writes("((")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(") >> (")
@@ -535,7 +557,7 @@
 			b.printf("%d", 8*sz)
 		}
 		b.writes(" - (")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writes(")))")
@@ -549,11 +571,11 @@
 			b.printf("%d", 8*sz)
 		}
 		b.writes("__max(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(", ")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writes(")")
@@ -567,11 +589,11 @@
 			b.printf("%d", 8*sz)
 		}
 		b.writes("__min(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(", ")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 		b.writes(")")
@@ -580,7 +602,7 @@
 	return errNoSuchBuiltin
 }
 
-func (g *gen) writeBuiltinSlice(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, depth uint32) error {
+func (g *gen) writeBuiltinSlice(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
 	switch method {
 	case t.IDCopyFromSlice:
 		if err := g.writeBuiltinSliceCopyFromSlice8(b, recv, method, args, depth); err != errOptimizationNotApplicable {
@@ -589,7 +611,7 @@
 
 		// TODO: don't assume that the slice is a slice of base.u8.
 		b.writes("wuffs_base__slice_u8__copy_from_slice(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(", ")
@@ -597,7 +619,7 @@
 
 	case t.IDLength:
 		b.writes("((uint64_t)(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(".len))")
@@ -606,7 +628,7 @@
 	case t.IDSuffix:
 		// TODO: don't assume that the slice is a slice of base.u8.
 		b.writes("wuffs_base__slice_u8__suffix(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(", ")
@@ -619,7 +641,7 @@
 			s = s[:i]
 		}
 		b.printf("wuffs_base__%s__no_bounds_check(", s)
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(".ptr)")
@@ -627,15 +649,25 @@
 	}
 
 	if (t.IDPokeU8 <= method) && (method <= t.IDPokeU64LE) {
-		b.printf("(wuffs_base__%s__no_bounds_check(", method.Str(g.tm))
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if !sideEffectsOnly {
+			// Generate a two part expression using the comma operator: "(etc,
+			// return_empty_struct call)". The final part is a function call
+			// (to a static inline function) instead of a struct literal, to
+			// avoid a "expression result unused" compiler error.
+			b.writes("(")
+		}
+		b.printf("wuffs_base__%s__no_bounds_check(", method.Str(g.tm))
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(".ptr, ")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
 			return err
 		}
-		b.writes("), wuffs_base__make_empty_struct())")
+		b.writes(")")
+		if !sideEffectsOnly {
+			b.writes(", wuffs_base__make_empty_struct())")
+		}
 		return nil
 	}
 
@@ -655,7 +687,7 @@
 		return errOptimizationNotApplicable
 	}
 	b.writes("memcpy((")
-	if err := g.writeExpr(b, foo, depth); err != nil {
+	if err := g.writeExpr(b, foo, false, depth); err != nil {
 		return err
 	}
 	if foo.MType().IsSliceType() {
@@ -663,12 +695,12 @@
 	}
 	if fIndex != nil {
 		b.writes(")+(")
-		if err := g.writeExpr(b, fIndex, depth); err != nil {
+		if err := g.writeExpr(b, fIndex, false, depth); err != nil {
 			return err
 		}
 	}
 	b.writes("), (")
-	if err := g.writeExpr(b, bar, depth); err != nil {
+	if err := g.writeExpr(b, bar, false, depth); err != nil {
 		return err
 	}
 	if bar.MType().IsSliceType() {
@@ -676,7 +708,7 @@
 	}
 	if bIndex != nil {
 		b.writes(")+(")
-		if err := g.writeExpr(b, bIndex, depth); err != nil {
+		if err := g.writeExpr(b, bIndex, false, depth); err != nil {
 			return err
 		}
 	}
@@ -712,7 +744,7 @@
 	return foo, index
 }
 
-func (g *gen) writeBuiltinTable(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, depth uint32) error {
+func (g *gen) writeBuiltinTable(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
 	field := ""
 
 	switch method {
@@ -726,7 +758,7 @@
 	case t.IDRow:
 		// TODO: don't assume that the table is a table of base.u8.
 		b.writes("wuffs_base__table_u8__row(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.writes(", ")
@@ -735,7 +767,7 @@
 
 	if field != "" {
 		b.writes("((uint64_t)(")
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		b.printf(".%s))", field)
@@ -757,7 +789,7 @@
 				b.writes(", ")
 			}
 		}
-		if err := g.writeExpr(b, o.AsArg().Value(), depth); err != nil {
+		if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
 			return err
 		}
 	}
@@ -827,7 +859,7 @@
 				sPrefix, g.currFunk.astFunc.FuncName().Str(g.tm))
 
 			b.printf("%s = ", scratchName)
-			if err := g.writeExpr(b, x, depth); err != nil {
+			if err := g.writeExpr(b, x, false, depth); err != nil {
 				return err
 			}
 			b.writes(";\n")
@@ -866,7 +898,7 @@
 
 			b.printf("%s = ", scratchName)
 			x := n.Args()[0].AsArg().Value()
-			if err := g.writeExpr(b, x, depth); err != nil {
+			if err := g.writeExpr(b, x, false, depth); err != nil {
 				return err
 			}
 			b.writes(";\n")
diff --git a/internal/cgen/expr.go b/internal/cgen/expr.go
index cd9096b..bffba4b 100644
--- a/internal/cgen/expr.go
+++ b/internal/cgen/expr.go
@@ -23,7 +23,7 @@
 	t "github.com/google/wuffs/lang/token"
 )
 
-func (g *gen) writeExpr(b *buffer, n *a.Expr, depth uint32) error {
+func (g *gen) writeExpr(b *buffer, n *a.Expr, sideEffectsOnly bool, depth uint32) error {
 	if depth > a.MaxExprDepth {
 		return fmt.Errorf("expression recursion depth too large")
 	}
@@ -59,10 +59,10 @@
 	case op.IsXAssociativeOp():
 		return g.writeExprAssociativeOp(b, n, depth)
 	}
-	return g.writeExprOther(b, n, depth)
+	return g.writeExprOther(b, n, sideEffectsOnly, depth)
 }
 
-func (g *gen) writeExprOther(b *buffer, n *a.Expr, depth uint32) error {
+func (g *gen) writeExprOther(b *buffer, n *a.Expr, sideEffectsOnly bool, depth uint32) error {
 	switch n.Operator() {
 	case 0:
 		if ident := n.Ident(); ident == t.IDThis {
@@ -101,7 +101,7 @@
 
 	case t.IDOpenParen:
 		// n is a function call.
-		if err := g.writeBuiltinCall(b, n, depth); err != errNoSuchBuiltin {
+		if err := g.writeBuiltinCall(b, n, sideEffectsOnly, depth); err != errNoSuchBuiltin {
 			return err
 		}
 
@@ -119,20 +119,26 @@
 			qid := recvTyp.QID()
 
 			if isBaseRangeType(qid) {
-				// Generate a 2 part expression using the comma operator: "(memset
-				// call, return_empty_struct call)". The final part is a function
-				// call (to a static inline function) instead of a struct literal,
-				// to avoid a "expression result unused" compiler error.
-				b.printf("(memset(%s", addr)
-				if err := g.writeExpr(b, recv, depth); err != nil {
+				if !sideEffectsOnly {
+					// Generate a two part expression using the comma operator:
+					// "(etc, return_empty_struct call)". The final part is a
+					// function call (to a static inline function) instead of a
+					// struct literal, to avoid a "expression result unused"
+					// compiler error.
+					b.writes("(")
+				}
+				b.printf("memset(%s", addr)
+				if err := g.writeExpr(b, recv, false, depth); err != nil {
 					return err
 				}
-				b.printf(", 0, sizeof (%s%s)), wuffs_base__make_empty_struct())",
-					g.packagePrefix(qid), qid[1].Str(g.tm))
+				b.printf(", 0, sizeof (%s%s))", g.packagePrefix(qid), qid[1].Str(g.tm))
+				if !sideEffectsOnly {
+					b.writes(", wuffs_base__make_empty_struct())")
+				}
 			} else {
 				b.printf("wuffs_base__ignore_status("+
 					"%s%s__initialize(%s", g.packagePrefix(qid), qid[1].Str(g.tm), addr)
-				if err := g.writeExpr(b, recv, depth); err != nil {
+				if err := g.writeExpr(b, recv, false, depth); err != nil {
 					return err
 				}
 				b.printf(", sizeof (%s%s), WUFFS_VERSION, 0))", g.packagePrefix(qid), qid[1].Str(g.tm))
@@ -145,7 +151,7 @@
 
 	case t.IDOpenBracket:
 		// n is an index.
-		if err := g.writeExpr(b, n.LHS().AsExpr(), depth); err != nil {
+		if err := g.writeExpr(b, n.LHS().AsExpr(), false, depth); err != nil {
 			return err
 		}
 		if lTyp := n.LHS().AsExpr().MType(); lTyp.IsSliceType() {
@@ -153,7 +159,7 @@
 			b.writes(".ptr")
 		}
 		b.writeb('[')
-		if err := g.writeExpr(b, n.RHS().AsExpr(), depth); err != nil {
+		if err := g.writeExpr(b, n.RHS().AsExpr(), false, depth); err != nil {
 			return err
 		}
 		b.writeb(']')
@@ -201,7 +207,7 @@
 				b.writeb('(')
 			}
 		}
-		if err := g.writeExpr(b, lhs, depth); err != nil {
+		if err := g.writeExpr(b, lhs, false, depth); err != nil {
 			return err
 		}
 		if lhsIsArray {
@@ -224,13 +230,13 @@
 
 		if mhs != nil {
 			b.writes(comma)
-			if err := g.writeExpr(b, mhs, depth); err != nil {
+			if err := g.writeExpr(b, mhs, false, depth); err != nil {
 				return err
 			}
 		}
 		if rhs != nil {
 			b.writes(comma)
-			if err := g.writeExpr(b, rhs, depth); err != nil {
+			if err := g.writeExpr(b, rhs, false, depth); err != nil {
 				return err
 			}
 		}
@@ -255,7 +261,7 @@
 			return fmt.Errorf("unrecognized status %s", n.Str(g.tm))
 		}
 
-		if err := g.writeExpr(b, lhs, depth); err != nil {
+		if err := g.writeExpr(b, lhs, false, depth); err != nil {
 			return err
 		}
 		if p := lhs.MType().Decorator(); p == t.IDNptr || p == t.IDPtr {
@@ -294,7 +300,7 @@
 	}
 
 	b.writes(opName)
-	return g.writeExpr(b, n.RHS().AsExpr(), depth)
+	return g.writeExpr(b, n.RHS().AsExpr(), false, depth)
 }
 
 func (g *gen) writeExprBinaryOp(b *buffer, n *a.Expr, depth uint32) error {
@@ -370,7 +376,7 @@
 			}
 		}
 	}
-	if err := g.writeExpr(b, n, depth); err != nil {
+	if err := g.writeExpr(b, n, false, depth); err != nil {
 		return err
 	}
 	if isStatus {
@@ -387,7 +393,7 @@
 		return err
 	}
 	b.writes(")(")
-	if err := g.writeExpr(b, lhs, depth); err != nil {
+	if err := g.writeExpr(b, lhs, false, depth); err != nil {
 		return err
 	}
 	b.writes("))")
@@ -409,7 +415,7 @@
 		if i != 0 {
 			b.writes(opName)
 		}
-		if err := g.writeExpr(b, o.AsExpr(), depth); err != nil {
+		if err := g.writeExpr(b, o.AsExpr(), false, depth); err != nil {
 			return err
 		}
 	}
@@ -432,7 +438,7 @@
 	b.printf("%s%s__%s(", g.packagePrefix(qid), qid[1].Str(g.tm), method.Ident().Str(g.tm))
 	if !recvTyp.Eq(typeExprUtility) {
 		b.writes(addr)
-		if err := g.writeExpr(b, recv, depth); err != nil {
+		if err := g.writeExpr(b, recv, false, depth); err != nil {
 			return err
 		}
 		if len(n.Args()) > 0 {
diff --git a/internal/cgen/statement.go b/internal/cgen/statement.go
index 3f1cfbc..3f53bd4 100644
--- a/internal/cgen/statement.go
+++ b/internal/cgen/statement.go
@@ -132,7 +132,7 @@
 	opName, closer, disableWconversion := "", "", false
 
 	if lhs != nil {
-		if err := g.writeExpr(&lhsBuf, lhs, 0); err != nil {
+		if err := g.writeExpr(&lhsBuf, lhs, false, 0); err != nil {
 			return err
 		}
 
@@ -152,7 +152,7 @@
 
 				b.printf("wuffs_base__status %s%d = ", tPrefix, temp)
 
-				if err := g.writeExpr(b, rhs, 0); err != nil {
+				if err := g.writeExpr(b, rhs, false, 0); err != nil {
 					return err
 				}
 				b.writes(";\n")
@@ -185,7 +185,6 @@
 			}
 		}
 	}
-
 	// "x += 1" triggers -Wconversion, if x is smaller than an int (i.e. a
 	// uint8_t or a uint16_t). This is arguably a clang/gcc bug, but in any
 	// case, we work around it in Wuffs.
@@ -207,7 +206,7 @@
 		g.currFunk.tempR++
 	} else if skipRHS {
 		// No-op.
-	} else if err := g.writeExpr(b, rhs, 0); err != nil {
+	} else if err := g.writeExpr(b, rhs, lhs == nil, 0); err != nil {
 		return err
 	}
 	b.writes(closer)
@@ -323,7 +322,7 @@
 				io0Prefix, prefix, name,
 				io1Prefix, prefix, name,
 				io2Prefix, prefix, name)
-			if err := g.writeExpr(b, n.Arg1(), 0); err != nil {
+			if err := g.writeExpr(b, n.Arg1(), false, 0); err != nil {
 				return err
 			}
 			b.writes(");\n")
@@ -335,7 +334,7 @@
 				cTyp,
 				io2Prefix, prefix, name,
 				iopPrefix, prefix, name)
-			if err := g.writeExpr(b, n.Arg1(), 0); err != nil {
+			if err := g.writeExpr(b, n.Arg1(), false, 0); err != nil {
 				return err
 			}
 			b.writes(");\n")
@@ -398,7 +397,7 @@
 
 	for {
 		condition := buffer(nil)
-		if err := g.writeExpr(&condition, n.Condition(), 0); err != nil {
+		if err := g.writeExpr(&condition, n.Condition(), false, 0); err != nil {
 			return err
 		}
 		// Calling trimParens avoids clang's -Wparentheses-equality warning.
@@ -442,7 +441,7 @@
 		o := o.AsAssign()
 		name := o.LHS().Ident().Str(g.tm)
 		b.printf("wuffs_base__slice_u8 %sslice_%s = ", iPrefix, name)
-		if err := g.writeExpr(b, o.RHS(), 0); err != nil {
+		if err := g.writeExpr(b, o.RHS(), false, 0); err != nil {
 			return err
 		}
 		b.writes(";\n")
@@ -518,8 +517,7 @@
 				msg, _ := t.Unescape(retExpr.Ident().Str(g.tm))
 				isComplete = statusMsgIsNote(msg)
 			}
-			if err := g.writeExpr(
-				b, retExpr, depth); err != nil {
+			if err := g.writeExpr(b, retExpr, false, depth); err != nil {
 				return err
 			}
 		}
@@ -572,7 +570,7 @@
 		if couldBeSuspension {
 			b.writes("wuffs_base__status__ensure_not_a_suspension(")
 		}
-		if err := g.writeExpr(b, retExpr, depth); err != nil {
+		if err := g.writeExpr(b, retExpr, false, depth); err != nil {
 			return err
 		}
 		if couldBeSuspension {
@@ -593,7 +591,7 @@
 		b.printf("label__%s__continue:;\n", jt)
 	}
 	condition := buffer(nil)
-	if err := g.writeExpr(&condition, n.Condition(), 0); err != nil {
+	if err := g.writeExpr(&condition, n.Condition(), false, 0); err != nil {
 		return err
 	}
 	// Calling trimParens avoids clang's -Wparentheses-equality warning.
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 9b0a79e..3d8aff4 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -18791,7 +18791,7 @@
         goto ok;
       }
       self->private_impl.f_pending_pad -= 1;
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
     }
     label__inner__continue:;
     while (true) {
@@ -18914,7 +18914,7 @@
               goto label__goto_suspend__break;
             }
             v_code = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             if (v_code == 0) {
               v_rle_state = 2;
               goto label__inner__continue;
@@ -18927,7 +18927,7 @@
               goto label__goto_suspend__break;
             }
             v_code = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             if (self->private_impl.f_bits_per_pixel == 8) {
               v_p0 = 0;
               while (v_p0 < self->private_impl.f_rle_length) {
@@ -18953,7 +18953,7 @@
               goto label__goto_suspend__break;
             }
             v_code = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             if (v_code < 2) {
               if ((self->private_impl.f_dst_y >= self->private_impl.f_height) && (v_code == 0)) {
                 status = wuffs_base__make_status(wuffs_bmp__error__bad_rle_compression);
@@ -18991,7 +18991,7 @@
               v_p0 = 0;
               while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 2)) {
                 v_chunk_bits = ((uint32_t)(wuffs_base__peek_u16be__no_bounds_check(iop_a_src)));
-                (iop_a_src += 2, wuffs_base__make_empty_struct());
+                iop_a_src += 2;
                 self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((15 & (v_chunk_bits >> 12))));
                 self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((15 & (v_chunk_bits >> 8))));
                 self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((15 & (v_chunk_bits >> 4))));
@@ -19011,7 +19011,7 @@
               if (((uint64_t)(io2_a_src - iop_a_src)) < 1) {
                 goto label__goto_suspend__break;
               }
-              (iop_a_src += 1, wuffs_base__make_empty_struct());
+              iop_a_src += 1;
               self->private_impl.f_rle_padded = false;
             }
             v_rle_state = 0;
@@ -19021,7 +19021,7 @@
               goto label__goto_suspend__break;
             }
             self->private_impl.f_rle_delta_x = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             v_rle_state = 5;
             goto label__inner__continue;
           }
@@ -19029,7 +19029,7 @@
             goto label__goto_suspend__break;
           }
           v_code = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           if (self->private_impl.f_rle_delta_x > 0) {
             wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_dst, v_dst_palette, ((uint64_t)(self->private_impl.f_rle_delta_x)));
             wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)(self->private_impl.f_rle_delta_x)));
@@ -19162,7 +19162,7 @@
         goto ok;
       }
       self->private_impl.f_pending_pad -= 1;
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
     }
     label__inner__continue:;
     while (true) {
@@ -19188,13 +19188,13 @@
             goto label__0__break;
           }
           v_c32 = ((uint32_t)(wuffs_base__peek_u16le__no_bounds_check(iop_a_src)));
-          (iop_a_src += 2, wuffs_base__make_empty_struct());
+          iop_a_src += 2;
         } else {
           if (((uint64_t)(io2_a_src - iop_a_src)) < 4) {
             goto label__0__break;
           }
           v_c32 = wuffs_base__peek_u32le__no_bounds_check(iop_a_src);
-          (iop_a_src += 4, wuffs_base__make_empty_struct());
+          iop_a_src += 4;
         }
         v_channel = 0;
         while (v_channel < 4) {
@@ -19315,7 +19315,7 @@
       v_chunk_count = wuffs_base__u32__min(v_chunk_count, 16);
       while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) {
         v_chunk_bits = wuffs_base__peek_u32be__no_bounds_check(iop_a_src);
-        (iop_a_src += 4, wuffs_base__make_empty_struct());
+        iop_a_src += 4;
         self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((1 & (v_chunk_bits >> 31))));
         self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((1 & (v_chunk_bits >> 30))));
         self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((1 & (v_chunk_bits >> 29))));
@@ -19356,7 +19356,7 @@
       v_chunk_count = wuffs_base__u32__min(v_chunk_count, 32);
       while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) {
         v_chunk_bits = wuffs_base__peek_u32be__no_bounds_check(iop_a_src);
-        (iop_a_src += 4, wuffs_base__make_empty_struct());
+        iop_a_src += 4;
         self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((3 & (v_chunk_bits >> 30))));
         self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((3 & (v_chunk_bits >> 28))));
         self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((3 & (v_chunk_bits >> 26))));
@@ -19381,7 +19381,7 @@
       v_chunk_count = wuffs_base__u32__min(v_chunk_count, 64);
       while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) {
         v_chunk_bits = wuffs_base__peek_u32be__no_bounds_check(iop_a_src);
-        (iop_a_src += 4, wuffs_base__make_empty_struct());
+        iop_a_src += 4;
         self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((15 & (v_chunk_bits >> 28))));
         self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((15 & (v_chunk_bits >> 24))));
         self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((15 & (v_chunk_bits >> 20))));
@@ -20032,13 +20032,13 @@
               v_vminor |= 19;
             }
             v_indefinite_string_major_type = 0;
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(v_vminor)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                 (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
             goto label__goto_parsed_a_leaf_value__break;
           }
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           v_c_major = ((uint8_t)((v_c >> 5)));
           v_c_minor = (v_c & 31);
           if (v_c_minor < 24) {
@@ -20048,25 +20048,25 @@
               if (v_c_minor == 24) {
                 if (((uint64_t)(io2_a_src - iop_a_src)) >= 1) {
                   v_string_length = ((uint64_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src)));
-                  (iop_a_src += 1, wuffs_base__make_empty_struct());
+                  iop_a_src += 1;
                   goto label__goto_have_string_length__break;
                 }
               } else if (v_c_minor == 25) {
                 if (((uint64_t)(io2_a_src - iop_a_src)) >= 2) {
                   v_string_length = ((uint64_t)(wuffs_base__peek_u16be__no_bounds_check(iop_a_src)));
-                  (iop_a_src += 2, wuffs_base__make_empty_struct());
+                  iop_a_src += 2;
                   goto label__goto_have_string_length__break;
                 }
               } else if (v_c_minor == 26) {
                 if (((uint64_t)(io2_a_src - iop_a_src)) >= 4) {
                   v_string_length = ((uint64_t)(wuffs_base__peek_u32be__no_bounds_check(iop_a_src)));
-                  (iop_a_src += 4, wuffs_base__make_empty_struct());
+                  iop_a_src += 4;
                   goto label__goto_have_string_length__break;
                 }
               } else if (v_c_minor == 27) {
                 if (((uint64_t)(io2_a_src - iop_a_src)) >= 8) {
                   v_string_length = wuffs_base__peek_u64be__no_bounds_check(iop_a_src);
-                  (iop_a_src += 8, wuffs_base__make_empty_struct());
+                  iop_a_src += 8;
                   goto label__goto_have_string_length__break;
                 }
               } else {
@@ -20074,7 +20074,7 @@
                 goto label__goto_have_string_length__break;
               }
               if (iop_a_src > io1_a_src) {
-                (iop_a_src--, wuffs_base__make_empty_struct());
+                iop_a_src--;
                 if (a_src && a_src->meta.closed) {
                   status = wuffs_base__make_status(wuffs_cbor__error__bad_input);
                   goto exit;
@@ -20183,7 +20183,7 @@
               if ((v_string_length > 0) || (v_indefinite_string_major_type > 0)) {
                 v_continued = 1;
               }
-              (iop_a_src += v_token_length, wuffs_base__make_empty_struct());
+              iop_a_src += v_token_length;
               *iop_a_dst++ = wuffs_base__make_token(
                   (((uint64_t)(4194816)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                   (((uint64_t)(v_continued)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -20249,7 +20249,7 @@
               if ((v_string_length > 0) || (v_indefinite_string_major_type > 0)) {
                 v_continued = 1;
               }
-              (iop_a_src += v_token_length, wuffs_base__make_empty_struct());
+              iop_a_src += v_token_length;
               *iop_a_dst++ = wuffs_base__make_token(
                   (((uint64_t)(4194819)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                   (((uint64_t)(v_continued)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -20267,7 +20267,7 @@
             } else if (v_depth >= 1024) {
               v_token_length = ((uint32_t)(WUFFS_CBOR__TOKEN_LENGTHS[v_c_minor]));
               while ((v_token_length > 0) && (iop_a_src > io1_a_src)) {
-                (iop_a_src--, wuffs_base__make_empty_struct());
+                iop_a_src--;
                 v_token_length -= 1;
               }
               status = wuffs_base__make_status(wuffs_cbor__error__unsupported_recursion_depth);
@@ -20308,7 +20308,7 @@
             } else if (v_depth >= 1024) {
               v_token_length = ((uint32_t)(WUFFS_CBOR__TOKEN_LENGTHS[v_c_minor]));
               while ((v_token_length > 0) && (iop_a_src > io1_a_src)) {
-                (iop_a_src--, wuffs_base__make_empty_struct());
+                iop_a_src--;
                 v_token_length -= 1;
               }
               status = wuffs_base__make_status(wuffs_cbor__error__unsupported_recursion_depth);
@@ -20382,7 +20382,7 @@
                   status = wuffs_base__make_status(wuffs_cbor__error__internal_error_inconsistent_i_o);
                   goto exit;
                 }
-                (iop_a_src--, wuffs_base__make_empty_struct());
+                iop_a_src--;
                 goto label__goto_fail__break;
               }
               *iop_a_dst++ = wuffs_base__make_token(
@@ -20435,7 +20435,7 @@
         }
         label__goto_fail__break:;
         if (iop_a_src > io1_a_src) {
-          (iop_a_src--, wuffs_base__make_empty_struct());
+          iop_a_src--;
           status = wuffs_base__make_status(wuffs_cbor__error__bad_input);
           goto exit;
         }
@@ -22535,10 +22535,10 @@
   while ((((uint64_t)(io2_a_dst - iop_a_dst)) >= 258) && (((uint64_t)(io2_a_src - iop_a_src)) >= 12)) {
     if (v_n_bits < 15) {
       v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_n_bits += 8;
       v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_n_bits += 8;
     } else {
     }
@@ -22547,7 +22547,7 @@
     v_bits >>= v_table_entry_n_bits;
     v_n_bits -= v_table_entry_n_bits;
     if ((v_table_entry >> 31) != 0) {
-      (wuffs_base__poke_u8be__no_bounds_check(iop_a_dst,((uint8_t)(((v_table_entry >> 8) & 255)))), iop_a_dst += 1, wuffs_base__make_empty_struct());
+      (wuffs_base__poke_u8be__no_bounds_check(iop_a_dst, ((uint8_t)(((v_table_entry >> 8) & 255)))), iop_a_dst += 1);
       goto label__loop__continue;
     } else if ((v_table_entry >> 30) != 0) {
     } else if ((v_table_entry >> 29) != 0) {
@@ -22556,10 +22556,10 @@
     } else if ((v_table_entry >> 28) != 0) {
       if (v_n_bits < 15) {
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
       } else {
       }
@@ -22570,7 +22570,7 @@
       v_bits >>= v_table_entry_n_bits;
       v_n_bits -= v_table_entry_n_bits;
       if ((v_table_entry >> 31) != 0) {
-        (wuffs_base__poke_u8be__no_bounds_check(iop_a_dst,((uint8_t)(((v_table_entry >> 8) & 255)))), iop_a_dst += 1, wuffs_base__make_empty_struct());
+        (wuffs_base__poke_u8be__no_bounds_check(iop_a_dst, ((uint8_t)(((v_table_entry >> 8) & 255)))), iop_a_dst += 1);
         goto label__loop__continue;
       } else if ((v_table_entry >> 30) != 0) {
       } else if ((v_table_entry >> 29) != 0) {
@@ -22598,10 +22598,10 @@
     if (v_table_entry_n_bits > 0) {
       if (v_n_bits < 15) {
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
       } else {
       }
@@ -22612,10 +22612,10 @@
     }
     if (v_n_bits < 15) {
       v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_n_bits += 8;
       v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_n_bits += 8;
     } else {
     }
@@ -22626,10 +22626,10 @@
     if ((v_table_entry >> 28) == 1) {
       if (v_n_bits < 15) {
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
       } else {
       }
@@ -22653,10 +22653,10 @@
     v_table_entry_n_bits = ((v_table_entry >> 4) & 15);
     if (v_n_bits < v_table_entry_n_bits) {
       v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_n_bits += 8;
       v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_n_bits += 8;
     }
     v_dist_minus_1 = ((v_dist_minus_1 + ((v_bits) & WUFFS_BASE__LOW_BITS_MASK__U32(v_table_entry_n_bits))) & 32767);
@@ -22698,7 +22698,7 @@
   while (v_n_bits >= 8) {
     v_n_bits -= 8;
     if (iop_a_src > io1_a_src) {
-      (iop_a_src--, wuffs_base__make_empty_struct());
+      iop_a_src--;
     } else {
       status = wuffs_base__make_status(wuffs_deflate__error__internal_error_inconsistent_i_o);
       goto exit;
@@ -23393,14 +23393,14 @@
     if (v_n_bits < v_width) {
       if (((uint64_t)(io2_a_src - iop_a_src)) >= 4) {
         v_bits |= (wuffs_base__peek_u32le__no_bounds_check(iop_a_src) << v_n_bits);
-        (iop_a_src += ((31 - v_n_bits) >> 3), wuffs_base__make_empty_struct());
+        iop_a_src += ((31 - v_n_bits) >> 3);
         v_n_bits |= 24;
       } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) {
         self->private_impl.f_read_from_return_value = 2;
         goto label__0__break;
       } else {
         v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         v_n_bits += 8;
         if (v_n_bits >= v_width) {
         } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) {
@@ -23408,7 +23408,7 @@
           goto label__0__break;
         } else {
           v_bits |= (((uint32_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src))) << v_n_bits);
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           v_n_bits += 8;
           if (v_n_bits < v_width) {
             self->private_impl.f_read_from_return_value = 4;
@@ -23502,7 +23502,7 @@
     while (v_n_bits >= 8) {
       v_n_bits -= 8;
       if (iop_a_src > io1_a_src) {
-        (iop_a_src--, wuffs_base__make_empty_struct());
+        iop_a_src--;
       } else {
         self->private_impl.f_read_from_return_value = 4;
         goto label__2__break;
@@ -24094,13 +24094,13 @@
       label__0__break:;
       v_chunk_length = ((uint64_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src)));
       if (v_chunk_length <= 0) {
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         goto label__1__break;
       }
       if (self->private_impl.f_metadata_fourcc == 1481461792) {
         v_chunk_length += 1;
       } else {
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
       }
       self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add(wuffs_base__u64__sat_add(a_src->meta.pos, ((uint64_t)(iop_a_src - io0_a_src))), v_chunk_length);
       if (a_minfo != NULL) {
@@ -25933,7 +25933,7 @@
           goto label__0__break;
         }
         v_block_size = ((uint64_t)(wuffs_base__peek_u8be__no_bounds_check(iop_a_src)));
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
       }
       label__0__break:;
       label__inner__continue:;
@@ -27240,7 +27240,7 @@
           if (v_class != 0) {
             goto label__ws__break;
           }
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           if (v_whitespace_length >= 65534) {
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(0)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27269,7 +27269,7 @@
               (((uint64_t)(4194579)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           label__string_loop_outer__continue:;
           while (true) {
             if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) {
@@ -27305,7 +27305,7 @@
                     WUFFS_JSON__LUT_CHARS[(255 & (v_c4 >> 24))])) {
                   goto label__0__break;
                 }
-                (iop_a_src += 4, wuffs_base__make_empty_struct());
+                iop_a_src += 4;
                 if (v_string_length > 65527) {
                   *iop_a_dst++ = wuffs_base__make_token(
                       (((uint64_t)(4194819)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27320,7 +27320,7 @@
               v_c = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
               v_char = WUFFS_JSON__LUT_CHARS[v_c];
               if (v_char == 0) {
-                (iop_a_src += 1, wuffs_base__make_empty_struct());
+                iop_a_src += 1;
                 if (v_string_length >= 65531) {
                   *iop_a_dst++ = wuffs_base__make_token(
                       (((uint64_t)(4194819)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27365,7 +27365,7 @@
                 v_c = ((uint8_t)((wuffs_base__peek_u16le__no_bounds_check(iop_a_src) >> 8)));
                 v_backslash = WUFFS_JSON__LUT_BACKSLASHES[v_c];
                 if ((v_backslash & 128) != 0) {
-                  (iop_a_src += 2, wuffs_base__make_empty_struct());
+                  iop_a_src += 2;
                   *iop_a_dst++ = wuffs_base__make_token(
                       (((uint64_t)((6291456 | ((uint32_t)((v_backslash & 127)))))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                       (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27373,7 +27373,7 @@
                   goto label__string_loop_outer__continue;
                 } else if (v_backslash != 0) {
                   if (self->private_impl.f_quirks[WUFFS_JSON__LUT_QUIRKY_BACKSLASHES_QUIRKS[(v_backslash & 7)]]) {
-                    (iop_a_src += 2, wuffs_base__make_empty_struct());
+                    iop_a_src += 2;
                     *iop_a_dst++ = wuffs_base__make_token(
                         (((uint64_t)((6291456 | ((uint32_t)(WUFFS_JSON__LUT_QUIRKY_BACKSLASHES_CHARS[(v_backslash & 7)]))))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                         (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27409,7 +27409,7 @@
                   v_uni4_value |= (((uint32_t)((v_c & 15))) << 0);
                   if (v_uni4_ok == 0) {
                   } else if ((v_uni4_value < 55296) || (57343 < v_uni4_value)) {
-                    (iop_a_src += 6, wuffs_base__make_empty_struct());
+                    iop_a_src += 6;
                     *iop_a_dst++ = wuffs_base__make_token(
                         (((uint64_t)((6291456 | v_uni4_value))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                         (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27420,7 +27420,7 @@
                     if (((uint64_t)(io2_a_src - iop_a_src)) < 12) {
                       if (a_src && a_src->meta.closed) {
                         if (self->private_impl.f_quirks[20]) {
-                          (iop_a_src += 6, wuffs_base__make_empty_struct());
+                          iop_a_src += 6;
                           *iop_a_dst++ = wuffs_base__make_token(
                               (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27462,7 +27462,7 @@
                     }
                     if ((v_uni4_ok != 0) && (56320 <= v_uni4_value) && (v_uni4_value <= 57343)) {
                       v_uni4_value -= 56320;
-                      (iop_a_src += 12, wuffs_base__make_empty_struct());
+                      iop_a_src += 12;
                       *iop_a_dst++ = wuffs_base__make_token(
                           (((uint64_t)((6291456 | v_uni4_high_surrogate | v_uni4_value))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27475,7 +27475,7 @@
                       status = wuffs_base__make_status(wuffs_json__error__internal_error_inconsistent_i_o);
                       goto exit;
                     }
-                    (iop_a_src += 6, wuffs_base__make_empty_struct());
+                    iop_a_src += 6;
                     *iop_a_dst++ = wuffs_base__make_token(
                         (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                         (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27523,14 +27523,14 @@
                   v_uni8_value |= (((uint32_t)((v_c & 15))) << 0);
                   if (v_uni8_ok == 0) {
                   } else if ((v_uni8_value < 55296) || ((57343 < v_uni8_value) && (v_uni8_value <= 1114111))) {
-                    (iop_a_src += 10, wuffs_base__make_empty_struct());
+                    iop_a_src += 10;
                     *iop_a_dst++ = wuffs_base__make_token(
                         (((uint64_t)((6291456 | (v_uni8_value & 2097151)))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                         (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
                         (((uint64_t)(10)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
                     goto label__string_loop_outer__continue;
                   } else if (self->private_impl.f_quirks[20]) {
-                    (iop_a_src += 10, wuffs_base__make_empty_struct());
+                    iop_a_src += 10;
                     *iop_a_dst++ = wuffs_base__make_token(
                         (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                         (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27561,7 +27561,7 @@
                     status = wuffs_base__make_status(wuffs_json__error__bad_backslash_escape);
                     goto exit;
                   }
-                  (iop_a_src += 4, wuffs_base__make_empty_struct());
+                  iop_a_src += 4;
                   *iop_a_dst++ = wuffs_base__make_token(
                       (((uint64_t)((6291456 | ((uint32_t)(v_backslash_x_value))))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                       (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
@@ -27588,7 +27588,7 @@
                           (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-                      (iop_a_src += 1, wuffs_base__make_empty_struct());
+                      iop_a_src += 1;
                       goto label__string_loop_outer__continue;
                     }
                     status = wuffs_base__make_status(wuffs_json__error__bad_utf_8);
@@ -27603,7 +27603,7 @@
                 v_multi_byte_utf8 = ((uint32_t)(wuffs_base__peek_u16le__no_bounds_check(iop_a_src)));
                 if ((v_multi_byte_utf8 & 49152) == 32768) {
                   v_multi_byte_utf8 = ((1984 & (v_multi_byte_utf8 << 6)) | (63 & (v_multi_byte_utf8 >> 8)));
-                  (iop_a_src += 2, wuffs_base__make_empty_struct());
+                  iop_a_src += 2;
                   if (v_string_length >= 65528) {
                     *iop_a_dst++ = wuffs_base__make_token(
                         (((uint64_t)(4194819)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27633,7 +27633,7 @@
                           (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-                      (iop_a_src += 1, wuffs_base__make_empty_struct());
+                      iop_a_src += 1;
                       goto label__string_loop_outer__continue;
                     }
                     status = wuffs_base__make_status(wuffs_json__error__bad_utf_8);
@@ -27649,7 +27649,7 @@
                 if ((v_multi_byte_utf8 & 12632064) == 8421376) {
                   v_multi_byte_utf8 = ((61440 & (v_multi_byte_utf8 << 12)) | (4032 & (v_multi_byte_utf8 >> 2)) | (63 & (v_multi_byte_utf8 >> 16)));
                   if ((2047 < v_multi_byte_utf8) && ((v_multi_byte_utf8 < 55296) || (57343 < v_multi_byte_utf8))) {
-                    (iop_a_src += 3, wuffs_base__make_empty_struct());
+                    iop_a_src += 3;
                     if (v_string_length >= 65528) {
                       *iop_a_dst++ = wuffs_base__make_token(
                           (((uint64_t)(4194819)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27680,7 +27680,7 @@
                           (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
                           (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-                      (iop_a_src += 1, wuffs_base__make_empty_struct());
+                      iop_a_src += 1;
                       goto label__string_loop_outer__continue;
                     }
                     status = wuffs_base__make_status(wuffs_json__error__bad_utf_8);
@@ -27699,7 +27699,7 @@
                       (4032 & (v_multi_byte_utf8 >> 10)) |
                       (63 & (v_multi_byte_utf8 >> 24)));
                   if ((65535 < v_multi_byte_utf8) && (v_multi_byte_utf8 <= 1114111)) {
-                    (iop_a_src += 4, wuffs_base__make_empty_struct());
+                    iop_a_src += 4;
                     if (v_string_length >= 65528) {
                       *iop_a_dst++ = wuffs_base__make_token(
                           (((uint64_t)(4194819)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27729,7 +27729,7 @@
                       (((uint64_t)((6291456 | ((uint32_t)((v_char & 127)))))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                       (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
                       (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-                  (iop_a_src += 1, wuffs_base__make_empty_struct());
+                  iop_a_src += 1;
                   goto label__string_loop_outer__continue;
                 }
                 if (v_char == 138) {
@@ -27744,7 +27744,7 @@
                     (((uint64_t)(6356989)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                     (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
                     (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-                (iop_a_src += 1, wuffs_base__make_empty_struct());
+                iop_a_src += 1;
                 goto label__string_loop_outer__continue;
               }
               status = wuffs_base__make_status(wuffs_json__error__bad_utf_8);
@@ -27768,7 +27768,7 @@
               WUFFS_BASE__COROUTINE_SUSPENSION_POINT_MAYBE_SUSPEND(15);
               goto label__1__continue;
             }
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(4194579)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                 (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -27781,7 +27781,7 @@
           }
           goto label__goto_parsed_a_leaf_value__break;
         } else if (v_class == 2) {
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           *iop_a_dst++ = wuffs_base__make_token(
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -27800,7 +27800,7 @@
           }
           goto label__outer__continue;
         } else if (v_class == 3) {
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           *iop_a_dst++ = wuffs_base__make_token(
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -27830,7 +27830,7 @@
             while (v_number_length > 0) {
               v_number_length -= 1;
               if (iop_a_src > io1_a_src) {
-                (iop_a_src--, wuffs_base__make_empty_struct());
+                iop_a_src--;
               } else {
                 status = wuffs_base__make_status(wuffs_json__error__internal_error_inconsistent_i_o);
                 goto exit;
@@ -27889,7 +27889,7 @@
           v_stack_bit = (v_depth & 31);
           self->private_data.f_stack[v_stack_byte] |= (((uint32_t)(1)) << v_stack_bit);
           v_depth += 1;
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           *iop_a_dst++ = wuffs_base__make_token(
               (((uint64_t)(v_vminor)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -27897,7 +27897,7 @@
           v_expect_after_value = 4164;
           goto label__outer__continue;
         } else if (v_class == 6) {
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           if (v_depth <= 1) {
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(2101314)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27937,7 +27937,7 @@
           v_stack_bit = (v_depth & 31);
           self->private_data.f_stack[v_stack_byte] &= (4294967295 ^ (((uint32_t)(1)) << v_stack_bit));
           v_depth += 1;
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           *iop_a_dst++ = wuffs_base__make_token(
               (((uint64_t)(v_vminor)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
               (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -27945,7 +27945,7 @@
           v_expect_after_value = 4356;
           goto label__outer__continue;
         } else if (v_class == 8) {
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           if (v_depth <= 1) {
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(2101282)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -27979,7 +27979,7 @@
               status = wuffs_base__make_status(wuffs_json__error__internal_error_inconsistent_i_o);
               goto exit;
             }
-            (iop_a_src += 5, wuffs_base__make_empty_struct());
+            iop_a_src += 5;
             goto label__goto_parsed_a_leaf_value__break;
           } else if (v_match == 1) {
             status = wuffs_base__make_status(wuffs_base__suspension__short_read);
@@ -27996,7 +27996,7 @@
               status = wuffs_base__make_status(wuffs_json__error__internal_error_inconsistent_i_o);
               goto exit;
             }
-            (iop_a_src += 4, wuffs_base__make_empty_struct());
+            iop_a_src += 4;
             goto label__goto_parsed_a_leaf_value__break;
           } else if (v_match == 1) {
             status = wuffs_base__make_status(wuffs_base__suspension__short_read);
@@ -28013,7 +28013,7 @@
               status = wuffs_base__make_status(wuffs_json__error__internal_error_inconsistent_i_o);
               goto exit;
             }
-            (iop_a_src += 4, wuffs_base__make_empty_struct());
+            iop_a_src += 4;
             goto label__goto_parsed_a_leaf_value__break;
           } else if (v_match == 1) {
             status = wuffs_base__make_status(wuffs_base__suspension__short_read);
@@ -28157,7 +28157,7 @@
     if (v_c != 45) {
     } else {
       v_n += 1;
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) {
         if ( ! (a_src && a_src->meta.closed)) {
           v_n |= 768;
@@ -28169,7 +28169,7 @@
     }
     if (v_c == 48) {
       v_n += 1;
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
     } else {
       if (a_src) {
         a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr));
@@ -28196,7 +28196,7 @@
         goto label__goto_done__break;
       }
       v_n += 1;
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
       v_floating_point = 128;
       if (a_src) {
         a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr));
@@ -28224,7 +28224,7 @@
       goto label__goto_done__break;
     }
     v_n += 1;
-    (iop_a_src += 1, wuffs_base__make_empty_struct());
+    iop_a_src += 1;
     v_floating_point = 128;
     if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) {
       if ( ! (a_src && a_src->meta.closed)) {
@@ -28241,7 +28241,7 @@
         goto label__goto_done__break;
       }
       v_n += 1;
-      (iop_a_src += 1, wuffs_base__make_empty_struct());
+      iop_a_src += 1;
     }
     if (a_src) {
       a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr));
@@ -28297,7 +28297,7 @@
       goto label__0__break;
     }
     v_n += 1;
-    (iop_a_src += 1, wuffs_base__make_empty_struct());
+    iop_a_src += 1;
   }
   label__0__break:;
   if (v_n == a_n) {
@@ -28369,7 +28369,7 @@
       v_c = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
       if ((v_c == 30) && self->private_impl.f_allow_leading_ars) {
         self->private_impl.f_allow_leading_ars = false;
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         *iop_a_dst++ = wuffs_base__make_token(
             (((uint64_t)(0)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
             (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -28386,7 +28386,7 @@
         v_u = ((uint32_t)(wuffs_base__peek_u24le__no_bounds_check(iop_a_src)));
         if (v_u == 12565487) {
           self->private_impl.f_allow_leading_ubom = false;
-          (iop_a_src += 3, wuffs_base__make_empty_struct());
+          iop_a_src += 3;
           *iop_a_dst++ = wuffs_base__make_token(
               (((uint64_t)(0)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
               (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -28477,7 +28477,7 @@
     }
     v_c2 = wuffs_base__peek_u16le__no_bounds_check(iop_a_src);
     if ((v_c2 == 10799) && self->private_impl.f_quirks[11]) {
-      (iop_a_src += 2, wuffs_base__make_empty_struct());
+      iop_a_src += 2;
       v_length = 2;
       label__comment_block__continue:;
       while (true) {
@@ -28506,7 +28506,7 @@
           }
           v_c2 = wuffs_base__peek_u16le__no_bounds_check(iop_a_src);
           if (v_c2 == 12074) {
-            (iop_a_src += 2, wuffs_base__make_empty_struct());
+            iop_a_src += 2;
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(2)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                 (((uint64_t)((v_length + 2))) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -28514,7 +28514,7 @@
             status = wuffs_base__make_status(NULL);
             goto ok;
           }
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           if (v_length >= 65533) {
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(2)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -28527,7 +28527,7 @@
         }
       }
     } else if ((v_c2 == 12079) && self->private_impl.f_quirks[12]) {
-      (iop_a_src += 2, wuffs_base__make_empty_struct());
+      iop_a_src += 2;
       v_length = 2;
       label__comment_line__continue:;
       while (true) {
@@ -28556,7 +28556,7 @@
           }
           v_c = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
           if (v_c == 10) {
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(4)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                 (((uint64_t)((v_length + 1))) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
@@ -28564,7 +28564,7 @@
             status = wuffs_base__make_status(NULL);
             goto ok;
           }
-          (iop_a_src += 1, wuffs_base__make_empty_struct());
+          iop_a_src += 1;
           if (v_length >= 65533) {
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(4)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -28666,7 +28666,7 @@
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)(10485792)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                 (((uint64_t)(8)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-            (iop_a_src += 8, wuffs_base__make_empty_struct());
+            iop_a_src += 8;
             status = wuffs_base__make_status(NULL);
             goto ok;
           }
@@ -28678,14 +28678,14 @@
         *iop_a_dst++ = wuffs_base__make_token(
             (((uint64_t)(10485792)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
             (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-        (iop_a_src += 3, wuffs_base__make_empty_struct());
+        iop_a_src += 3;
         status = wuffs_base__make_status(NULL);
         goto ok;
       } else if ((v_c4 | 2105376) == 7233902) {
         *iop_a_dst++ = wuffs_base__make_token(
             (((uint64_t)(10485888)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
             (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-        (iop_a_src += 3, wuffs_base__make_empty_struct());
+        iop_a_src += 3;
         status = wuffs_base__make_status(NULL);
         goto ok;
       } else if ((v_c4 & 255) == 43) {
@@ -28712,7 +28712,7 @@
             *iop_a_dst++ = wuffs_base__make_token(
                 (((uint64_t)((10485760 | (((uint32_t)(32)) >> v_neg)))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
                 (((uint64_t)(9)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-            (iop_a_src += 9, wuffs_base__make_empty_struct());
+            iop_a_src += 9;
             status = wuffs_base__make_status(NULL);
             goto ok;
           }
@@ -28724,14 +28724,14 @@
         *iop_a_dst++ = wuffs_base__make_token(
             (((uint64_t)((10485760 | (((uint32_t)(32)) >> v_neg)))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
             (((uint64_t)(4)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-        (iop_a_src += 4, wuffs_base__make_empty_struct());
+        iop_a_src += 4;
         status = wuffs_base__make_status(NULL);
         goto ok;
       } else if ((v_c4 | 2105376) == 7233902) {
         *iop_a_dst++ = wuffs_base__make_token(
             (((uint64_t)((10485760 | (((uint32_t)(128)) >> v_neg)))) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
             (((uint64_t)(4)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
-        (iop_a_src += 4, wuffs_base__make_empty_struct());
+        iop_a_src += 4;
         status = wuffs_base__make_status(NULL);
         goto ok;
       }
@@ -28868,7 +28868,7 @@
           status = wuffs_base__make_status(NULL);
           goto ok;
         }
-        (iop_a_src += 1, wuffs_base__make_empty_struct());
+        iop_a_src += 1;
         if ((v_whitespace_length >= 65534) || (v_c == self->private_impl.f_trailer_stop)) {
           *iop_a_dst++ = wuffs_base__make_token(
               (((uint64_t)(0)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
@@ -31104,10 +31104,10 @@
     v_c.len = 4;
     uint8_t* i_end0_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 4) * 4);
     while (v_c.ptr < i_end0_c) {
-      (v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr))), wuffs_base__make_empty_struct());
+      v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr)));
       v_x128 = _mm_add_epi8(v_x128, v_a128);
       v_a128 = v_x128;
-      (wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128)))), wuffs_base__make_empty_struct());
+      wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128))));
       v_c.ptr += 4;
     }
     v_c.len = 0;
@@ -31144,10 +31144,10 @@
       uint8_t* i_end0_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 4) * 4);
       while (v_c.ptr < i_end0_c) {
         v_p128 = _mm_avg_epu8(_mm_and_si128(v_a128, v_k128), v_b128);
-        (v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr))), wuffs_base__make_empty_struct());
+        v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr)));
         v_x128 = _mm_add_epi8(v_x128, v_p128);
         v_a128 = v_x128;
-        (wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128)))), wuffs_base__make_empty_struct());
+        wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128))));
         v_c.ptr += 4;
       }
       v_c.len = 0;
@@ -31164,13 +31164,13 @@
       v_p.len = 4;
       uint8_t* i_end0_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 4) * 4);
       while (v_c.ptr < i_end0_c) {
-        (v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_p.ptr))), wuffs_base__make_empty_struct());
+        v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_p.ptr)));
         v_p128 = _mm_avg_epu8(v_a128, v_b128);
         v_p128 = _mm_sub_epi8(v_p128, _mm_and_si128(v_k128, _mm_xor_si128(v_a128, v_b128)));
-        (v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr))), wuffs_base__make_empty_struct());
+        v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr)));
         v_x128 = _mm_add_epi8(v_x128, v_p128);
         v_a128 = v_x128;
-        (wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128)))), wuffs_base__make_empty_struct());
+        wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128))));
         v_c.ptr += 4;
         v_p.ptr += 4;
       }
@@ -31216,7 +31216,7 @@
     v_p.len = 4;
     uint8_t* i_end0_c = v_c.ptr + wuffs_base__iterate_total_advance((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)), 4, 3);
     while (v_c.ptr < i_end0_c) {
-      (v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_p.ptr))), wuffs_base__make_empty_struct());
+      v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_p.ptr)));
       v_b128 = _mm_unpacklo_epi8(v_b128, v_z128);
       v_pa128 = _mm_sub_epi16(v_b128, v_c128);
       v_pb128 = _mm_sub_epi16(v_a128, v_c128);
@@ -31226,13 +31226,13 @@
       v_pc128 = _mm_abs_epi16(v_pc128);
       v_smallest128 = _mm_min_epi16(v_pc128, _mm_min_epi16(v_pb128, v_pa128));
       v_p128 = _mm_blendv_epi8(_mm_blendv_epi8(v_c128, v_b128, _mm_cmpeq_epi16(v_smallest128, v_pb128)), v_a128, _mm_cmpeq_epi16(v_smallest128, v_pa128));
-      (v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr))), wuffs_base__make_empty_struct());
+      v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr)));
       v_x128 = _mm_unpacklo_epi8(v_x128, v_z128);
       v_x128 = _mm_add_epi8(v_x128, v_p128);
       v_a128 = v_x128;
       v_c128 = v_b128;
       v_x128 = _mm_packus_epi16(v_x128, v_x128);
-      (wuffs_base__poke_u24le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128)))), wuffs_base__make_empty_struct());
+      wuffs_base__poke_u24le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128))));
       v_c.ptr += 3;
       v_p.ptr += 3;
     }
@@ -31240,7 +31240,7 @@
     v_p.len = 3;
     uint8_t* i_end1_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 3) * 3);
     while (v_c.ptr < i_end1_c) {
-      (v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u24le__no_bounds_check(v_p.ptr))), wuffs_base__make_empty_struct());
+      v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u24le__no_bounds_check(v_p.ptr)));
       v_b128 = _mm_unpacklo_epi8(v_b128, v_z128);
       v_pa128 = _mm_sub_epi16(v_b128, v_c128);
       v_pb128 = _mm_sub_epi16(v_a128, v_c128);
@@ -31250,11 +31250,11 @@
       v_pc128 = _mm_abs_epi16(v_pc128);
       v_smallest128 = _mm_min_epi16(v_pc128, _mm_min_epi16(v_pb128, v_pa128));
       v_p128 = _mm_blendv_epi8(_mm_blendv_epi8(v_c128, v_b128, _mm_cmpeq_epi16(v_smallest128, v_pb128)), v_a128, _mm_cmpeq_epi16(v_smallest128, v_pa128));
-      (v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u24le__no_bounds_check(v_c.ptr))), wuffs_base__make_empty_struct());
+      v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u24le__no_bounds_check(v_c.ptr)));
       v_x128 = _mm_unpacklo_epi8(v_x128, v_z128);
       v_x128 = _mm_add_epi8(v_x128, v_p128);
       v_x128 = _mm_packus_epi16(v_x128, v_x128);
-      (wuffs_base__poke_u24le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128)))), wuffs_base__make_empty_struct());
+      wuffs_base__poke_u24le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128))));
       v_c.ptr += 3;
       v_p.ptr += 3;
     }
@@ -31299,7 +31299,7 @@
     v_p.len = 4;
     uint8_t* i_end0_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 4) * 4);
     while (v_c.ptr < i_end0_c) {
-      (v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_p.ptr))), wuffs_base__make_empty_struct());
+      v_b128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_p.ptr)));
       v_b128 = _mm_unpacklo_epi8(v_b128, v_z128);
       v_pa128 = _mm_sub_epi16(v_b128, v_c128);
       v_pb128 = _mm_sub_epi16(v_a128, v_c128);
@@ -31309,13 +31309,13 @@
       v_pc128 = _mm_abs_epi16(v_pc128);
       v_smallest128 = _mm_min_epi16(v_pc128, _mm_min_epi16(v_pb128, v_pa128));
       v_p128 = _mm_blendv_epi8(_mm_blendv_epi8(v_c128, v_b128, _mm_cmpeq_epi16(v_smallest128, v_pb128)), v_a128, _mm_cmpeq_epi16(v_smallest128, v_pa128));
-      (v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr))), wuffs_base__make_empty_struct());
+      v_x128 = _mm_cvtsi32_si128((int)(wuffs_base__peek_u32le__no_bounds_check(v_c.ptr)));
       v_x128 = _mm_unpacklo_epi8(v_x128, v_z128);
       v_x128 = _mm_add_epi8(v_x128, v_p128);
       v_a128 = v_x128;
       v_c128 = v_b128;
       v_x128 = _mm_packus_epi16(v_x128, v_x128);
-      (wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128)))), wuffs_base__make_empty_struct());
+      wuffs_base__poke_u32le__no_bounds_check(v_c.ptr, ((uint32_t)(_mm_cvtsi128_si32(v_x128))));
       v_c.ptr += 4;
       v_p.ptr += 4;
     }
@@ -33364,7 +33364,7 @@
               }
             }
             v_c = wuffs_base__peek_u8be__no_bounds_check(iop_a_src);
-            (iop_a_src += 1, wuffs_base__make_empty_struct());
+            iop_a_src += 1;
           }
           if ((v_c & 128) == 0) {
             v_src[0] = 0;