History log of /external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4e6b24ffcfafbc0c5eda1bb89163ccd56f394fdf 20-May-2013 Hal Finkel <hfinkel@anl.gov> Rename LoopSimplify.h to LoopUtils.h

As discussed, LoopUtils.h is a better name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fc32605ff3a2a922362d2fb5cd31b47ce47e3fb8 20-May-2013 Hal Finkel <hfinkel@anl.gov> Expose InsertPreheaderForLoop from LoopSimplify to other passes

Other passes, PPC counter-loop formation for example, also need to add loop
preheaders outside of the regular loop simplification pass. This makes
InsertPreheaderForLoop a global function so that it can be used by other
passes.

No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182299 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
8999f4777b920ab144a15a6f54a865a07f9c4a7f 26-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> LoopSimplify: Preserve DependenceAnalysis.

This is currently true, but may change when DA grows more aggressive caching.
Without this setting it's impossible to use DA from a LoopPass because DA is a
function pass and cannot be properly scheduled in between LoopPasses. The
LoopManager reacts to this with an infinite loop which made this really annoying
to debug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b2b2273ef4b67b7da4c05472095b8b96cc04ca8d 26-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix SCEV cache invalidation in LCSSA and LoopSimplify.

The LoopSimplify bug is pretty harmless because the loop goes from unanalyzable
to analyzable but the LCSSA bug is very nasty. It only comes into play with a
specific order of the LoopPassManager worklist and can cause actual
miscompilations, when a SCEV refers to a value that has been replaced with PHI
node. SCEVExpander may then insert code into the wrong place, either violating
domination or randomly miscompiling stuff.

Comes with an extensive test case reduced from the test-suite with
bugpoint+SCEVValidator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166787 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
7edc277f7214837d3b7cc382350ea1eb968d09aa 20-Mar-2012 Andrew Trick <atrick@apple.com> LoopSimplify bug fix. Handle indirect loop back edges.

Do not call SplitBlockPredecessors on a loop preheader when one of the
predecessors is an indirectbr. Otherwise, you will hit this assert:
!isa<IndirectBrInst>(Preds[i]->getTerminator()) && "Cannot split an edge from an IndirectBrInst"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
cd1142ef7f9ed5a570da8b332ba481061eb6fcb6 20-Mar-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153133 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
7d1ff37118d5b3febae818676d9dd9513057fed7 15-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Make loop preheader insertion in LoopSimplify handle the case where the loop header is a landing pad correctly (by splitting the landingpad out of the loop header). Make some adjustments to the rest of LoopSimplify to make it clear that the rest of LoopSimplify isn't making bad assumptions about the presence of landing pads. PR11575.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146621 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
2fac1d5d61a83c45dcf44119c41dce15ef10e9dc 09-Dec-2011 Jakub Staszak <kubastaszak@gmail.com> SplitBlockPredecessors uses ArrayRef instead of Data and Size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
618c1dbd293d15ee19f61b1156ab8086ad28311a 01-Dec-2011 Chad Rosier <mcrosier@apple.com> Propagate TargetLibraryInfo throughout ConstantFolding.cpp and
InstructionSimplify.cpp. Other fixups as needed.
Part of rdar://10500969

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b29ec0642153c4b820d3814d30ddd33e763076f2 19-Aug-2011 Bill Wendling <isanbard@gmail.com> Intelligently split the landing pad block.

We have to be careful when splitting the landing pad block, because the
landingpad instruction is required to remain as the first non-PHI of an invoke's
unwind edge. To retain this, we split the block into two blocks, moving the
predecessors within the loop to one block and the remaining predecessors to the
other. The landingpad instruction is cloned into the new blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
66af89f642628c0d52138e86f9e4a0b9f5994474 18-Aug-2011 Bill Wendling <isanbard@gmail.com> Revert r137871. The loop simplify pass should require all exits from a loop that
aren't from an indirect branch need to be dominated by the loop header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137981 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0906a7c46cfc71e7c09dd6362df4310e72fdbc6b 17-Aug-2011 Bill Wendling <isanbard@gmail.com> Don't optimize the landing pad exit block.

