- Jun 09, 2011
-
-
Eric Christopher authored
of the frame then increase the maximum alignment of the frame to match. Fixes PR6965 llvm-svn: 132764
-
Eric Christopher authored
No functional change. Part of PR6965 llvm-svn: 132763
-
- Jun 08, 2011
-
-
Andrew Trick authored
llvm-svn: 132751
-
Rafael Espindola authored
llvm-svn: 132749
-
Rafael Espindola authored
llvm-svn: 132748
-
Cameron Zwarich authored
operands to an early clobber register. This fixes <rdar://problem/9566076>. llvm-svn: 132738
-
Rafael Espindola authored
Fixes PR10095. llvm-svn: 132735
-
- Jun 07, 2011
-
-
Andrew Trick authored
I've been sitting on this long enough trying to find a test case. I think the fix should go in now, but I'll keep working on the test case. llvm-svn: 132701
-
Jakob Stoklund Olesen authored
When local live range splitting creates a live range with the same number of instructions as the old range, mark it as RS_Local. When such a range is seen again, require that it be split in a way that reduces the number of instructions. That guarantees we are making progress while still being able to perform 3 -> 2+3 splits as required by PR10070. This also means that the PrevSlot map is no longer needed. This was also used to estimate new spill weights, but that is no longer necessary after slotIndexes::insertMachineInstrInMaps() got the extra Late insertion argument. llvm-svn: 132697
-
- Jun 06, 2011
-
-
Jakob Stoklund Olesen authored
Only target-dependent hints require callbacks. The RCI allocation order has CSR aliases last according to their order of appearance in the getCalleeSavedRegs list. This can depend on the calling convention. This way, AllocationOrder::next doesn't have to check for reserved registers, and CSRs are always allocated last, even with weird calling conventions. llvm-svn: 132690
-
Nadav Rotem authored
legalize SDNodes such as BUILD_VECTOR, EXTRACT_VECTOR_ELT, etc. llvm-svn: 132689
-
Stuart Hastings authored
llvm-svn: 132681
-
Jakob Stoklund Olesen authored
The order of registers returned by getCalleeSavedRegs is used to lay out the fixed stack slots for CSRs. Some targets like their CSRs used from one end, and some targets want them used from the other end. When computing an allocation order, simply preserve the relative ordering of CSRs that the target specifies in its allocation order. Reordering CSRs would break some targets, ARM in particular. We still place volatiles before the CSRs, providing slightly better results with different calling conventions. llvm-svn: 132680
-
Eli Friedman authored
llvm-svn: 132676
-
- Jun 05, 2011
-
-
Benjamin Kramer authored
llvm-svn: 132668
-
- Jun 04, 2011
-
-
Nadav Rotem authored
TypeLegalizer: Add support for passing of vector-promoted types in registers (copyFromParts/copyToParts). llvm-svn: 132649
-
Nadav Rotem authored
(only happens when using the -promote-elements option). The correct legalization order is to first try to promote element. Next, we try to widen vectors. llvm-svn: 132648
-
- Jun 03, 2011
-
-
Jakob Stoklund Olesen authored
of reserved registers. Use RegisterClassInfo in RABasic as well. This slightly changes som allocation orders because RegisterClassInfo puts CSR aliases last. llvm-svn: 132581
-
Jakob Stoklund Olesen authored
Previously, these aliases would be ordered alphabetically. (BH, BL) Print out the computed allocation orders. llvm-svn: 132580
-
Eric Christopher authored
llvm-svn: 132559
-
Jakob Stoklund Olesen authored
When compiling a program with lots of small functions like 483.xalancbmk, this makes RAFast 11% faster. Add some comments to clarify the difference between unallocatable and reserved registers. It's quite subtle. The fast register allocator depends on EFLAGS' not being allocatable on x86. That way it can completely avoid tracking liveness, and it won't mind when there are multiple uses of a single def. llvm-svn: 132514
-
Eric Christopher authored
Part of rdar://9119939 llvm-svn: 132510
-
Jakob Stoklund Olesen authored
Some register classes are only used for instruction operand constraints. They should never be used for virtual registers. Previously, those register classes were given an empty allocation order, but now you can say 'let isAllocatable=0' in the register class definition. TableGen calculates if a register is part of any allocatable register class, and makes that information available in TargetRegisterDesc::inAllocatableClass. The goal here is to eliminate use cases for overriding allocation_order_* methods. llvm-svn: 132508
-
Jakob Stoklund Olesen authored
I was confused whether new uint8_t[] would zero-initialize the returned array, and it seems that so is gcc-4.0. This should fix the test failures on darwin 9. llvm-svn: 132500
-
- Jun 02, 2011
-
-
Devang Patel authored
llvm-svn: 132488
-
Devang Patel authored
llvm-svn: 132487
-
Devang Patel authored
During post RA scheduling, do not try to chase reg defs. to preserve DBG_VALUEs. This approach has several downsides, for example, it does not work when dbg value is a constant integer, it does not work if reg is defined more than once, it places end of debug value range markers in the wrong place. It even causes misleading incorrect debug info when duplicate DBG_VALUE instructions point to same reg def. Instead, use simpler approach and let DBG_VALUE follow its predecessor instruction. After live debug value analysis pass, all DBG_VALUE instruction are placed at the right place. Thanks Jakob for the hint! llvm-svn: 132483
-
Rafael Espindola authored
llvm-svn: 132479
-
Jakob Stoklund Olesen authored
This saves two virtual function calls and an Allocatable BitVector test, making RAFast run 2% faster. llvm-svn: 132471
-
Benjamin Kramer authored
Found by valgrind. llvm-svn: 132457
-
Jakob Stoklund Olesen authored
llvm-svn: 132456
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 132455
-
Jakob Stoklund Olesen authored
register classes. It provides information for each register class that cannot be determined statically, like: - The number of allocatable registers in a class after filtering out the reserved and invalid registers. - The preferred allocation order with registers that overlap callee-saved registers last. - The last callee-saved register that overlaps a given physical register. This information usually doesn't change between functions, so it is reused for compiling multiple functions when possible. The many possible combinations of reserved and callee saves registers makes it unfeasible to compute this information statically in TableGen. Use RegisterClassInfo to count available registers in various heuristics in SimpleRegisterCoalescing, making the pass run 4% faster. llvm-svn: 132450
-
Devang Patel authored
llvm-svn: 132433
-
Devang Patel authored
llvm-svn: 132427
-
- Jun 01, 2011
-
-
-
Eric Christopher authored
types if the vector type is legal. Fixes rdar://9306086 llvm-svn: 132420
-
Nadav Rotem authored
the TargetLowering enum. llvm-svn: 132418
-
Jakob Stoklund Olesen authored
This commit caused regressions in i386 flops-[568], matrix, salsa20, 256.bzip2, and enc-md5. llvm-svn: 132413
-
Stuart Hastings authored
rdar://problem/5660695 llvm-svn: 132411
-