llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner fd3f635103 Fix rdar://9289512 - not folding load into compare at -O0
The basic issue here is that bottom-up isel is matching the branch
and compare, and was failing to fold the load into the branch/compare
combo.  Fixing this (by allowing folding into any instruction of a
sequence that is selected) allows us to produce things like:


cmpb    $0, 52(%rax)
je      LBB4_2

instead of:

movb    52(%rax), %cl
cmpb    $0, %cl
je      LBB4_2

This makes the generated -O0 code run a bit faster, but also speeds up
compile time by putting less pressure on the register allocator and 
generating less code.

This was one of the biggest classes of missing load folding.  Implementing
this shrinks 176.gcc's c-decl.s (as a random example) by about 4% in (verbose-asm)
line count.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129656 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-17 06:35:44 +00:00
..
CMakeLists.txt
DAGCombiner.cpp PR9055: extend the fix to PR4050 (r70179) to apply to zext and anyext. 2011-04-16 23:25:34 +00:00
FastISel.cpp fix rdar://9289583 - fast isel should handle non-canonical commutative binops 2011-04-17 01:16:47 +00:00
FunctionLoweringInfo.cpp There are times when the landing pad won't have a call to 'eh.selector' in 2011-03-03 23:14:05 +00:00
InstrEmitter.cpp Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic. 2011-01-10 02:58:51 +00:00
InstrEmitter.h
LegalizeDAG.cpp Fix divmod libcall lowering. Convert to {S|U}DIVREM first and then expand the node to a libcall. rdar://9280991 2011-04-16 03:08:26 +00:00
LegalizeFloatTypes.cpp Allow targets to specify a the type of the RHS of a shift parameterized on the type of the LHS. 2011-02-25 21:41:48 +00:00
LegalizeIntegerTypes.cpp Revert commit 126684 "Use the correct shift amount type". It is only the correct 2011-03-04 14:28:59 +00:00
LegalizeTypes.cpp Move ExpandAtomic into the integer expansion routines - it's only used there. 2011-01-11 00:36:08 +00:00
LegalizeTypes.h PR9535: add support for splitting and scalarizing vector ISD::FP_ROUND. 2011-03-23 22:18:48 +00:00
LegalizeTypesGeneric.cpp
LegalizeVectorOps.cpp Add support for legalizing UINT_TO_FP of vectors on platforms which do 2011-03-19 13:09:10 +00:00
LegalizeVectorTypes.cpp PR9535: add support for splitting and scalarizing vector ISD::FP_ROUND. 2011-03-23 22:18:48 +00:00
Makefile
ScheduleDAGFast.cpp Re-commit 127368 and 127371. They are exonerated. 2011-03-10 00:16:32 +00:00
ScheduleDAGList.cpp Various bits of framework needed for precise machine-level selection 2010-12-24 05:03:26 +00:00
ScheduleDAGRRList.cpp In the pre-RA scheduler, maintain cmp+br proximity. 2011-04-14 05:15:06 +00:00
ScheduleDAGSDNodes.cpp Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
ScheduleDAGSDNodes.h Added a check in the preRA scheduler for potential interference on a 2011-04-07 19:54:57 +00:00
SDNodeDbgValue.h Do not lose debug info of an inlined function argument even if the argument is only used through GEPs. 2011-02-18 22:43:42 +00:00
SDNodeOrdering.h
SelectionDAG.cpp sext(undef) = 0, because the top bits will all be the same. 2011-03-15 02:22:10 +00:00
SelectionDAGBuilder.cpp Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
SelectionDAGBuilder.h Turn SelectionDAGBuilder::GetRegistersForValue into a local function. 2011-03-26 16:35:10 +00:00
SelectionDAGISel.cpp Fix rdar://9289512 - not folding load into compare at -O0 2011-04-17 06:35:44 +00:00
SelectionDAGPrinter.cpp Pass the graph to the DOTGraphTraits.getEdgeAttributes(). 2011-02-27 04:11:03 +00:00
TargetLowering.cpp Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
TargetSelectionDAGInfo.cpp