One way to exit the loop is through an unwind edge. However, that may involve
splitting the critical edge of the landing pad, which is non-trivial. Prevent
the transformation from rewriting the landing pad exit loop block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137871 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1f6a329f79b3568d379142f921f59c4143ddaa14 12-Aug-2011 Duncan Sands <baldrick@free.fr> Silence a bunch (but not all) "variable written but not read" warnings
when building with assertions disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1009c3299be8c147ecd3fbd2d75ba1bafb2c84b1 03-Aug-2011 Andrew Trick <atrick@apple.com> SCEV: Use AssertingVH to catch dangling BasicBlock* when passes forget
to notify SCEV of a change. Add forgetLoop in a couple of those places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1c3ff6595f944c2c9b834895e41c78c9c922f4af 03-Aug-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136795 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c0136990274d5842f3f389362826e614454c0201 17-Jun-2011 Devang Patel <dpatel@apple.com> Set debug loc for new preheader's terminator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
7a2bdde0a0eebcd2125055e0eacaca040f0b766c 15-Apr-2011 Chris Lattner <sabre@nondot.org> Fix a ton of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3ecfc861b4365f341c5c969b40e1afccde676e6f 30-Mar-2011 Jay Foad <jay.foad@gmail.com> Remove PHINode::reserveOperandSpace(). Instead, add a parameter to
PHINode::Create() giving the (known or expected) number of operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4a60b932a279b3f5934a274f7fe4535026c5aed1 11-Feb-2011 Cameron Zwarich <zwarich@apple.com> Rename 'loopsimplify' to 'loop-simplify'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125317 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
301278719b67dcdd1159d9f91b4db5ef57f025c6 18-Jan-2011 Cameron Zwarich <zwarich@apple.com> Remove code for updating dominance frontiers and some outdated references to
dominance and post-dominance frontiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f73b99ab43c36b026a03430a30c329a343cdd77b 11-Jan-2011 Chris Lattner <sabre@nondot.org> this pass claims to preserve scev, make sure to tell it about deletions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123247 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9fc5cdf77c812aaa80419036de27576d45894d0d 02-Jan-2011 Chris Lattner <sabre@nondot.org> split dom frontier handling stuff out to its own DominanceFrontier header,
so that Dominators.h is *just* domtree. Also prune #includes a bit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
67fb341f8b0a72ca0da8ce53baa3f335c1310a85 02-Jan-2011 Duncan Sands <baldrick@free.fr> Fix PR8702 by not having LoopSimplify claim to preserve LCSSA form. As described
in the PR, the pass could break LCSSA form when inserting preheaders. It probably
would be easy enough to fix this, but since currently we always go into LCSSA form
after running this pass, doing so is not urgent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d0c6f3dafd7c3e9137d4e6415014c94137fcd3fc 18-Nov-2010 Duncan Sands <baldrick@free.fr> Factor code for testing whether replacing one value with another
preserves LCSSA form out of ScalarEvolution and into the LoopInfo
class. Use it to check that SimplifyInstruction simplifications
are not breaking LCSSA form. Fixes PR8622.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
cdbd99262286e96729007ac535cd430ecb3d38ac 16-Nov-2010 Duncan Sands <baldrick@free.fr> Have a few places that want to simplify phi nodes use SimplifyInstruction
rather than calling hasConstantValue. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
081c34b725980f995be9080eaec24cd3dfaaf065 19-Oct-2010 Owen Anderson <resistor@mac.com> Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
2ab36d350293c77fc8941ce1023e4899df7e3a82 12-Oct-2010 Owen Anderson <resistor@mac.com> Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ce665bd2e2b581ab0858d1afe359192bac96b868 08-Oct-2010 Owen Anderson <resistor@mac.com> Now with fewer extraneous semicolons!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ffa75cdcf82ef2034249a313b9276eaa1bee6c43 04-Sep-2010 Dan Gohman <gohman@apple.com> Fix LoopSimplify to notify ScalarEvolution when splitting a loop backedge
into an inner loop, as the new loop iteration may differ substantially.
This fixes PR8078.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
02dd53e1c5b941ca5f60fca1b95ebcaf9ccd1dfc 23-Aug-2010 Owen Anderson <resistor@mac.com> Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111815 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ebd9923bd8b7d3d8d8a9f75d347e3f101252bc51 16-Aug-2010 Dan Gohman <gohman@apple.com> Avoid #include <ScalarEvolution.h> in LoopSimplify.cpp, which doesn't
actually use ScalarEvolution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111124 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c2f40066bbceb15e73e5c4df97d2d115f8a36e58 14-Aug-2010 Dan Gohman <gohman@apple.com> LoopSimplify shouldn't split loop backedges that use indirectbr. PR7867.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
90c579de5a383cee278acc3f7e7b9d0a656e6a35 06-Aug-2010 Owen Anderson <resistor@mac.com> Reapply r110396, with fixes to appease the Linux buildbot gods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1f74590e9d1b9cf0f1f81a156efea73f76546e05 06-Aug-2010 Owen Anderson <resistor@mac.com> Revert r110396 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9ccaf53ada99c63737547c0235baeb8454b04e80 06-Aug-2010 Owen Anderson <resistor@mac.com> Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
052f0001588a1613f845c84c04b38ced28ad6711 26-Jul-2010 Dan Gohman <gohman@apple.com> Remove LCSSA's bogus dependence on LoopSimplify and LoopSimplify's bogus
dependence on DominanceFrontier. Instead, add an explicit DominanceFrontier
pass in StandardPasses.h to ensure that it gets scheduled at the right
time.

Declare that loop unrolling preserves ScalarEvolution, and shuffle some
getAnalysisUsages.

This eliminates one LoopSimplify and one LCCSA run in the standard
compile opts sequence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109413 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
481c4c07347c40fa666d09f3b31fbe2ca27e2d52 22-Jul-2010 Gabor Greif <ggreif@gmail.com> keep in 80 cols

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1e381fcd553a3955a10338fd305efc023d7d22e1 16-Jul-2010 Dan Gohman <gohman@apple.com> Reorder the contents of various getAnalysisUsage functions, eliminating
a redundant loopsimplify run from the default -O2 sequence.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108539 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
bf2eefdb0dac4e331ca26fa0792a1dfd420b06f6 09-Jul-2010 Gabor Greif <ggreif@gmail.com> cache result of operator*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107983 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9672414017e9d5d764a56e5c8c61b39163d2d5e5 09-Jul-2010 Gabor Greif <ggreif@gmail.com> cache operator*'s result (in multiple functions)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107965 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fe60104ac97f3a8736dcfbfdf9547c7b7cc7b951 22-Jun-2010 Dan Gohman <gohman@apple.com> Use pre-increment instead of post-increment when the result is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
689fac02268929b756086753b4656d6dabc5cf2d 15-Mar-2010 Devang Patel <dpatel@apple.com> Skip debug info intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98581 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
2d0a91cd6c3df32014d547255d6a615bd1bc84fb 10-Mar-2010 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c5e49c64d18eacdd72c80c04855df846df97f8a8 01-Mar-2010 Dan Gohman <gohman@apple.com> Add some debug output to LoopSimplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
85669637139089eaed8def1583ac04266c9654e2 25-Feb-2010 Dan Gohman <gohman@apple.com> Make LoopSimplify change conditional branches in loop exiting blocks
which branch on undef to branch on a boolean constant for the edge
exiting the loop. This helps ScalarEvolution compute trip counts for
loops.

Teach ScalarEvolution to recognize single-value PHIs, when safe, and
ForgetSymbolicName to forget such single-value PHI nodes as apprpriate
in ForgetSymbolicName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
17146baef5b79114f05e0f99fcba389f2764b65d 05-Feb-2010 Dan Gohman <gohman@apple.com> Use a SmallSetVector instead of a SetVector; this code showed up as a
malloc caller in a profile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5cd8770412f98f6e6416c439e01222b3643b9e22 15-Jan-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3cf4d90f3d35a6d5293e46790121294e89976cc9 21-Dec-2009 Chris Lattner <sabre@nondot.org> revert r89298, which was committed without a testcase. I think
the underlying PHI node insertion issue in SSAUpdate is fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
34d2b90d09226ebf6189775acfd2801e127b10ec 18-Dec-2009 Dan Gohman <gohman@apple.com> Update a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
a58a04921deba911d6ead8d24f495cec234681c1 20-Nov-2009 Dan Gohman <gohman@apple.com> Make Loop::getLoopLatch() work on loops which don't have preheaders, as
it may be used in contexts where preheader insertion may have failed due
to an indirectbr.

