[GMR] Add a late run of GlobalsModRef to the main pass pipeline behind
authorChandler Carruth <chandlerc@gmail.com>
Thu, 23 Jul 2015 09:34:01 +0000 (09:34 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 23 Jul 2015 09:34:01 +0000 (09:34 +0000)
commit8de7149b0d890ce899f57e7fd241044a1eb7f2ba
treebf493082f1905e490ebc21a9e05d05e1ebb21da3
parent2b11aef2f4ab80b595ac2e53b299cb49f18f4372
[GMR] Add a late run of GlobalsModRef to the main pass pipeline behind
the general GMR-in-non-LTO flag.

Without this, we have the global information during the CGSCC pipeline
for GVN and such, but don't have it available during the late loop
optimizations such as the vectorizer. Moreover, after the CGSCC pipeline
has finished we have substantially more accurate and refined call graph
information, function annotations, etc, which will make GMR even more
powerful than it is early in the pipelien.

Note that we have to play silly games with preserving AliasAnalysis
(which is now trivially preserved) in order to let a module analysis
magically be preserved into the entire function pass pipeline.
Simultaneously we have to not make GMR an immutable pass in order to be
able to re-run it and collect fresh data on the final call graph.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242999 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/IPO/PassManagerBuilder.cpp
lib/Transforms/Scalar/Float2Int.cpp
lib/Transforms/Scalar/LoopRotation.cpp