llvm-6502/lib/Transforms/Scalar
Chris Lattner 785672534d Extend jump threading to support much more general threading
predicates.  This allows us to jump thread things like:

_ZN12StringSwitchI5ColorE4CaseILj7EEERS1_RAT__KcRKS0_.exit119:
  %tmp1.i24166 = phi i8 [ 1, %bb5.i117 ], [ %tmp1.i24165, %_Z....exit ], [ %tmp1.i24165, %bb4.i114 ] 
  %toBoolnot.i87 = icmp eq i8 %tmp1.i24166, 0     ; <i1> [#uses=1]
  %tmp4.i90 = icmp eq i32 %tmp2.i, 6              ; <i1> [#uses=1]
  %or.cond173 = and i1 %toBoolnot.i87, %tmp4.i90  ; <i1> [#uses=1]
  br i1 %or.cond173, label %bb4.i96, label %_ZN12...

Where it is "obvious" that when coming from %bb5.i117 that the 'and' is always 
false.  This triggers a surprisingly high number of times in the testsuite, 
and gets us closer to generating good code for doug's strswitch testcase.

This also make a bunch of other code in jump threading redundant, I'll rip
out in the next patch.  This survived an enable-checking llvm-gcc bootstrap.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86264 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06 18:15:14 +00:00
..
ABCD.cpp Apply some cleanups. No functionality changes. 2009-10-29 07:35:15 +00:00
ADCE.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00
BasicBlockPlacement.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00
CMakeLists.txt Update CMakeLists for recent renames. 2009-10-31 14:38:25 +00:00
CodeGenPrepare.cpp llvm::SplitEdge should refuse to split an edge from an indirectbr. 2009-10-31 22:04:43 +00:00
CondPropagate.cpp strengthen an assumption: RevectorBlockTo knows that PredBB 2009-11-01 04:23:20 +00:00
ConstantProp.cpp remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
DCE.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00
DeadStoreElimination.cpp improve DSE when TargetData is not around, based on work by 2009-11-04 23:20:12 +00:00
GEPSplitter.cpp Check in the experimental GEP splitter pass. This pass splits complex 2009-10-26 19:12:14 +00:00
GVN.cpp Make sure PRE doesn't split crit edges from indirectbr. 2009-10-31 22:11:15 +00:00
IndVarSimplify.cpp Update various Loop optimization passes to cope with the possibility that 2009-11-05 21:11:53 +00:00
InstructionCombining.cpp remove some more Context arguments. 2009-11-06 05:59:53 +00:00
JumpThreading.cpp Extend jump threading to support much more general threading 2009-11-06 18:15:14 +00:00
LICM.cpp Update various Loop optimization passes to cope with the possibility that 2009-11-05 21:11:53 +00:00
LoopDeletion.cpp LoopDeletion depends on loops having dedicated exits. 2009-11-05 21:47:04 +00:00
LoopIndexSplit.cpp Update various Loop optimization passes to cope with the possibility that 2009-11-05 21:11:53 +00:00
LoopRotation.cpp Update various Loop optimization passes to cope with the possibility that 2009-11-05 21:11:53 +00:00
LoopStrengthReduce.cpp Teach LSR to avoid calling SplitCriticalEdge on edges with indirectbr. 2009-11-05 23:34:59 +00:00
LoopUnrollPass.cpp Replace LoopUnrollPass.cpp's custom code-size estimation code using 2009-10-31 14:54:17 +00:00
LoopUnswitch.cpp remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
MemCpyOptimizer.cpp Introduce and use convenience methods for getting pointer types 2009-10-06 15:40:36 +00:00
Reassociate.cpp Make changes to rev 84292 as requested by Chris Lattner. 2009-10-21 19:11:40 +00:00
Reg2Mem.cpp clean up this code a bit. 2009-09-02 06:15:37 +00:00
Scalar.cpp add a bunch more passes to the C bindings (PR3734), patch by 2009-03-06 16:52:18 +00:00
ScalarReplAggregates.cpp Remove AllocationInst. Since MallocInst went away, AllocaInst is the only subclass of AllocationInst, so it no longer is necessary. 2009-10-23 21:09:37 +00:00
SCCP.cpp Do map insert+find in one step. TODO -= 2. 2009-11-05 14:33:27 +00:00
SCCVN.cpp No newline at end of file. 2009-10-28 15:04:53 +00:00
SimplifyCFGPass.cpp remove a bunch of locking from LLVMContextImpl. Since only one thread 2009-11-01 18:42:03 +00:00
SimplifyHalfPowrLibCalls.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00
SimplifyLibCalls.cpp Teach SimplifyLibCalls to fold memcmp calls with constant arguments. 2009-11-05 17:44:22 +00:00
TailDuplication.cpp remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
TailRecursionElimination.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00