Make LoopSimplify's LoopSimplify::SeparateNestedLoop properly fail in
the case that it would require splitting an indirectbr edge.

These fix PR5502.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89484 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d0b552cc5680ae245258598586115d05291b7b19 19-Nov-2009 Jim Grosbach <grosbach@apple.com> Eliminate duplicate phi nodes in loops. Loop rotation, for example, can introduce these, and it's beneficial to later passes to clean them up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b1dc915a8d4971880a016e678ccf563d1a03a916 05-Nov-2009 Dan Gohman <gohman@apple.com> Avoid calling getUniqueExitBlocks from within LoopSimplify, as it depends
on loops having dedicated exits, which LoopSimplify can no longer always
guarantee.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f4e82d1f2e25f7cf8b7e9c3bd42b0e384139e07e 05-Nov-2009 Dan Gohman <gohman@apple.com> The introduction of indirectbr meant the introduction of
unsplittable critical edges, which means the introduction of
loops which cannot be transformed to LoopSimplify form. Fix
LoopSimplify to avoid transforming such loops into invalid
code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f5a86f45e75ec744c203270ffa03659eb0a220c1 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove includes of Support/Compiler.h that are no longer needed after the
VISIBILITY_HIDDEN removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
6726b6d75a8b679068a58cb954ba97cf9d1690ba 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5184635eda68a0cdcd39c958ccc11ba1843bcc7b 30-Sep-2009 Dan Gohman <gohman@apple.com> Fix this code so that it doesn't try to iterate through a std::vector
while calling changeImmediateDominator, which removes elements from the
vector. This fixes PR5097.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83166 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d84db1133345234738b646c70b907bf8a0983ac9 28-Sep-2009 Dan Gohman <gohman@apple.com> Convert LoopSimplify and LoopExtractor from FunctionPass to LoopPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5c89b5240c90eb8171f999e5f06f815502d0321c 08-Sep-2009 Dan Gohman <gohman@apple.com> Re-apply r80926, with fixes: keep the domtree informed of new blocks
that get created during loop unswitching, and fix SplitBlockPredecessors'
LCSSA updating code to create new PHIs instead of trying to just move
existing ones.

Also, optimize Loop::verifyLoop, since it gets called a lot. Use
searches on a sorted list of blocks instead of calling the "contains"
function, as is done in other places in the Loop class, since "contains"
does a linear search. Also, don't call verifyLoop from LoopSimplify or
LCSSA, as the PassManager is already calling verifyLoop as part of
LoopInfo's verifyAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
8f78a58e14fa754cde827e46ad03f00c7a6ead01 06-Sep-2009 Evan Cheng <evan.cheng@apple.com> Revert r80926. It causes loop unswitch assertion and slow down some JIT tests significantly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81101 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
8fc5ad33691b2a0672a7487da1f56b6f7f675a1b 03-Sep-2009 Dan Gohman <gohman@apple.com> Add a verifyAnalysis to LoopInfo, LoopSimplify, and LCSSA form that verify
that these passes are properly preserved.

Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80926 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
bccfc24c4e8092e1ee18746dd4cee01247728faa 03-Sep-2009 Dan Gohman <gohman@apple.com> Change PHINode::hasConstantValue to have a DominatorTree argument
instead of a bool argument, and to do the dominator check itself.
This makes it eaiser to use when DominatorTree information is
available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80920 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1d0be15f89cb5056e20e2d24faa8d6afb1573bca 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9e9a0d5fc26878e51a58a8b57900fcbf952c2691 31-Jul-2009 Owen Anderson <resistor@mac.com> Move more code back to 2.5 APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77635 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
e922c0201916e0b980ab3cfe91e1413e68d55647 22-Jul-2009 Owen Anderson <resistor@mac.com> Get rid of the Pass+Context magic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
bdc017edacb713119b24ab269d250a82d62fffeb 15-Jul-2009 Dan Gohman <gohman@apple.com> Make makeLoopInvariant report whether it made any changes or not,
and use this to simplify more code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75722 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0df6e09d43d6d733555a10d22572ddb0006e7d23 14-Jul-2009 Dan Gohman <gohman@apple.com> Update LoopSimplify and LoopUnswitch to use the new makeLoopInvariant
function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75584 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0a205a459884ec745df1c529396dd921f029dafd 06-Jul-2009 Owen Anderson <resistor@mac.com> More LLVMContext-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
2aa93efa0c983449e5464165e80ebd9c0fb5f6c1 30-Jun-2009 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
a1baee20c4b042eca1f182fc003f38ab52efc7a9 28-Jun-2009 Dan Gohman <gohman@apple.com> Remove the block from the LoopInfo, rather than just the Loop.
LoopInfo will handle removing it from the Loop, as well as updating
its own tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74398 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4b35f83b91a1a313f0730c600e5178aaf7df98d6 27-Jun-2009 Dan Gohman <gohman@apple.com> Teach LoopSimplify how to merge multiple loop exits into a single exit,
when one of them can be converted to a trivial icmp and conditional
branch.

