Skip to content

Commit 2bfa723

Browse files
committed
[MoveOnlyAddressChecker] Added extension flag.
Passing ``` -Xllvm -move-only-address-checker-disable-lifetime-extension=true ``` will skip the maximization of unconsumed field lifetimes.
1 parent 11443f2 commit 2bfa723

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

lib/SILOptimizer/Mandatory/MoveOnlyAddressCheckerUtils.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,12 @@
280280
using namespace swift;
281281
using namespace swift::siloptimizer;
282282

283+
llvm::cl::opt<bool> DisableMoveOnlyAddressCheckerLifetimeExtension(
284+
"move-only-address-checker-disable-lifetime-extension",
285+
llvm::cl::init(false),
286+
llvm::cl::desc("Disable the lifetime extension of non-consumed fields of "
287+
"move-only values."));
288+
283289
//===----------------------------------------------------------------------===//
284290
// MARK: Memory Utilities
285291
//===----------------------------------------------------------------------===//
@@ -3181,8 +3187,10 @@ bool MoveOnlyAddressCheckerPImpl::performSingleCheck(
31813187

31823188
FieldSensitivePrunedLivenessBoundary boundary(liveness.getNumSubElements());
31833189
liveness.computeBoundary(boundary);
3184-
ExtendUnconsumedLiveness extension(addressUseState, liveness, boundary);
3185-
extension.run();
3190+
if (!DisableMoveOnlyAddressCheckerLifetimeExtension) {
3191+
ExtendUnconsumedLiveness extension(addressUseState, liveness, boundary);
3192+
extension.run();
3193+
}
31863194
boundary.clear();
31873195
liveness.computeBoundary(boundary);
31883196
insertDestroysOnBoundary(markedAddress, liveness, boundary);

0 commit comments

Comments
 (0)