   // CHECK:         [[DEST_PAYLOAD:%.*]] = init_enum_data_addr %0 : $*Optional<AddressOnlyStruct>, #Optional.Some
   // CHECK:         copy_addr [[SELF_MARKED]] to [initialization] [[DEST_PAYLOAD]]
   // CHECK:         inject_enum_addr %0 : $*Optional<AddressOnlyStruct>, #Optional.Some
+  // CHECK:         strong_release [[SELF_BOX]]
   // CHECK:         br [[EXIT:bb[0-9]+]]
 
   // CHECK:       [[FAILURE]]:
+  // CHECK:         strong_release [[SELF_BOX]]
   // CHECK:         inject_enum_addr %0 : $*Optional<AddressOnlyStruct>, #Optional.None!enumelt
   // CHECK:         br [[EXIT]]
   // CHECK:       [[EXIT]]:

  // CHECK:         [[DEST_PAYLOAD:%.*]] = init_enum_data_addr %0 : $*ImplicitlyUnwrappedOptional<AddressOnlyStruct>, #ImplicitlyUnwrappedOptional.Some
  // CHECK:         copy_addr [[SELF_MARKED]] to [initialization] [[DEST_PAYLOAD]]
  // CHECK:         inject_enum_addr %0 : $*ImplicitlyUnwrappedOptional<AddressOnlyStruct>, #ImplicitlyUnwrappedOptional.Some

  // CHECK:       [[FAILURE]]:
  // CHECK:         inject_enum_addr %0 : $*ImplicitlyUnwrappedOptional<AddressOnlyStruct>, #ImplicitlyUnwrappedOptional.None!enumelt
  // CHECK:         br [[EXIT:bb[0-9]+]]
  }

  // CHECK:         cond_br [[HAS_VALUE]], [[DOES_HAVE_VALUE:bb[0-9]+]], [[DOESNT_HAVE_VALUE:bb[0-9]+]]
  // -- TODO: failure
  // CHECK:       [[DOESNT_HAVE_VALUE]]:
  // CHECK:         destroy_addr [[DELEGATEE_SELF_MAT]]
  // CHECK:         dealloc_stack [[DELEGATEE_SELF_MAT]]
  // CHECK:         br [[FAILURE:bb[0-9]+]]