This addresses what is essentially a phase ordering problem.
SimplifyCFG knows how to do this transformation, but it doesn't do so
if the primary block has any instructions in it other than an icmp and
a branch. In the given testcase, the block contains other instructions,
however they are loop-invariant and can be hoisted. SimplifyCFG doesn't
have LoopInfo though, so it can't hoist them. And, it's important that
the blocks be merged before LoopRotation, as it doesn't support
multiple-exit loops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1465d61bdd36cfd6021036a527895f0dd358e97d 28-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getAnalysisToUpdate to getAnalysisIfAvailable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63198 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ae73dc1448d25b02cabc7c64c86c64371453dda8 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9b78763fce4cb418e7a2e672efb84bac25559b79 22-Jun-2008 Dan Gohman <gohman@apple.com> Use Loop::block_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4c37c07ee3bfacaaf90ea57165ef6855b4ed8b22 06-Jun-2008 Devang Patel <dpatel@apple.com> LoopSimplify preserves AA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
6ddba2b933645d308428201e942abe1274fa5085 13-May-2008 Dan Gohman <gohman@apple.com> Change class' public PassInfo variables to by initialized with the
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.

Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
844731a7f1909f55935e3514c9e713a62d67662e 13-May-2008 Dan Gohman <gohman@apple.com> Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
280a6e607d8eb7401749a92db624a82de47da777 25-Apr-2008 Nick Lewycky <nicholas@mxc.ca> Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989
r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
54b9c3ba2a5b0aa8fda817bcc72c370040cfb3f8 21-Apr-2008 Chris Lattner <sabre@nondot.org> Move SplitBlockPredecessors out of loopsimplify into BasicBlockUtils.h
as a global helper function. At the same type, switch it from taking
a vector of predecessors to an arbitrary sequential input. This allows
us to switch LoopSimplify to use a SmallVector for various temporary
vectors that it passed into SplitBlockPredecessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1b58678d541b424da32195470664e373706e7898 21-Apr-2008 Chris Lattner <sabre@nondot.org> Move domtree/frontier updating earlier, allowing us to use it to update phi
nodes, removing a hack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b85979434df1c11799b84292339a47d2e317b573 21-Apr-2008 Chris Lattner <sabre@nondot.org> Factor dominator tree and frontier updating into SplitBlockPredecessors
instead of doing it after every call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
34093a634accd3c6a9594588b792b7dd24b50473 21-Apr-2008 Chris Lattner <sabre@nondot.org> simplify code, fit in 80 cols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
051a950000e21935165db56695e35bade668193b 06-Apr-2008 Gabor Greif <ggreif@gmail.com> API changes for class Use size reduction, wave 1.
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
529de8a45702cd34968d79d13f95ed1e5d5fa250 09-Mar-2008 Nick Lewycky <nicholas@mxc.ca> Update the block cloner which fixes bugpoint on code using unwind_to (phew!)
and also update the cloning interface's major user, the loop optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4ee451de366474b9c228b4e5fa573795a715216d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d735ee85dbab8e4f66f9ec157f19956e0d11ec7a 27-Nov-2007 Owen Anderson <resistor@mac.com> Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. This involves a small interface change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3cb63ddd5183a1469e4557b3e22735ed3ace05b2 29-Oct-2007 Chris Lattner <sabre@nondot.org> Fix PR1752 and LoopSimplify/2007-10-28-InvokeCrash.ll: terminators
can have uses too. Wouldn't it be nice if invoke didn't exist? :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
7b714321df4d286018d594c9c9f132f343dbabdc 18-Oct-2007 Owen Anderson <resistor@mac.com> Move Split<...>() into DomTreeBase. This should make the #include's of DominatorInternals.h
in CodeExtractor and LoopSimplify unnecessary.

Hartmut, could you confirm that this fixes the issues you were seeing?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43115 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
469b7a4ec114c9b7ecb438b253c489542ba1c96e 17-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed linker errors (unresolved externals: split<>(...)) when compiling with VC++. Please review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43081 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b7211a2ce13a0365e0e1dd2f27adda2ee3d1288b 21-Aug-2007 Devang Patel <dpatel@apple.com> Use SmallVector instead of std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41207 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3589df8013c6e893100de36260cc0e2f3852dfd4 06-Aug-2007 Chris Lattner <sabre@nondot.org> remove some dead lines



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
58e0ef1e90c3f6dbae213612b44e56f7d6d65ea7 19-Jul-2007 Devang Patel <dpatel@apple.com> Verify loop info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c08fa28897356be54fba724056c3aa91da8b3e39 29-Jun-2007 David Greene <greened@obbligato.org> Fix reference to iterator invalidated by an erase operation. Uncovered
by _GLIBCXX_DEBUG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0e7f728ad1ac25b0ed450fe0f8b86a38d3c2a93a 21-Jun-2007 Devang Patel <dpatel@apple.com> Move code to update dominator information after basic block is split
from LoopSimplify.cpp to Dominator.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fe7d4e50b8a34e660a8713da79613041987c19d6 12-Jun-2007 Devang Patel <dpatel@apple.com> Add and use DominatorTreeBase::findNearestCommonDominator().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37545 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f60e5a2cd920da67fc4a40b3c5006032694161ef 11-Jun-2007 Devang Patel <dpatel@apple.com> Simplify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b28aaadfff12e1a697b2145b896c1b9fa0bcbffa 11-Jun-2007 Devang Patel <dpatel@apple.com> simplify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37541 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
e3f653606def60bf7e81c7e5d126f02c6f8b1360 11-Jun-2007 Devang Patel <dpatel@apple.com> Simplify. Dominator Tree is required so always available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37540 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
dba2413b2ecf4e781f457036a2eb0f103192e90d 08-Jun-2007 Devang Patel <dpatel@apple.com> Update LoopSimplify to require and preserve DominatorTree only.
Now LoopSimplify does not require nor preserve ETForest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
83beaee227dad622a7e378897c6f29b511388fa0 04-Jun-2007 Devang Patel <dpatel@apple.com> s/DominatorTree::createNewNode/DominatorTree::addNewBlock/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37415 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
26042420d642e810f5cdfb2da6156b74aaf80945 04-Jun-2007 Devang Patel <dpatel@apple.com> s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
bec7647f985d54d2be2100e3813b85267cf1fe49 03-Jun-2007 Devang Patel <dpatel@apple.com> s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37403 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ecd94c804a563f2a86572dcf1d2e81f397e19daa 06-May-2007 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1997473cf72957d0e70322e2fe6fe2ab141c58a6 03-May-2007 Devang Patel <dpatel@apple.com> Drop 'const'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3e15bf33e024b9df9e89351a165acfdb1dde51ed 02-May-2007 Devang Patel <dpatel@apple.com> Use 'static const char' instead of 'static const int'.
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
794fd75c67a2cdc128d67342c6d88a504d186896 01-May-2007 Devang Patel <dpatel@apple.com> Do not use typeinfo to identify pass in pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
58d7fbf250659246fcca9417a91170a681b1850a 20-Apr-2007 Devang Patel <dpatel@apple.com> Avoid recursion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3dc6776b338f81e2d47daa42cc12c9f91053043d 15-Apr-2007 Owen Anderson <resistor@mac.com> Remove ImmediateDominator analysis. The same information can be obtained from DomTree. A lot of code for
constructing ImmediateDominator is now folded into DomTree construction.

