Commits

Michael Gottesman committed f444a3837a3
[func-sig-opts] Restrict the set of functions that we will optimize. The sets not being considered are: 1. Any functions that will always be inlined. We ignore the inlined case since we can just optimize the signature of the caller at each of the given function call sites. 2. Functions that have already been specialized once. 3. External functions. This is because for function signature optimization to work, we need to be able to modify the caller and the callee. Thus if the caller or callee is external since we can not modify the external definition, we can not perform any specialization. 4. Generic functions. I am leaving this for a later iteration. 5. Non-Fragile functions. I am leaving this for a later iteration. 6. ObjCMethods and Witness Methods. We can never perform this optimization on ObjCMethods and I am going to enable witness methods in a later iteration. 7. Functions without call sites. Since we are only specializing fragile functions, if a function without call sites is used in a different module, that module will be able to deserialize it. Once I handle non-fragile functions, this will change. Swift SVN r22564