switch the second scalarrepl pass to use SSAUpdater. We run two scalarrepl passes...
authorChris Lattner <sabre@nondot.org>
Fri, 14 Jan 2011 08:21:08 +0000 (08:21 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 14 Jan 2011 08:21:08 +0000 (08:21 +0000)
commit998ef4a92d74be9ca6dd06a986aad282a5263951
treefc945b6c56bc6eb581f2d054a424c4ad38c4a23a
parentb352d6eb49927a7c707cbd9046cfc525b0c3f2d7
switch the second scalarrepl pass to use SSAUpdater.  We run two scalarrepl passes: one
early in the cleanup code and one late interlaced with the inliner.  The second one is
important because inlining and other scalar optzns can unpin allocas, allowing them to
be split up and promoted.  While important for performance, this is also relatively
rare, and we would previously force a (non-lazy) computation of DomFrontiers, which
happened even if nothing became unpinned.

With this patch, the first pass of scalarrepl still promotes the vast bulk of allocas
in programs, but hte second pass has changed to use SSAUpdater, which is more "sparse"
and lazy.  This speeds up opt -O3 time on kimwitu++ (a c++ app) by about 1%.  The
numbers are interesting: the first pass promotes ~17500 allocas.  The second pass
promotes about 1600.  For non-C++ codes, the compile time win should be greater,
because the second pass of scalarrepl does less.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123437 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Support/StandardPasses.h