This is part of the ongoing work for PR217.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36063 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
cc221cdf0cf90459bda58969eacac926d0ca6f1c 10-Apr-2007 Owen Anderson <resistor@mac.com> Re-constify things that don't break the build. Last patch in this
series, I promise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f7c83188cdef7f3c0a6f3921f5aa3dae3f559eed 10-Apr-2007 Owen Anderson <resistor@mac.com> Unconst-ify stuff that broke the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35843 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ad190145912facc6fbf2fbe58023bb238fbf2365 10-Apr-2007 Owen Anderson <resistor@mac.com> Const-ify some parameters, and some cosmetic cleanups. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35842 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0cd04618734590b3328d6db2214ee523d11104ed 10-Apr-2007 Owen Anderson <resistor@mac.com> Tabs -> Spaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
17cba6d2326f1f81098334def5f4f99d867e3ce4 10-Apr-2007 Owen Anderson <resistor@mac.com> Improve some _slow_ behavior introduced in my patches the last few days.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
558fc740da62bb93ddfc85f353ab0665b566127f 09-Apr-2007 Owen Anderson <resistor@mac.com> Cleanup some from my DomSet-removal changes. Add a new
isReachableFromEntry
test to ETForest to factor a common test out of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
a397ce1cc2872b059a128f43b8fd300c61700793 08-Apr-2007 Nick Lewycky <nicholas@mxc.ca> Remove DominatorSet usage from LoopSimplify. Patch from Owen Anderson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
e9ed4452bce4f5a7f8005d7ebd649a20c22ef268 07-Apr-2007 Owen Anderson <resistor@mac.com> Add DomSet back, and revert the changes to LoopSimplify. Apparently the
ETForest updating mechanisms don't work as I thought they did. These changes
will be reapplied once the issue is worked out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4f9e58ecdf247f87a9b7cef69b1fa37fb5b07f0d 07-Apr-2007 Owen Anderson <resistor@mac.com> Completely purge DomSet from LoopSimplify. This is part of the
continuing work on PR1171.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35730 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d44008ae4060a4e83981fa403a964723ec0351ba 07-Apr-2007 Owen Anderson <resistor@mac.com> Expunge a bunch of uses of DomSet from LoopSimplify. Many more remain.

This is the beginning of work for PR1171.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3b57b6f36e906d69cc578f3e2f72dcd263a72a30 20-Mar-2007 Devang Patel <dpatel@apple.com> LoopSimplify::FindPHIToPartitionLoops()
Use ETForest instead of DominatorSet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d216e8ba60494caacf919cbf5fef110d48f0d162 19-Dec-2006 Chris Lattner <sabre@nondot.org> switch more statistics over to STATISTIC, eliminating static ctors. Also,
delete some dead ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32694 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ac0b6ae358944ae8b2b5a11dc08f52c3ed89f2da 06-Dec-2006 Chris Lattner <sabre@nondot.org> Detemplatize the Statistic class. The only type it is instantiated with
is 'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3ed469ccd7b028a030b550d84b7336d146f5d8fa 02-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR786:
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
120fce5540b34f81ee5773d30548ce7cc2b5f571 23-Sep-2006 Chris Lattner <sabre@nondot.org> Be far more careful when splitting a loop header, either to form a preheader
or when splitting loops with a common header into multiple loops. In particular
the old code would always insert the preheader before the old loop header. This
is disasterous in cases where the loop hasn't been rotated. For example, it can
produce code like:

.. outside the loop...
jmp LBB1_2 #bb13.outer
LBB1_1: #bb1
movsd 8(%esp,%esi,8), %xmm1
mulsd (%edi), %xmm1
addsd %xmm0, %xmm1
addl $24, %edi
incl %esi
jmp LBB1_3 #bb13
LBB1_2: #bb13.outer
leal (%edx,%eax,8), %edi
pxor %xmm1, %xmm1
xorl %esi, %esi
LBB1_3: #bb13
movapd %xmm1, %xmm0
cmpl $4, %esi
jl LBB1_1 #bb1

Note that the loop body is actually LBB1_1 + LBB1_3, which means that the
loop now contains an uncond branch WITHIN it to jump around the inserted
loop header (LBB1_2). Doh.

This patch changes the preheader insertion code to insert it in the right
spot, producing this code:

... outside the loop, fall into the header ...
LBB1_1: #bb13.outer
leal (%edx,%eax,8), %esi
pxor %xmm0, %xmm0
xorl %edi, %edi
jmp LBB1_3 #bb13
LBB1_2: #bb1
movsd 8(%esp,%edi,8), %xmm0
mulsd (%esi), %xmm0
addsd %xmm1, %xmm0
addl $24, %esi
incl %edi
LBB1_3: #bb13
movapd %xmm0, %xmm1
cmpl $4, %edi
jl LBB1_2 #bb1

