@@ -254,6 +254,8 @@ entry(%u : $*Singleton):
254254 switch_enum_addr %u : $*Singleton, case #Singleton.value!enumelt: dest
255255dest:
256256 %u2 = unchecked_take_enum_data_addr %u : $*Singleton, #Singleton.value!enumelt
257+ // Use u2 so it's not optimized away.
258+ copy_addr %u2 to undef : $*(Builtin.Int64, Builtin.Int64)
257259 %x = tuple ()
258260 return %x : $()
259261}
@@ -979,6 +981,7 @@ entry(%u : $*SinglePayloadSpareBit):
979981// CHECK-64: [[DATA_ADDR:%.*]] = bitcast %T4enum21SinglePayloadSpareBitO* %0 to i63*
980982x_dest:
981983 %u2 = unchecked_take_enum_data_addr %u : $*SinglePayloadSpareBit, #SinglePayloadSpareBit.x!enumelt
984+ copy_addr %u2 to undef : $*Builtin.Int63
982985 %a = function_ref @a : $@convention(thin) () -> ()
983986 apply %a() : $@convention(thin) () -> ()
984987 br end
@@ -1489,14 +1492,20 @@ entry(%u : $*MultiPayloadNoSpareBits):
14891492
14901493x_dest:
14911494 %x = unchecked_take_enum_data_addr %u : $*MultiPayloadNoSpareBits, #MultiPayloadNoSpareBits.x!enumelt
1495+ // Dummy use of %x so it's not optimized away.
1496+ copy_addr %x to undef : $*Builtin.Int64
14921497 br end
14931498
14941499y_dest:
14951500 %y = unchecked_take_enum_data_addr %u : $*MultiPayloadNoSpareBits, #MultiPayloadNoSpareBits.y!enumelt
1501+ // Dummy use of %y so it's not optimized away.
1502+ copy_addr %y to undef : $*Builtin.Int32
14961503 br end
14971504
14981505z_dest:
14991506 %z = unchecked_take_enum_data_addr %u : $*MultiPayloadNoSpareBits, #MultiPayloadNoSpareBits.z!enumelt
1507+ // Dummy use of %z so it's not optimized away.
1508+ copy_addr %z to undef : $*Builtin.Int63
15001509 br end
15011510
15021511a_dest:
@@ -1742,14 +1751,20 @@ entry(%u : $*MultiPayloadOneSpareBit):
17421751
17431752x_dest:
17441753 %x = unchecked_take_enum_data_addr %u : $*MultiPayloadOneSpareBit, #MultiPayloadOneSpareBit.x!enumelt
1754+ // Dummy use of %x so it's not optimized away.
1755+ copy_addr %x to undef : $*Builtin.Int62
17451756 br end
17461757
17471758y_dest:
17481759 %y = unchecked_take_enum_data_addr %u : $*MultiPayloadOneSpareBit, #MultiPayloadOneSpareBit.y!enumelt
1760+ // Dummy use of %y so it's not optimized away.
1761+ copy_addr %y to undef : $*Builtin.Int63
17491762 br end
17501763
17511764z_dest:
17521765 %z = unchecked_take_enum_data_addr %u : $*MultiPayloadOneSpareBit, #MultiPayloadOneSpareBit.z!enumelt
1766+ // Dummy use of %z so it's not optimized away.
1767+ copy_addr %z to undef : $*Builtin.Int61
17531768 br end
17541769
17551770a_dest:
@@ -2441,6 +2456,8 @@ entry(%0 : $*DynamicSingleton<T>):
24412456
24422457dest:
24432458 %1 = unchecked_take_enum_data_addr %0 : $*DynamicSingleton<T>, #DynamicSingleton.value!enumelt
2459+ // Dummy use of %1 so it's not optimized away.
2460+ copy_addr %1 to undef : $*T
24442461 %v = tuple ()
24452462 return %v : $()
24462463}
@@ -2521,6 +2538,8 @@ entry(%x : $Int32):
25212538 // CHECK-64: [[INT_SHR:%.*]] = lshr i64 [[INT_SHL]], 32
25222539 // CHECK-64: [[INT:%.*]] = trunc i64 [[INT_SHR]] to i32
25232540 %e = unchecked_enum_data %d : $Optional<(Optional<()>, Int32)>, #Optional.some!enumelt
2541+ // Use %e so it's not optimized away.
2542+ store %e to undef : $*(Optional<()>, Int32)
25242543 return %d : $Optional<(Optional<()>, Int32)>
25252544}
25262545
0 commit comments