1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
llvm-mirror/include/llvm/CodeGen
Chris Lattner 5e00f501ff 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.

llvm-svn: 129656
2011-04-17 06:35:44 +00:00
..
PBQP Added an additional PBQP problem builder which adds coalescing costs (both between pairs of virtuals, and between virtuals and physicals). 2010-09-21 13:19:36 +00:00
Analysis.h Enable sibling call optimization of libcalls which are expanded during 2010-11-30 23:55:39 +00:00
AsmPrinter.h Some refactoring suggested by Anton Korobeynikov. 2011-04-15 20:32:03 +00:00
BinaryObject.h Merge System into Support. 2010-11-29 18:16:10 +00:00
CalcSpillWeights.h Symbolize the default instruction distance. 2011-03-04 18:36:51 +00:00
CallingConvLower.h In the calling convention logic, ValVT is always a legal type, 2010-11-04 10:49:57 +00:00
EdgeBundles.h Build the Hopfield network incrementally when splitting global live ranges. 2011-04-09 02:59:09 +00:00
FastISel.h Teach FastISel to support register-immediate-immediate instructions. 2011-03-11 21:33:55 +00:00
FunctionLoweringInfo.h There are times when the landing pad won't have a call to 'eh.selector' in 2011-03-03 23:14:05 +00:00
GCMetadata.h Attach a DebugLoc to a GC point in order to get precise information in the JIT of a GC point. 2010-09-24 17:27:50 +00:00
GCMetadataPrinter.h Trailing whitespace. 2010-07-01 01:00:22 +00:00
GCs.h
GCStrategy.h
IntrinsicLowering.h Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call. 2011-01-08 01:24:27 +00:00
ISDOpcodes.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
JITCodeEmitter.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
LatencyPriorityQueue.h Various bits of framework needed for precise machine-level selection 2010-12-24 05:03:26 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h Stub out RegAllocGreedy. 2010-12-08 03:26:16 +00:00
LiveInterval.h Rewrite instructions as part of ConnectedVNInfoEqClasses::Distribute. 2011-03-17 00:23:45 +00:00
LiveIntervalAnalysis.h Dead code elimination may separate the live interval into multiple connected components. 2011-03-17 20:37:07 +00:00
LiveStackAnalysis.h Teach TargetRegisterInfo how to cram stack slot indexes in with the virtual and 2011-01-09 21:17:37 +00:00
LiveVariables.h Use an IndexedMap for LiveVariables::VirtRegInfo. 2011-01-08 23:10:57 +00:00
MachineBasicBlock.h Cache the fairly expensive last split point computation and provide a fast 2011-04-05 04:20:27 +00:00
MachineCodeEmitter.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
MachineCodeInfo.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineConstantPool.h Add comment to clarify what MachineConstantPoolEntry::isMachineConstantPoolEntry() means. 2011-03-24 06:28:45 +00:00
MachineDominators.h typoes 2010-09-10 22:25:58 +00:00
MachineFrameInfo.h Tidy up. 2011-03-07 19:28:43 +00:00
MachineFunction.h Revert r124611 - "Keep track of incoming argument's location while emitting LiveIns." 2011-02-21 23:21:26 +00:00
MachineFunctionAnalysis.h Give MachineFunctionAnalysis a getPassName() implementation to make timing reports prettier. 2011-01-04 18:21:18 +00:00
MachineFunctionPass.h Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
MachineInstr.h 80 columns. 2011-03-11 21:02:27 +00:00
MachineInstrBuilder.h Provide hooks to set MI flags in MachineInstrBuilder 2011-03-05 18:43:20 +00:00
MachineJumpTableInfo.h Add explicit keywords. 2010-06-18 19:04:37 +00:00
MachineLocation.h Merge .debug_loc entries whenever possible to reduce debug_loc size. 2011-02-04 22:57:18 +00:00
MachineLoopInfo.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
MachineLoopRanges.h Enable loop splitting in RegAllocGreedy. 2010-12-17 23:16:32 +00:00
MachineMemOperand.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineModuleInfo.h Fix small bug in setDebugInfoAvailability. 2011-01-05 17:01:57 +00:00
MachineModuleInfoImpls.h Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that 2010-03-10 22:34:10 +00:00
MachineOperand.h Simplify LiveDebugVariables by storing MachineOperand copies locations instead 2011-01-09 05:33:21 +00:00
MachinePassRegistry.h Sundry dependent-name fixes flagged by clang++. 2009-12-17 23:49:16 +00:00
MachineRegisterInfo.h Revert r124611 - "Keep track of incoming argument's location while emitting LiveIns." 2011-02-21 23:21:26 +00:00
MachineRelocation.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineSSAUpdater.h Combine the implementations of the core part of the SSAUpdater and 2010-05-04 23:18:19 +00:00
MachORelocation.h Merge System into Support. 2010-11-29 18:16:10 +00:00
ObjectCodeEmitter.h change EH related stuff (other than EH_LABEL) to use MCSymbol 2010-03-14 01:41:15 +00:00
Passes.h Add the SpillPlacement analysis pass. 2011-01-06 01:21:53 +00:00
ProcessImplicitDefs.h Place context in member variables instead of passing around pointers. 2011-03-14 20:57:14 +00:00
PseudoSourceValue.h Make PseudoSourceValue's classof recognize 2009-11-16 20:40:06 +00:00
RegAllocPBQP.h Fixed some dependencies in RegAllocPBQP.h . Thanks to Borja Ferrer for pointing out this issue. 2010-12-08 22:15:32 +00:00
RegAllocRegistry.h
RegisterCoalescer.h Merge System into Support. 2010-11-29 18:16:10 +00:00
RegisterScavenging.h Teach the register scavenger to take subregs into account when finding a free register. 2011-03-05 00:20:19 +00:00
RuntimeLibcalls.h Issue libcalls __udivmod*i4 / __divmod*i4 for div / rem pairs. 2011-04-01 00:42:02 +00:00
ScheduleDAG.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
ScheduleHazardRecognizer.h Convert -enable-sched-cycles and -enable-sched-hazard to -disable 2011-01-21 05:51:33 +00:00
SchedulerRegistry.h Add an ILP scheduler. This is a register pressure aware scheduler that's 2010-07-24 00:39:05 +00:00
ScoreboardHazardRecognizer.h Various bits of framework needed for precise machine-level selection 2010-12-24 05:03:26 +00:00
SelectionDAG.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
SelectionDAGISel.h Fix rdar://9289512 - not folding load into compare at -O0 2011-04-17 06:35:44 +00:00
SelectionDAGNodes.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
SlotIndexes.h Skip a binary search when possible. 2011-04-11 20:01:44 +00:00
TargetLoweringObjectFileImpl.h Put each personality function in a section. This fixes the gnu ld warning: 2011-04-16 03:51:21 +00:00
ValueTypes.h rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for 2010-12-21 02:38:05 +00:00
ValueTypes.td fix comments; patch by Edmund Grimley-Evans\! 2010-09-17 17:52:00 +00:00