Totally crazy, no branch in the loop! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30587 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c3984578bed8236f35825ca8aa30b3ed6cff60d5 23-Sep-2006 Chris Lattner <sabre@nondot.org> Teach UpdateDomInfoForRevectoredPreds to handle revectored preds that are not
reachable, making it general purpose enough for use by InsertPreheaderForLoop.
Eliminate custom dominfo updating code in InsertPreheaderForLoop, using
UpdateDomInfoForRevectoredPreds instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30586 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
7f8897f22e88271cfa114998a4d6088e7c8e8e11 28-Aug-2006 Chris Lattner <sabre@nondot.org> eliminate RegisterOpt. It does the same thing as RegisterPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
a4f0b3a084d120cfc5b5bb06f64b222f5cb72740 27-Aug-2006 Chris Lattner <sabre@nondot.org> s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3bb4657488f700bbe3376fb547017163b8fbbd8f 12-Aug-2006 Chris Lattner <sabre@nondot.org> Don't attempt to split subloops out of a loop with a huge number of backedges.
Not only will this take huge amounts of compile time, the resultant loop nests
won't be useful for optimization. This reduces loopsimplify time on
Transforms/LoopSimplify/2006-08-11-LoopSimplifyLongTime.ll from ~32s to ~0.4s
with a debug build of llvm on a 2.7Ghz G5.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fa78946482a2cc73a1485887dfd12edd12b742a4 12-Aug-2006 Chris Lattner <sabre@nondot.org> Reimplement the loopsimplify code which deletes edges from unreachable
blocks that target loop blocks.

Before, the code was run once per loop, and depended on the number of
predecessors each block in the loop had. Unfortunately, scanning preds can
be really slow when huge numbers of phis exist or when phis with huge numbers
of inputs exist.

Now, the code is run once per function and scans successors instead of preds,
which is far faster. In addition, the new code is simpler and is goto free,
woo.

This change speeds up a nasty testcase Duraid provided me from taking hours to
taking ~72s with a debug build. The functionality this implements is already
tested in the testsuite as Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29644 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9525528a7dc5462b6374d38c81ba5c07b11741fe 29-Jun-2006 Chris Lattner <sabre@nondot.org> Use hidden visibility to make symbols in an anonymous namespace get
dropped. This shrinks libllvmgcc.dylib another 67K


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0ab9f966de73911930b47ce09f2a691bc687ed32 15-Feb-2006 Chris Lattner <sabre@nondot.org> Canonicalize inner loops before outer loops. Inner loop canonicalization
can provide work for the outer loop to canonicalize.

This fixes a case that breaks unswitching.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26189 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c27e056d4fd7f6ecdd8e40eb92230be380c5c8c9 14-Feb-2006 Chris Lattner <sabre@nondot.org> When splitting exit edges to canonicalize loops, make sure to put the new
block in the appropriate loop nest.

Third time is the charm, right?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26187 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ee628cfefb93e0261ee3e56686d3fffa4e81f371 12-Feb-2006 Chris Lattner <sabre@nondot.org> Revert my last patch. It too breaks stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26128 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d308ddcd67f1e8acc4973186300fba927061ef32 11-Feb-2006 Chris Lattner <sabre@nondot.org> Fix for my previously reverted patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5077c7be92d310abfa8667bebc35d36ec6207d2a 11-Feb-2006 Chris Lattner <sabre@nondot.org> revert my previous change, it exposed other problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26121 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
8587eb3a51117b630c18236cc53eb865e76faf2d 11-Feb-2006 Chris Lattner <sabre@nondot.org> Make this check stricter. Disallow loop exit blocks from being shared by
loops and their subloops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26118 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
441365c46ed5d9f3ea9136deaf79f24a1468a7e8 11-Feb-2006 Chris Lattner <sabre@nondot.org> remove dead expr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26116 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
baec98d00bda1cc904405d92716ea9d2f4c1fe9d 09-Jan-2006 Chris Lattner <sabre@nondot.org> Teach loopsimplify to update et-forest. Patch contributed by Daniel Berlin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
8385393dc897ddba1cd86c5a05dd85df63316d87 13-Aug-2005 Chris Lattner <sabre@nondot.org> remove dead code. The exit block list is computed on demand, thus does not
need to be updated. This code is a relic from when it did.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
98599ba6c6b12a01718b08f57ceb7aa3397c5b2d 10-Aug-2005 Chris Lattner <sabre@nondot.org> remove some trickiness that broke yacr2 and some other programs last night


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
94f40324481c04ae8718967b4b5a3d7ca22370e6 10-Aug-2005 Chris Lattner <sabre@nondot.org> Make loop-simplify produce better loops by turning PHI nodes like X = phi [X, Y]
into just Y. This often occurs when it seperates loops that have collapsed loop
headers. This implements LoopSimplify/phi-node-simplify.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5e1b23192184aadbfbd79a31641eb3c0c0ecdc05 05-Aug-2005 Chris Lattner <sabre@nondot.org> This code can handle non-dominating instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
a83ba0f5c934e2cdbb5724cab365ecc0b5aae6c6 05-Aug-2005 Nate Begeman <natebegeman@mac.com> Fix a fixme in CondPropagate.cpp by moving a PhiNode optimization into
BasicBlock's removePredecessor routine. This requires shuffling around
the definition and implementation of hasContantValue from Utils.h,cpp into
Instructions.h,cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fd93908ae8b9684fe71c239e3c6cfe13ff6a2663 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
cec5b8831d4ee3d81990bf1af41ce1d4f4cf9704 25-Mar-2005 Chris Lattner <sabre@nondot.org> Enhance loopsimplify to preserve alias analysis instead of clobbering it.
This prevents crashes on some programs when using -ds-aa -licm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fee341137957b9021b17561bd644aa726aa524e7 06-Mar-2005 Chris Lattner <sabre@nondot.org> trivial simplification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5551706b0f8e970720deea0bf6aa34116030d6be 29-Jan-2005 Chris Lattner <sabre@nondot.org> Adjust to changes in instruction interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19900 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c30bda7540de573c887e00bb76ac78d85f56acd4 17-Oct-2004 Chris Lattner <sabre@nondot.org> hasConstantValue will soon return instructions that don't dominate the PHI node,
so prepare for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
200a360ec66b4d016c17d6f8e3ea559b1fd07205 28-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Pull assignment out of for loop conditional in order for this to
compile under windows. Patch contributed by Paolo Invernizzi!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16534 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4b5015604908e9296800991a7c538a255356428f 20-Sep-2004 Chris Lattner <sabre@nondot.org> Prototype these functions more accurately


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
551ccae044b0ff658fe629dd67edd5ffe75d10e8 02-Sep-2004 Reid Spencer <rspencer@reidspencer.com> Changes For Bug 352
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
47b14a4a6a455c7be169cfd312fcbe796f0ad426 29-Jul-2004 Misha Brukman <brukman+llvm@gmail.com> Fix #includes of i*.h => Instructions.h as per PR403.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
fed22aac4337c589841c443be70fe05559693f6a 15-Jul-2004 Chris Lattner <sabre@nondot.org> Fix PR404 try #2

