Commit Graph

8 Commits

Author SHA1 Message Date
Nadav Rotem
d78b376d07 [passes] Replace the old invalidation lattice with a new invalidation scheme.
The old invalidation lattice was incorrect because changes to control flow could cause changes to the
call graph, so we've decided to change the way passes invalidate analysis.  In the new scheme, the lattice
is replaced with a list of traits that passes preserve or invalidate. The current traits are Calls and Branches.
Now, passes report which traits they preserve, which is the opposite of the previous implementation where
passes needed to report what they invalidate.

Node: I tried to limit the changes in this commit to mechanical changes to ease the review. I will cleanup some
of the code in a following commit.

Swift SVN r26449
2015-03-23 21:18:58 +00:00
Arnold Schwaighofer
aa24e126e4 ArraySemantic: Move to its own file in SILAnalysis
I want to use it in ARCAnalysis.

Swift SVN r25924
2015-03-10 15:20:20 +00:00
Arnold Schwaighofer
e27a039406 RemovePins: Don't remove a pin/unpin pair accross a call that may read the pin
flag

This is more of a theoretical concern. But better be documented and checked then
sorry.

Swift SVN r25888
2015-03-09 17:29:07 +00:00
Michael Gottesman
38a0c69fc1 Rename some arc routines to use may instead of can as a prefix to match AliasAnalysis more closely.
Swift SVN r24509
2015-01-19 10:03:06 +00:00
Michael Gottesman
39817d5fd8 Remove arc namespace.
Swift SVN r24500
2015-01-19 00:10:48 +00:00
Arnold Schwaighofer
4d3e443c3a RemovePin: Array semantic functions are generally safe
Array semantics functions don't release the array in unexpected ways.

Swift SVN r24456
2015-01-15 22:44:37 +00:00
Arnold Schwaighofer
fdc1423557 RemovePin: Remember when the pass changes stuff
We do need to set the 'Changed' variable when we have removed pins such that we
can invalidate analysis at the end of the pass run.

Swift SVN r24455
2015-01-15 22:44:36 +00:00
Arnold Schwaighofer
1e482be681 Add a pass to remove trivial pin/unpin pairs.
This pass removes pin/unpin pairs that are not interleaved by a may-release of
the pin's operand.

This will be needed when we turn on John's work on safe array accessors.

Swift SVN r24434
2015-01-15 00:48:59 +00:00