llvm-6502/include/llvm/CodeGen
Chris Lattner beac75da37 implement rdar://6653118 - fastisel should fold loads where possible.
Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:

int foo(int x, int y, int z) {
  return x+y+z;
}

used to compile into:

_foo:                                   ## @foo
	subq	$12, %rsp
	movl	%edi, 8(%rsp)
	movl	%esi, 4(%rsp)
	movl	%edx, (%rsp)
	movl	8(%rsp), %edx
	movl	4(%rsp), %esi
	addl	%edx, %esi
	movl	(%rsp), %edx
	addl	%esi, %edx
	movl	%edx, %eax
	addq	$12, %rsp
	ret

Now we produce:

_foo:                                   ## @foo
	subq	$12, %rsp
	movl	%edi, 8(%rsp)
	movl	%esi, 4(%rsp)
	movl	%edx, (%rsp)
	movl	8(%rsp), %edx
	addl	4(%rsp), %edx    ## Folded load
	addl	(%rsp), %edx     ## Folded load
	movl	%edx, %eax
	addq	$12, %rsp
	ret

Fewer instructions and less register use = faster compiles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113102 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-05 02:18:34 +00:00
..
Analysis.h
AsmPrinter.h Fix .debug_range for linux. Patch by Krister Wombell. 2010-09-02 16:43:44 +00:00
BinaryObject.h
CalcSpillWeights.h
CallingConvLower.h
FastISel.h implement rdar://6653118 - fastisel should fold loads where possible. 2010-09-05 02:18:34 +00:00
FunctionLoweringInfo.h Reapply r112623. Included additional check for unused byval argument. 2010-08-31 22:22:42 +00:00
GCMetadata.h
GCMetadataPrinter.h
GCs.h
GCStrategy.h
IntrinsicLowering.h
ISDOpcodes.h
JITCodeEmitter.h
LatencyPriorityQueue.h
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h Remove dead code. 2010-09-04 21:09:33 +00:00
LiveIntervalAnalysis.h
LiveStackAnalysis.h
LiveVariables.h
MachineBasicBlock.h
MachineCodeEmitter.h
MachineCodeInfo.h
MachineConstantPool.h
MachineDominators.h
MachineFrameInfo.h Add 'const' to getter function. 2010-09-03 18:17:16 +00:00
MachineFunction.h
MachineFunctionAnalysis.h
MachineFunctionPass.h
MachineInstr.h
MachineInstrBuilder.h
MachineJumpTableInfo.h
MachineLocation.h
MachineLoopInfo.h
MachineMemOperand.h
MachineModuleInfo.h
MachineModuleInfoImpls.h
MachineOperand.h
MachinePassRegistry.h
MachineRegisterInfo.h
MachineRelocation.h
MachineSSAUpdater.h
MachORelocation.h
ObjectCodeEmitter.h
Passes.h Stop using the dom frontier in DwarfEHPrepare by not promoting alloca's 2010-08-31 09:05:06 +00:00
PostRAHazardRecognizer.h
ProcessImplicitDefs.h
PseudoSourceValue.h
RegAllocRegistry.h
RegisterCoalescer.h
RegisterScavenging.h
RuntimeLibcalls.h
ScheduleDAG.h
ScheduleHazardRecognizer.h
SchedulerRegistry.h
SelectionDAG.h zap unused method. x86 is the only user and already has a more powerfull version 2010-08-31 02:36:20 +00:00
SelectionDAGISel.h implement rdar://6653118 - fastisel should fold loads where possible. 2010-09-05 02:18:34 +00:00
SelectionDAGNodes.h
SlotIndexes.h
TargetLoweringObjectFileImpl.h nuke dead ivar which was supposed to be committed with r112496 2010-08-30 18:16:27 +00:00
ValueTypes.h
ValueTypes.td