This patch implements an alias canonicalization pass to convert aliases
to the form discussed in https://llvm.org/bugs/show_bug.cgi?id=27866.
This changes aliases and aliasees into aliases with a private anonymous
value.
It was also discussed on the mailing list (see "Weak symbol/alias
semantics" thread here:
http://lists.llvm.org/pipermail/llvm-dev/2017-January/109038.html),
as it simplifies needed fixes for ThinLTO weak symbol/alias handling.
Therefore, to start with I have only enabled the canonicalization pass
when preparing for ThinLTO. After this, I plan to add a bitcode upgrade
mechanism and use it for ThinLTO, and then enable the pass and upgrade
mechanism in other cases. Eventually IR producers can be changed, but
that is a longer term solution.
Why materialized_uses?