Commit c336f3a
committed
[region-isolation] Track transferring separately from region information.
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.1 parent b760fec commit c336f3a
File tree
4 files changed
+348
-199
lines changed- include/swift/SILOptimizer/Utils
- lib/SILOptimizer
- Mandatory
- Utils
- unittests/SILOptimizer
4 files changed
+348
-199
lines changed
0 commit comments