| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
we try to branch to them.
Before we were creating successor lists with duplicated entries. Fixing that
found a bug in isBlockOnlyReachableByFallthrough that would causes it to
return the wrong answer for
-----------
...
jne foo
jmp bar
foo:
----------
llvm-svn: 132882
|
|
|
|
| |
llvm-svn: 132872
|
|
|
|
| |
llvm-svn: 132871
|
|
|
|
| |
llvm-svn: 132863
|
|
|
|
| |
llvm-svn: 132857
|
|
|
|
|
|
| |
comment on their meaning.
llvm-svn: 132854
|
|
|
|
| |
llvm-svn: 132853
|
|
|
|
| |
llvm-svn: 132852
|
|
|
|
|
|
| |
Thanks Bob Wilson for noticing it!
llvm-svn: 132851
|
|
|
|
|
|
|
|
| |
and definitions when emitting global variables. This was causing global
declarations to be emitted as if they were definitions.
Fixes <rdar://problem/9429892>.
llvm-svn: 132825
|
|
|
|
| |
llvm-svn: 132822
|
|
|
|
| |
llvm-svn: 132821
|
|
|
|
|
|
|
|
| |
With this I am able to bootstrap clang with early tail duplication enabled
for any small bb and setting tail-dup-size to a relatively large value(8) to
stress this code.
llvm-svn: 132816
|
|
|
|
| |
llvm-svn: 132814
|
|
|
|
|
|
|
|
| |
matches the ordering we prefer in instcombine. Part of rdar://9562809.
The potential DAGCombine which enforces this more generally messes up some other very fragile patterns, so I'm leaving that alone, at least for now.
llvm-svn: 132809
|
|
|
|
|
|
| |
eh edges. Swap the order of the checks to avoid it.
llvm-svn: 132806
|
|
|
|
| |
llvm-svn: 132805
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 132798
|
|
|
|
| |
llvm-svn: 132776
|
|
|
|
| |
llvm-svn: 132771
|
|
|
|
|
|
|
|
|
| |
of the frame then increase the maximum alignment of the frame to
match.
Fixes PR6965
llvm-svn: 132764
|
|
|
|
|
|
|
|
| |
No functional change.
Part of PR6965
llvm-svn: 132763
|
|
|
|
| |
llvm-svn: 132751
|
|
|
|
| |
llvm-svn: 132749
|
|
|
|
| |
llvm-svn: 132748
|
|
|
|
|
|
| |
operands to an early clobber register. This fixes <rdar://problem/9566076>.
llvm-svn: 132738
|
|
|
|
|
|
| |
Fixes PR10095.
llvm-svn: 132735
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
legalize SDNodes such as BUILD_VECTOR, EXTRACT_VECTOR_ELT, etc.
llvm-svn: 132689
|
|
|
|
| |
llvm-svn: 132681
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 132676
|
|
|
|
| |
llvm-svn: 132668
|
|
|
|
|
|
| |
(copyFromParts/copyToParts).
llvm-svn: 132649
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
| |
of reserved registers.
Use RegisterClassInfo in RABasic as well. This slightly changes som
allocation orders because RegisterClassInfo puts CSR aliases last.
llvm-svn: 132581
|
|
|
|
|
|
|
|
| |
Previously, these aliases would be ordered alphabetically. (BH, BL)
Print out the computed allocation orders.
llvm-svn: 132580
|
|
|
|
| |
llvm-svn: 132559
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 132510
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 132488
|
|
|
|
| |
llvm-svn: 132487
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 132479
|
|
|
|
|
|
|
| |
This saves two virtual function calls and an Allocatable BitVector test,
making RAFast run 2% faster.
llvm-svn: 132471
|
|
|
|
|
|
| |
Found by valgrind.
llvm-svn: 132457
|