- Apr 27, 2011
-
-
Jakob Stoklund Olesen authored
We cannot rely on the <imp-def> operands added by LiveIntervals in all cases as demonstrated by the test case. llvm-svn: 130313
-
Jakob Stoklund Olesen authored
The number of blocks covered by a live range must be strictly decreasing when splitting, otherwise we can't allow repeated splitting. llvm-svn: 130249
-
- Apr 26, 2011
-
-
Evan Cheng authored
more callee-saved registers and introduce copies. Only allows it if scheduling a node above calls would end up lessen register pressure. Call operands also has added ABI restrictions for register allocation, so be extra careful with hoisting them above calls. rdar://9329627 llvm-svn: 130245
-
Rafael Espindola authored
llvm-svn: 130232
-
Devang Patel authored
llvm-svn: 130231
-
Jakob Stoklund Olesen authored
This has two effects: 1. We never inflate to a larger register class than what the sub-target can handle. 2. Completely unconstrained virtual registers get the largest possible register class. llvm-svn: 130229
-
Dan Gohman authored
llvm-svn: 130205
-
Chris Lattner authored
symbols. For example, don't emit: .comm _i,4,2 ## @i ## @i instead emit: .comm _i,4,2 ## @i llvm-svn: 130192
-
Evan Cheng authored
llvm-svn: 130190
-
Rafael Espindola authored
Remove previous DwarfCFI hack. llvm-svn: 130187
-
Devang Patel authored
Let dwarf writer allocate extra space in the debug location expression. This space, if requested, will be used for complex addresses of the Blocks' variables. llvm-svn: 130178
-
Devang Patel authored
llvm-svn: 130171
-
Devang Patel authored
s/addVariableAddress/addFrameVariableAddress/g llvm-svn: 130170
-
Devang Patel authored
Observed this while reading code, so I do not have a test case handy here. llvm-svn: 130167
-
- Apr 25, 2011
-
-
Devang Patel authored
A dbg.declare may not be in entry block, even if it is referring to an incoming argument. However, It is appropriate to emit DBG_VALUE referring to this incoming argument in entry block in MachineFunction. llvm-svn: 130129
-
- Apr 24, 2011
-
-
Rafael Espindola authored
llvm-svn: 130116
-
Rafael Espindola authored
Fixes PR9787. llvm-svn: 130115
-
Sebastian Redl authored
llvm-svn: 130095
-
- Apr 23, 2011
-
-
Jay Foad authored
llvm-svn: 130068
-
Owen Anderson authored
llvm-svn: 130033
-
Devang Patel authored
llvm-svn: 130028
-
Jakob Stoklund Olesen authored
Sometimes it is better to split per block, and we missed those cases. llvm-svn: 130025
-
- Apr 22, 2011
-
-
rdar://9289512Chris Lattner authored
fix bugs exposed by the gcc dejagnu testsuite: 1. The load may actually be used by a dead instruction, which would cause an assert. 2. The load may not be used by the current chain of instructions, and we could move it past a side-effecting instruction. Change how we process uses to define the problem away. llvm-svn: 130018
-
Benjamin Kramer authored
On x86 this allows to fold a load into the cmp, greatly reducing register pressure. movzbl (%rdi), %eax cmpl $47, %eax -> cmpb $47, (%rdi) This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :) llvm-svn: 130005
-
Devang Patel authored
llvm-svn: 130004
-
Evan Cheng authored
llvm-svn: 129970
-
Bill Wendling authored
An exception is thrown via a call to _cxa_throw, which we don't expect to return. Therefore, the "true" part of the invoke goes to a BB that has 'unreachable' as its only instruction. This is lowered into an empty MachineBB. The landing pad for this invoke, however, is directly after the "true" MBB. When the empty MBB is removed, the landing pad is directly below the BB with the invoke call. The unconditional branch is removed and then the two blocks are merged together. The testcase is too big for a regression test. <rdar://problem/9305728> llvm-svn: 129965
-
- Apr 21, 2011
-
-
Devang Patel authored
llvm-svn: 129938
-
Matt Beaumont-Gay authored
llvm-svn: 129928
-
Jakob Stoklund Olesen authored
These intervals are allocatable immediately after splitting, but they may be evicted because of later splitting. This is rare, but when it happens they should be split again. The remainder intervals that cannot be allocated after splitting still move directly to spilling. SplitEditor::finish can optionally provide a mapping from new live intervals back to the original interval indexes returned by openIntv(). Each original interval index can map to multiple new intervals after connected components have been separated. Dead code elimination may also add existing intervals to the list. The reverse mapping allows the SplitEditor client to treat the new intervals differently depending on the split region they came from. llvm-svn: 129925
-
Devang Patel authored
llvm-svn: 129921
-
rdar://9289512Daniel Dunbar authored
which broke a couple GCC test suite tests at -O0. llvm-svn: 129914
-
Jakob Stoklund Olesen authored
llvm-svn: 129883
-
Jakob Stoklund Olesen authored
TII::isTriviallyReMaterializable() shouldn't depend on any properties of the register being defined by the instruction. Rematerialization is going to create a new virtual register anyway. llvm-svn: 129882
-
- Apr 20, 2011
-
-
Jakob Stoklund Olesen authored
On the x86-64 and thumb2 targets, some registers are more expensive to encode than others in the same register class. Add a CostPerUse field to the TableGen register description, and make it available from TRI->getCostPerUse. This represents the cost of a REX prefix or a 32-bit instruction encoding required by choosing a high register. Teach the greedy register allocator to prefer cheap registers for busy live ranges (as indicated by spill weight). llvm-svn: 129864
-
-
Rafael Espindola authored
llvm-svn: 129844
-
Eric Christopher authored
manually and pass all (now) 4 arguments to the mul libcall. Add a new ExpandLibCall for just this (copied gratuitously from type legalization). Fixes rdar://9292577 llvm-svn: 129842
-
Daniel Dunbar authored
triple component. llvm-svn: 129838
-
- Apr 19, 2011
-
-
Daniel Dunbar authored
- There is a minor semantic change here (evidenced by the test change) for Darwin triples that have no version component. I debated changing the default behavior of isOSVersionLT, but decided it made more sense for triples to be explicit. llvm-svn: 129802
-