This version takes about 1s longer than the previous one (down to 2.35s),
but on the positive side, it actually works :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14856 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
de7aee760e77d49877ec308bc47dc455b2b754af 15-Jul-2004 Chris Lattner <sabre@nondot.org> Revert previous patch until I get a bug fixed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
507e3d6dc3face0d68eaf30e30dac07dc948ea2f 15-Jul-2004 Chris Lattner <sabre@nondot.org> Fix PR404: Loop simplify is really slow on 252.eon

This eliminates an N*N*logN algorithm from the loop simplify pass, replacing
it with a much simpler and faster alternative. In a debug build, this reduces
gccas time on eon from 85s to 42s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14851 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
59fb87d469b9b38b0f4c1e31a2f34fa8f09b981d 19-Apr-2004 Chris Lattner <sabre@nondot.org> Correct rewriting of exit blocks after my last patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13048 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f1ab4b4eac5603d19c20f4a508f93a118a52bdd5 19-Apr-2004 Chris Lattner <sabre@nondot.org> Change the ExitBlocks list from being explicitly contained in the Loop
structure to being dynamically computed on demand. This makes updating
loop information MUCH easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4b66242c5498a99ed754f698d779243dd1e291e2 13-Apr-2004 Chris Lattner <sabre@nondot.org> Fix LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll

LoopSimplify was not updating dominator frontiers correctly in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
1f62f82b05563df9c83094608de24ea581014d1e 13-Apr-2004 Chris Lattner <sabre@nondot.org> Refactor code a bit to make it simpler and eliminate the goto


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
529b28da455a703d226a31a03400e6662ff569fe 13-Apr-2004 Chris Lattner <sabre@nondot.org> This patch addresses PR35: Loop simplify should reconstruct nested loops.
This is fairly straight-forward, but was a real nightmare to get just
perfect. aarg. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4edf6c043e7a9b9941db7caa3084b99aa18d91ad 01-Apr-2004 Chris Lattner <sabre@nondot.org> Remove some assertions that are now bogus with the last patch I put in


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12595 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4f303bd4a579cc567879fbd1cf6c7a928fae8210 01-Apr-2004 Chris Lattner <sabre@nondot.org> Fix PR306: Loop simplify incorrectly updates dominator information
Testcase: LoopSimplify/2004-04-01-IncorrectDomUpdate.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12592 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
85ebd541faf03a00d20ce3bdaf133aa6948c64f8 16-Mar-2004 Chris Lattner <sabre@nondot.org> Fix a regression from this patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040308/013095.html

Basically, this patch only updated the immediate dominatees of the header node
to tell them that the preheader also dominated them. In practice, ALL
dominatees of the header node are also dominated by the preheader.

This fixes: LoopSimplify/2004-03-15-IncorrectDomUpdate.
and PR293


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
2ef703ec429900c5b49d94d82332e7a216a2d7c4 14-Mar-2004 Chris Lattner <sabre@nondot.org> If a block is dead, dominators will not be calculated for it. Because of this
loop information won't see it, and we could have unreachable blocks pointing to
the non-header node of blocks in a natural loop. This isn't tidy, so have the
loopsimplify pass clean it up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
786c5646e9cd15f18a6a7938673f74b02a05adb8 13-Mar-2004 Chris Lattner <sabre@nondot.org> This little patch speeds up the loop used to update the dominator set analysis.
On the testcase from GCC PR12440, which has a LOT of loops (1392 of which require
preheaders to be inserted), this speeds up the loopsimplify pass from 1.931s to
0.1875s. The loop in question goes from 1.65s -> 0.0097s, which isn't bad. All of
these times are a debug build.

This adds a dependency on DominatorTree analysis that was not there before, but
we always had dominatortree available anyway, because LICM requires both loop
simplify and DT, so this doesn't add any extra analysis in practice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
99dcc1da860d5eb4ab05fd27b55fb31f50dd8b4a 06-Feb-2004 Chris Lattner <sabre@nondot.org> Fix another dominator update bug. These bugs keep getting exposed because GCSE
keeps finding more code motion opportunities now that the dominators are correct!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11142 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
3e0b870def750929512ebe86e9b589fbab9d538e 05-Feb-2004 Chris Lattner <sabre@nondot.org> Fix bug updating dominators


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4f02fc28eb20f20f41c5ea148ce5058a72b55ade 05-Feb-2004 Chris Lattner <sabre@nondot.org> Fix PR223: Loopsimplify incorrectly updates dominator information

