Thanks both!
Looking again at the IR, I wonder if it is control related. This is the well-behaved IR, where both instances of the Int32AddWithOverflow have a control input.
--- BLOCK B1145 id5053 <- B1143, B1144 ---
43: Merge(42, 13024)
53: Phi[kRepWord32](18, 13025, 43)
52: Phi[kRepWord32](17, 13021, 43)
51: EffectPhi(15, 13024, 43)
13034: ChangeInt32ToFloat64(53)
6670: Load[kRepTaggedPointer|kTypeAny](6114, 23562, 51, 43)
13026: Int32AddWithOverflow(53, 53, 43)
13027: Projection[1](13026, 43)
13028: Branch[Machine, False](13027, 43) -> B1147, B1146
--- BLOCK B1158 id5027 <- B1157, B1153 ---
13061: Merge(13054, 13044)
13063: Phi[kRepFloat64](13056, 13060, 13061)
13062: EffectPhi(13056, 78, 13061)
6672: Load[kRepTaggedPointer|kTypeAny](6111, 23562, 13062, 13061)
13068: Int32AddWithOverflow(53, 53, 13061)
13069: Projection[1](13068, 13061)
13070: Branch[Machine, False](13069, 13061) -> B1160, B1159
However, with Turboshaft, the blocks look like this:
--- BLOCK B1145 id1146 <- B1143, B1144 ---
5473: Phi[kRepWord32](5449, 5470)
5474: Phi[kRepWord32](5450, 5466)
5475: Int64Constant[19]
5476: Load[kRepTaggedPointer|kTypeAny](28, 5475)
5477: TypedStateValues[kRepTagged|kTypeAny, sparse:^](3)
5478: TypedStateValues[kRepWord32|kTypeInt32, kRepWord32|kTypeInt32, sparse:^^](5474, 5473)
5479: TypedStateValues[, sparse:..]
5480: TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, kRepTagged|kTypeAny, sparse:^^^^^...](5478, 5479, 27, 26, 25)
5481: TypedStateValues[, sparse:.]
5482: FrameState[UNOPTIMIZED_FRAME, 59, PokeAt(0), 0x191e0015eab5 <SharedFunctionInfo test_div>](5477, 5480, 5481, 2, 8, 0)
5483: Int32AddWithOverflow(5473, 5473)
5484: Projection[0](5483)
5485: Projection[1](5483)
5486: Branch[Unspecified, False](5485) -> B1147, B1146
--- BLOCK B1158 id1159 <- B1153, B1157 ---
5549: Phi[kRepFloat64](5534, 5548)
5550: Float64RoundDown(5549)
5551: Int64Constant[19]
5552: Load[kRepTaggedPointer|kTypeAny](27, 5551)
5553: TypedStateValues[kRepTagged|kTypeAny, sparse:^](3)
5554: TypedStateValues[kRepWord32|kTypeInt32, kRepWord32|kTypeInt32, sparse:^^](5474, 5473)
5555: TypedStateValues[, sparse:..]
5556: TypedStateValues[kRepTagged|kTypeAny, kRepTagged|kTypeAny, sparse:^^......](5554, 5555)
5557: TypedStateValues[, sparse:.]
5558: FrameState[UNOPTIMIZED_FRAME, 92, PokeAt(0), 0x191e0015eab5 <SharedFunctionInfo test_div>](5553, 5556, 5557, 2, 8, 0)
5559: Branch[Unspecified, False](5485) -> B1160, B1159