This patch includes the front-end of the interleaving algorithm implemented in https://reviews.llvm.org/D50754.
This patch introduces a new front-end option named -enable-vtable-interleaving. When this option is set, the LTO visibility of the module is hidden, and the cfi-vcall is enabled for the module, this front-end creates a placeholder (marked with a new type of metadata called "offset_type" metadata) for each used offset in a vtable. These placeholders will be replaced with the actually offsets in the interleaved layout when the interleaved layout is decided, which is implemented in https://reviews.llvm.org/D50754.
We usually only expose the non-default flag in -cc1, so that there are no ordering concerns and we can determine whether a feature is enabled with just hasArg. Also, -fvtable-interleaving would seem like a more natural flag name to me.