llvm-6502/lib
Dan Gohman 4b35f83b91 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
2009-06-27 21:30:38 +00:00
..
Analysis Eliminate a layer of indirection in LoopInfo and MachineLoopInfo. 2009-06-27 21:22:48 +00:00
Archive
AsmParser
Bitcode
CodeGen Eliminate a layer of indirection in LoopInfo and MachineLoopInfo. 2009-06-27 21:22:48 +00:00
CompilerDriver Guards for the compiler driver plugin list. 2009-06-26 00:06:28 +00:00
Debugger
ExecutionEngine Get rid of unnecessary global variables. 2009-06-26 16:46:15 +00:00
Linker
MC MC: Truncate values when printing, to keep 'as' happy. 2009-06-25 21:03:18 +00:00
Support Use atomic operations for accessing this global counter. 2009-06-26 18:09:03 +00:00
System Fix compilation without pthreads. 2009-06-26 08:48:03 +00:00
Target Simplify a bit 2009-06-27 12:59:03 +00:00
Transforms Teach LoopSimplify how to merge multiple loop exits into a single exit, 2009-06-27 21:30:38 +00:00
VMCore Make this const. 2009-06-26 20:21:18 +00:00
Makefile Start flushing out MCContext. 2009-06-23 22:01:43 +00:00