llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner 86ca3cacc5 In SDISel, for targets that support FORMAL_ARGUMENTS nodes, lower this
node as soon as we create it in SDISel.  Previously we would lower it in
legalize.  The problem with this is that it only exposes the argument
loads implied by FORMAL_ARGUMENTs after legalize, so that only dag combine 2
can hack on them.  This causes us to miss some optimizations because 
datatype expansion also happens here.

Exposing the loads early allows us to do optimizations on them.  For example
we now compile arg-cast.ll to:

_foo:
	movl	$2147483647, %eax
	andl	8(%esp), %eax
	ret

where we previously produced:

_foo:
	subl	$12, %esp
	movsd	16(%esp), %xmm0
	movsd	%xmm0, (%esp)
	movl	$2147483647, %eax
	andl	4(%esp), %eax
	addl	$12, %esp
	ret

It might also make sense to do this for ISD::CALL nodes, which have implicit
stores on many targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47054 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-13 07:39:09 +00:00
..
CallingConvLower.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
DAGCombiner.cpp teach dag combiner how to eliminate MERGE_VALUES nodes. 2008-02-13 07:25:05 +00:00
LegalizeDAG.cpp Support legalizing insert_vector_elt on targets where the element 2008-02-13 06:43:04 +00:00
LegalizeTypes.cpp I don't see how NodeUpdated can be called with a 2008-02-04 09:29:17 +00:00
LegalizeTypes.h Add truncate and AssertZext result expansion. 2008-02-10 10:08:52 +00:00
LegalizeTypesExpand.cpp Add a isBigEndian method to complement isLittleEndian. 2008-02-11 10:37:04 +00:00
LegalizeTypesPromote.cpp Factor the addressing mode and the load/store VT out of LoadSDNode 2008-01-30 00:15:11 +00:00
LegalizeTypesScalarize.cpp Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
LegalizeTypesSplit.cpp * Introduce a new SelectionDAG::getIntPtrConstant method 2008-01-17 07:00:52 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00
ScheduleDAG.cpp From Chris' review: use isa instead of explicitly using classof. 2008-02-11 19:00:34 +00:00
ScheduleDAGList.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
ScheduleDAGRRList.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
SelectionDAG.cpp Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t. 2008-02-13 00:35:47 +00:00
SelectionDAGISel.cpp In SDISel, for targets that support FORMAL_ARGUMENTS nodes, lower this 2008-02-13 07:39:09 +00:00
SelectionDAGPrinter.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
TargetLowering.cpp Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t. 2008-02-13 00:35:47 +00:00