Before the change the RCIdentityAnalysis kept a single map that contained
the module's RC information. When function passes needed to invalidate the
analysis they had to clear the RC information for the entire module. The
problem was mitigated by the fact that we process one function at a time, and
we start processing a new function less frequently.
II adopted the DominanceAnalysis structure. We should probably implement
this functionality as CRTP.
Swift SVN r26636
optimizer freezing releases in the epilogue of functions that match to
SILArguments. This allows us to treat all such SILArguments throughout the
entire function as having a post dominating release.
<rdar://problem/18923030>
Swift SVN r23253
Currently, the pass just calls a local version of that function. After OzU, I
will enable the full pass (which is currently disabled behind a flag).
Swift SVN r21894
These trap BBs are pattern matched very strictly, i.e. only BBs of the
following form are matched:
bbN:
%_ = builtin_function_ref "int_trap"
apply %_
unreachable
Such BBs can be ignored safely for ARC purposes. This allows us to
handle -O3 code in the ARC optimizer significantly more effectively by
enabling us to handle many more types of check failures.
For instance we can now remove retains, releases in the following code:
bb0:
strong_retain %0
cond_br _, bb1, bb2
bb1:
strong_release %0
...
bb2:
%_ = builtin_function_ref "int_trap"
apply %_
unreachable
rdar://17212610
Swift SVN r18817
GlobalARCSequenceDataflow. Add in the code to implement the bottom up
dataflow, but don't wire it up. Pass in the refactored top down dataflow
to the old pairing pass so we still give correct results.
The next step is to change the pairing analysis to use both the bottom
up and top down dataflow passes.
rdar://16965332
Swift SVN r18551