The problem is that the dominator update code didn't "realize" that it's
possible for the newly inserted basic block to dominate anything. Because
it IS possible, stuff was getting updated wrong.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c24a076c6a22a932e4fc2b745fd748fe7ee3cb15 04-Feb-2004 Chris Lattner <sabre@nondot.org> Adjust to the new BasicBlock ctor, which requires a function parameter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11114 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
329c1c6c949d07e3fe9722ec633b4258217fd99d 08-Jan-2004 Chris Lattner <sabre@nondot.org> Improve encapsulation in the Loop and LoopInfo classes by eliminating the
getSubLoops/getTopLevelLoops methods, replacing them with iterator-based
accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0f98e75adff9024dcfe1d2afbfa83625d60ebaa8 19-Dec-2003 Chris Lattner <sabre@nondot.org> Generalize a special case to fix PR187


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
66ea98e85c5f9c03aac139563d7874e93dc345c6 10-Dec-2003 Chris Lattner <sabre@nondot.org> Finegrainify namespacification
Fix bug: LoopSimplify/2003-12-10-ExitBlocksProblem.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
010ba10032d7c5f34c209cae1a9445776f49914a 10-Dec-2003 Chris Lattner <sabre@nondot.org> Do not insert one entry PHI nodes in split exit blocks!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
108e4ab159b59a616b0868e396dc7ddc1fb48616 21-Nov-2003 Chris Lattner <sabre@nondot.org> Minor cleanups and simplifications


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
f8485c643412dbff46fe87ea2867445169a5c28e 20-Nov-2003 Chris Lattner <sabre@nondot.org> Start using the nicer terminator auto-insertion API


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
d0fde30ce850b78371fd1386338350591f9ff494 11-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Put all LLVM code into the llvm namespace, as per bug 109.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
b576c94c15af9a440f69d9d03c2afead7971118c 20-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM project notice to the top of every C++ source file.
Header files will be on the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
2ab6a7358e7788eae43b73a79e066322ef0a55d5 13-Oct-2003 Chris Lattner <sabre@nondot.org> Add support to the loop canonicalization pass to make it transform loops to
have a SINGLE backedge. This is useful to, for example, the -indvars pass.

This implements testcase LoopSimplify/single-backedge.ll and closes PR#34


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9065 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
98bf436e2e2ab463d79c54a42a46b12028905330 12-Oct-2003 Chris Lattner <sabre@nondot.org> Rename loop preheaders pass to loop simplify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
67a9801bc510ff2c28068361fb30ae397fd1e026 12-Oct-2003 Chris Lattner <sabre@nondot.org> File is renamed to LoopSimplify.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
ee2c50cca57272b92cf9e0d1fb238d14d57ea1dd 12-Oct-2003 Chris Lattner <sabre@nondot.org> First step in renaming the preheaders pass to loopsimplify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9058 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
bebd86d58eea8839691785a08917040751334083 12-Oct-2003 Chris Lattner <sabre@nondot.org> The preheader insertion pass only depends on the CFG. Mark it as such, which
allows GCCAS to only run it once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9056 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
cf00c4ab3ba308d45d98c5ccab87362cf802facb 10-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> Fix spelling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
c444a4228f31656f854d15eac671b450df557346 11-Sep-2003 Chris Lattner <sabre@nondot.org> Renamed DominatorTree::Node::getNode() -> getBlock()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
dfa5f83c8ea9fa577c5a42407c3fd8b6c789a6dd 09-Sep-2003 Misha Brukman <brukman+llvm@gmail.com> Spell `occurrence' correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8425 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
e6f7f61cda02e9aa8f87f84f0c91668e8a6de569 19-Aug-2003 Chris Lattner <sabre@nondot.org> Fix grammar, add comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
5560c9d49ccae132cabf1155f18aa0480dce3eda 18-Aug-2003 Misha Brukman <brukman+llvm@gmail.com> Spell `necessary' correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
8f6396e80fa60e4ff79ddf7d81381d726405ac45 13-May-2003 Chris Lattner <sabre@nondot.org> Fix bug: LoopPreheaders/2003-05-12-PreheaderExitOfChild.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
e408e25132b8de8c757db1e3ddcd70432dfeb24d 23-Apr-2003 Chris Lattner <sabre@nondot.org> Remove unnecesary &*'s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5872 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
6315938d68df89ea1f5c8f9424d9f3584b74bc8c 28-Feb-2003 Chris Lattner <sabre@nondot.org> Fix bug I introduced yesterday :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5669 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
74cd04ea0154defa837a6d4c12bad29aae44e5b6 28-Feb-2003 Chris Lattner <sabre@nondot.org> Fix bug: LICM/2003-02-27-PreheaderExitNodeUpdate.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
9f879cfb0a93bf34818fb68e1dc209d47a7d24f3 27-Feb-2003 Chris Lattner <sabre@nondot.org> Fix bug: 2003-02-27-PreheaderExitNodeUpdate.ll by updating exit node info


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
7e7ad49c23867a5de8e15adfd946fdfa4ba68902 27-Feb-2003 Chris Lattner <sabre@nondot.org> Add a new assertion to check that stuff is happening right
Ironically the exit block modification code wasn't updating the exit block
information itself. Fix this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5659 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
69269ac203156ae8512c9513b75e5c7217c9ac4e 27-Feb-2003 Chris Lattner <sabre@nondot.org> * Don't forget to update Loop information!
* Remove bogus assertion: there may be a single outside predecessor and
still need a new loop-preheader if the predecessor has multiple
successors. See bug: LICM/2003-02-27-PreheaderProblem.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5655 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
dbf3cd7952736b649b4d19badb73ec6c1f9be583 27-Feb-2003 Chris Lattner <sabre@nondot.org> * Significant changes to the preheader insertion pass:
- Now we perform loop exit-block splitting to ensure exit blocks are
always dominated by the loop header.
- We now preserve dominance frontier information
- This fixes bug: LICM/2003-02-26-LoopExitNotDominated.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
a92f696b74a99325026ebbdbffd2a44317e0c10b 02-Oct-2002 Chris Lattner <sabre@nondot.org> Updates to work with recent Statistic's changes:

* Renamed StatisticReporter.h/cpp to Statistic.h/cpp
* Broke constructor to take two const char * arguments instead of one, so
that indendation can be taken care of automatically.
* Sort the list by pass name when printing
* Make sure to print all statistics as a group, instead of randomly when
the statistics dtors are called.
* Updated ProgrammersManual with new semantics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
4d01892e36cc8ea4537b32dd71f11d767edeeef2 29-Sep-2002 Chris Lattner <sabre@nondot.org> Fix major bugs in dominator set & tree information updating


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
0bd3616b0b118b6616fabc9a16d291601b16b870 26-Sep-2002 Chris Lattner <sabre@nondot.org> Change pass name to something sane


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp
38acf9e85d25f022309372c26d54ecb7c77840f2 26-Sep-2002 Chris Lattner <sabre@nondot.org> Checkin new loop-preheader insertion pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3942 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/LoopSimplify.cpp