mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 17:33:24 +00:00
fd3f635103
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 |
||
---|---|---|
.. | ||
PBQP | ||
Analysis.h | ||
AsmPrinter.h | ||
BinaryObject.h | ||
CalcSpillWeights.h | ||
CallingConvLower.h | ||
EdgeBundles.h | ||
FastISel.h | ||
FunctionLoweringInfo.h | ||
GCMetadata.h | ||
GCMetadataPrinter.h | ||
GCs.h | ||
GCStrategy.h | ||
IntrinsicLowering.h | ||
ISDOpcodes.h | ||
JITCodeEmitter.h | ||
LatencyPriorityQueue.h | ||
LinkAllAsmWriterComponents.h | ||
LinkAllCodegenComponents.h | ||
LiveInterval.h | ||
LiveIntervalAnalysis.h | ||
LiveStackAnalysis.h | ||
LiveVariables.h | ||
MachineBasicBlock.h | ||
MachineCodeEmitter.h | ||
MachineCodeInfo.h | ||
MachineConstantPool.h | ||
MachineDominators.h | ||
MachineFrameInfo.h | ||
MachineFunction.h | ||
MachineFunctionAnalysis.h | ||
MachineFunctionPass.h | ||
MachineInstr.h | ||
MachineInstrBuilder.h | ||
MachineJumpTableInfo.h | ||
MachineLocation.h | ||
MachineLoopInfo.h | ||
MachineLoopRanges.h | ||
MachineMemOperand.h | ||
MachineModuleInfo.h | ||
MachineModuleInfoImpls.h | ||
MachineOperand.h | ||
MachinePassRegistry.h | ||
MachineRegisterInfo.h | ||
MachineRelocation.h | ||
MachineSSAUpdater.h | ||
MachORelocation.h | ||
ObjectCodeEmitter.h | ||
Passes.h | ||
ProcessImplicitDefs.h | ||
PseudoSourceValue.h | ||
RegAllocPBQP.h | ||
RegAllocRegistry.h | ||
RegisterCoalescer.h | ||
RegisterScavenging.h | ||
RuntimeLibcalls.h | ||
ScheduleDAG.h | ||
ScheduleHazardRecognizer.h | ||
SchedulerRegistry.h | ||
ScoreboardHazardRecognizer.h | ||
SelectionDAG.h | ||
SelectionDAGISel.h | ||
SelectionDAGNodes.h | ||
SlotIndexes.h | ||
TargetLoweringObjectFileImpl.h | ||
ValueTypes.h | ||
ValueTypes.td |