- Feb 23, 2011
-
-
Jakob Stoklund Olesen authored
No code will be inserted after the split point anyway. llvm-svn: 126319
-
Stuart Hastings authored
r124468. Patch by Rafael Avila de Espindola! llvm-svn: 126297
-
Jakob Stoklund Olesen authored
When a large live range is evicted, it will usually be split when it comes around again. By deferring evicted live ranges, the splitting happens at a time when the interference pattern is more realistic. This prevents repeated splitting and evictions. llvm-svn: 126282
-
Jakob Stoklund Olesen authored
llvm-svn: 126277
-
Jakob Stoklund Olesen authored
Use interval sizes instead of spill weights to determine if it is legal to evict interference. A smaller interval can evict interference if all interfering live ranges are larger. Allow multiple interferences to be evicted as along as they are all larger than the live range being allocated. Spill weights are still used to select the preferred eviction candidate. llvm-svn: 126276
-
Jakob Stoklund Olesen authored
This is based on the observation that long live ranges are more difficult to allocate, so there is a better chance of solving the puzzle by handling the big pieces first. The allocator will evict and split long alive ranges when they get in the way. RABasic is still using spill weights for its priority queue, so the interface to the queue has been virtualized. llvm-svn: 126259
-
Jakob Stoklund Olesen authored
llvm-svn: 126258
-
- Feb 22, 2011
-
-
Cameron Zwarich authored
share entries. Add a DenseSet to MachineConstantPool for the MachineCPVs that it owns. This will hopefully fix the MC/ARM/elf-reloc-01.ll failure on the leaks bots. llvm-svn: 126218
-
Andrew Trick authored
Apparently it's ok for multiple operands to "kill" the same register. Fixes PR9237. llvm-svn: 126190
-
Cameron Zwarich authored
llvm-svn: 126185
-
Cameron Zwarich authored
at phis. This enables us to eliminate a lot of pointless zexts during the DAGCombine phase. This fixes <rdar://problem/8760114>. llvm-svn: 126170
-
Cameron Zwarich authored
allows for the information propagated across basic blocks to be merged at phis. llvm-svn: 126169
-
Eric Christopher authored
llvm-svn: 126163
-
Evan Cheng authored
llvm-svn: 126158
-
Devang Patel authored
In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body. This requires some coordination with debugger to get this working. - The debugger needs to be aware of prolog_end attribute attached with line table entries. - The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+) llvm-svn: 126155
-
Jakob Stoklund Olesen authored
An original endpoint is an instruction that killed or defined the original live range before any live ranges were split. When splitting global live ranges, avoid creating local live ranges without any original endpoints. We may still create global live ranges without original endpoints, but such a range won't be split again, and live range splitting still terminates. llvm-svn: 126151
-
- Feb 21, 2011
-
-
Stuart Hastings authored
Radar 9012638. llvm-svn: 126127
-
- Feb 20, 2011
-
-
Nadav Rotem authored
The DAGCombiner folds the zext into complex load instructions. This patch prevents this optimization on vectors since none of the supported targets knows how to perform load+vector_zext in one instruction. llvm-svn: 126080
-
- Feb 19, 2011
-
-
Devang Patel authored
Do not emit empty DW_TAG_lexical_block DIEs. In one test case, size of debug info reduced by almost 7%. llvm-svn: 126009
-
Jakob Stoklund Olesen authored
llvm-svn: 126005
-
Jakob Stoklund Olesen authored
llvm-svn: 126003
-
Jakob Stoklund Olesen authored
llvm-svn: 126002
-
Jakob Stoklund Olesen authored
llvm-svn: 126001
-
- Feb 18, 2011
-
-
Devang Patel authored
Do not lose debug info of an inlined function argument even if the argument is only used through GEPs. This time with a fix that avoids using invalidated DenseMap iterator. llvm-svn: 125984
-
Jakob Stoklund Olesen authored
All new virtual registers created for spilling or splitting point back to their original. llvm-svn: 125980
-
Oscar Fuentes authored
llvm-svn: 125968
-
Jakob Stoklund Olesen authored
The rewriter works almost identically to -rewriter=trivial, except it also eliminates any identity copies. This makes the new register allocators independent of VirtRegRewriter.cpp which will be going away at the same time as RegAllocLinearScan. llvm-svn: 125967
-
Bill Wendling authored
llvm-svn: 125960
-
Cameron Zwarich authored
llvm-svn: 125830
-
Jakob Stoklund Olesen authored
llvm-svn: 125802
-
Devang Patel authored
Do not lose debug info of an inlined function argument even if the argument is only used through GEPs. llvm-svn: 125794
-
- Feb 17, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 125789
-
Jakob Stoklund Olesen authored
A local live range is live in a single basic block. If such a range fails to allocate, try to find a sub-range that would get a larger spill weight than its interference. llvm-svn: 125764
-
Duncan Sands authored
the time but presumably my email got lost). Examples where the previous logic got it wrong: (1) a signed i8 multiply of 64 by 2 overflows, but the high part is zero; (2) a signed i8 multiple of -128 by 2 overflows, but the high part is all ones. llvm-svn: 125748
-
Cameron Zwarich authored
llvm-svn: 125728
-
Cameron Zwarich authored
llvm-svn: 125727
-
Cameron Zwarich authored
llvm-svn: 125726
-
- Feb 16, 2011
-
-
Stuart Hastings authored
other getNode() methods. Radar 9002173. llvm-svn: 125665
-
Eric Christopher authored
llvm-svn: 125651
-
Eric Christopher authored
transformation if we can't legally create a build vector of the correct type. Check that we can make the transformation first, and add a TODO to refactor this code with similar cases. Fixes: PR9223 and rdar://9000350 llvm-svn: 125631
-