mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
What this does is really split the one dataflow we are performing into two dataflows we perform at the same time. The first dataflow is the region dataflow that we already have with transferring never occurring. The second dataflow is a simple gen/kill dataflow where we gen on a transfer instruction and kill on AssignFresh. What it tracks are regions where a specific element is transferred and propagates the region until the element is given a new value. This of course means that once the dataflow has converged, we have to emit an error not if the value was transferred, but if any value in its region was transferred.
34 lines
1.3 KiB
C++
34 lines
1.3 KiB
C++
//===--- PartitionUtils.cpp -----------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "swift/SILOptimizer/Utils/PartitionUtils.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// MARK: Logging
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef NDEBUG
|
|
|
|
bool swift::PartitionPrimitives::REGIONBASEDISOLATION_ENABLE_VERBOSE_LOGGING;
|
|
|
|
static llvm::cl::opt<bool, true> // The parser
|
|
RegionBasedIsolationVerboseLog(
|
|
"sil-regionbasedisolation-verbose-log",
|
|
llvm::cl::desc("Enable verbose logging for SIL region based isolation "
|
|
"diagnostics"),
|
|
llvm::cl::Hidden,
|
|
llvm::cl::location(swift::PartitionPrimitives::
|
|
REGIONBASEDISOLATION_ENABLE_VERBOSE_LOGGING));
|
|
|
|
#endif
|