@@ -91,7 +91,7 @@ convertObjectToLoadableBridgeableType(SILBuilderWithScope &builder,
9191 bool isConditional = dynamicCast.isConditional ();
9292
9393 SILValue load =
94- builder.createLoad (loc, src, LoadOwnershipQualifier::Unqualified );
94+ builder.emitLoadValueOperation (loc, src, LoadOwnershipQualifier::Take );
9595
9696 SILType silBridgedTy = *dynamicCast.getLoweredBridgedTargetObjectType ();
9797
@@ -295,25 +295,25 @@ CastOptimizer::optimizeBridgedObjCToSwiftCast(SILDynamicCastInst dynamicCast) {
295295 }
296296
297297 // Emit a retain.
298- Builder.createRetainValue (Loc, srcOp, Builder. getDefaultAtomicity () );
298+ SILValue srcArg = Builder.emitCopyValueOperation (Loc, srcOp);
299299
300300 SmallVector<SILValue, 1 > Args;
301301 Args.push_back (InOutOptionalParam);
302- Args.push_back (srcOp );
302+ Args.push_back (srcArg );
303303 Args.push_back (MetaTyVal);
304304
305305 auto *AI = Builder.createApply (Loc, funcRef, subMap, Args);
306306
307307 // If we have guaranteed normal arguments, insert the destroy.
308308 //
309309 // TODO: Is it safe to just eliminate the initial retain?
310- Builder.createReleaseValue (Loc, srcOp, Builder. getDefaultAtomicity () );
310+ Builder.emitDestroyValueOperation (Loc, srcArg );
311311
312312 // If we have an unconditional_checked_cast_addr, return early. We do not need
313313 // to handle any conditional code.
314314 if (isa<UnconditionalCheckedCastAddrInst>(Inst)) {
315315 // Destroy the source value as unconditional_checked_cast_addr would.
316- Builder.createReleaseValue (Loc, srcOp, Builder. getDefaultAtomicity () );
316+ Builder.emitDestroyValueOperation (Loc, srcOp);
317317 eraseInstAction (Inst);
318318 return (newI) ? newI : AI;
319319 }
0 commit comments