Dead Code Stripping

We have a distributed source repository structure controlled with the CocoaPods. We have multiple Apps that are built using these source repositories. The main issue which we are finding is with the dead code stripping of public variables, functions, classes, enums, and structure. This, in turn, increases the size of the IPA even though the code might not be getting used.

The idea is to have one more pass on the Virtual Method Table to identify the references and strip if there are no callers during the SIL. This avoids lot of unused code getting in the binary, also we can emit the information that certain methods not getting used thereby reducing dependency on third-party frameworks to check for dead code.