| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 124946
|
| |
|
|
|
|
| |
cmd.exe or MSYS shell) are included to invoke CreateProcess(). Thanks to Danil Malyshev.
llvm-svn: 124945
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
<rdar://problem/8959122> illegal register operands for UMULL instruction in cfrac nightly test
I'm stil working on a unit test, but the case is:
rx = movcc rx, r3
r2 = ldr
r2, r3 = umull r2, r2
The anti-dep breaker should not convert this into an illegal instruction:
r2, r2 = umull
llvm-svn: 124932
|
| |
|
|
| |
llvm-svn: 124930
|
| |
|
|
|
|
| |
If the interference overlaps the instruction, we cannot separate it.
llvm-svn: 124918
|
| |
|
|
|
|
|
| |
If these inequalities don't hold, we are creating a live range split that won't
allocate.
llvm-svn: 124917
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a) Making it a per call site bonus for functions that we can move from
indirect to direct calls.
b) Reduces the bonus from 500 to 100 per call site.
c) Subtracts the size of the possible newly inlineable call from the
bonus to only add a bonus if we can inline a small function to devirtualize
it.
Also changes the bonus from a positive that's subtracted to a negative
that's added.
Fixes the remainder of rdar://8546196 by reducing the object file size
after inlining by 84%.
llvm-svn: 124916
|
| |
|
|
| |
llvm-svn: 124912
|
| |
|
|
|
|
|
|
| |
This allows us to easily support 256-bit operations that don't have
native 256-bit support. This applies to integer operations, certain
types of shuffles and various othher things.
llvm-svn: 124910
|
| |
|
|
|
|
|
|
|
| |
no calls.
In that case we simply ignore the landing pad and split live ranges before the
first terminator.
llvm-svn: 124907
|
| |
|
|
| |
llvm-svn: 124904
|
| |
|
|
|
|
| |
purpose. Fixes PR9080!
llvm-svn: 124903
|
| |
|
|
|
|
|
|
|
|
|
| |
If interference reaches the last split point, it is effectively live out and
should be marked as 'MustSpill'.
This can make a difference when the terminator uses a register. There is no way
that register can be reused in the outgoing CFG bundle, even if it isn't live
out.
llvm-svn: 124900
|
| |
|
|
|
|
|
| |
5 to match the current doc.
Added FIXME reminder Make it really configurable later.
llvm-svn: 124899
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(yes, this is different from R_ARM_CALL)
- Adds a new method getARMBranchTargetOpValue() which handles the
necessary distinction between the conditional and unconditional br/bl
needed for ARM/ELF
At least for ARM mode, the needed fixup for conditional versus unconditional
br/bl is identical, but the ARM docs and existing ARM tools expect this
reloc type...
Added a few FIXME's for future naming fixups in ARMInstrInfo.td
llvm-svn: 124895
|
| |
|
|
|
|
|
|
| |
A live range cannot be split everywhere in a basic block. A split must go before
the first terminator, and if the variable is live into a landing pad, the split
must happen before the call that can throw.
llvm-svn: 124894
|
| |
|
|
|
|
|
| |
We should not be attempting a region split if it won't lead to at least one
directly allocatable interval. That could cause infinite splitting loops.
llvm-svn: 124893
|
| |
|
|
|
|
| |
custom conversion functions).
llvm-svn: 124872
|
| |
|
|
|
|
|
| |
infrastructure. This makes lowering 256-bit vectors to 128-bit
vectors simple when 256-bit vector support is not available.
llvm-svn: 124868
|
| |
|
|
|
|
| |
filesystem.
llvm-svn: 124864
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
precisely track pressure on a selection DAG, but we can at least keep
it balanced. This design accounts for various interesting aspects of
selection DAGS: register and subregister copies, glued nodes, dead
nodes, unused registers, etc.
Added SUnit::NumRegDefsLeft and ScheduleDAGSDNodes::RegDefIter.
Note: I disabled PrescheduleNodesWithMultipleUses when register
pressure is enabled, based on no evidence other than I don't think it
makes sense to have both enabled.
llvm-svn: 124853
|
| |
|
|
|
|
| |
entries. DebugLoc associated with a DBG_VALUE is used to identify lexical scope of the variable. After register allocation, while inserting DBG_VALUE remember original debug location for the first instruction and reuse it, otherwise dwarf writer may be mislead in identifying the variable's scope.
llvm-svn: 124845
|
| |
|
|
| |
llvm-svn: 124843
|
| |
|
|
| |
llvm-svn: 124842
|
| |
|
|
|
|
|
|
| |
When the live range is live through a block that doesn't use the register, but
that has interference, region splitting wants to split at the top and bottom of
the basic block.
llvm-svn: 124839
|
| |
|
|
|
|
|
|
|
|
| |
Allow a live range to end with a kill flag, but don't allow a kill flag that
doesn't end the live range.
This makes the machine code verifier more useful during register allocation when
kill flag computation is deferred.
llvm-svn: 124838
|
| |
|
|
| |
llvm-svn: 124831
|
| |
|
|
| |
llvm-svn: 124827
|
| |
|
|
|
|
|
|
| |
are not sorted into sub+icmp.
This transforms another 1000 switches in gcc.c.
llvm-svn: 124826
|
| |
|
|
| |
llvm-svn: 124819
|
| |
|
|
|
|
| |
blocks.
llvm-svn: 124815
|
| |
|
|
| |
llvm-svn: 124814
|
| |
|
|
| |
llvm-svn: 124813
|
| |
|
|
|
|
|
|
|
|
| |
If the found value is not live-through the block, we should only add liveness up
to the requested slot index. When the value is live-through, the whole block
should be colored.
Bug found by SSA verification in the machine code verifier.
llvm-svn: 124812
|
| |
|
|
|
|
|
| |
These end points come from the inserted copies, and can be passed directly to
useIntv. This simplifies the coloring code.
llvm-svn: 124799
|
| |
|
|
| |
llvm-svn: 124798
|
| |
|
|
|
|
|
|
|
|
| |
matching EXTRACT_SUBVECTOR to VEXTRACTF128 along with support routines
to examine and translate index values. VINSERTF128 comes next. With
these two in place we can begin supporting more AVX operations as
INSERT/EXTRACT can be used as a fallback when 256-bit support is not
available.
llvm-svn: 124797
|
| |
|
|
| |
llvm-svn: 124794
|
| |
|
|
|
|
|
|
|
|
| |
auto-simplifier). This has a big impact on Ada code, but not much else.
Unfortunately the impact is mostly negative! This is due to PR9004 (aka
SCCP failing to resolve conditional branch conditions in the destination
blocks of the branch), in which simple correlated expressions are not
resolved but complicated ones are, so simplifying has a bad effect!
llvm-svn: 124788
|
| |
|
|
| |
llvm-svn: 124779
|
| |
|
|
| |
llvm-svn: 124778
|
| |
|
|
|
|
|
|
| |
Reversing the operands allows us to fold, but doesn't force us to. Also, at
this point the DAG is still being optimized, so the check for hasOneUse is not
very precise.
llvm-svn: 124773
|
| |
|
|
| |
llvm-svn: 124771
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The greedy register allocator revealed some problems with the value mapping in
SplitKit. We would sometimes start mapping values before all defs were known,
and that could change a value from a simple 1-1 mapping to a multi-def mapping
that requires ssa update.
The new approach collects all defs and register assignments first without
filling in any live intervals. Only when finish() is called, do we compute
liveness and mapped values. At this time we know with certainty which values map
to multiple values in a split range.
This also has the advantage that we can compute live ranges based on the
remaining uses after rematerializing at split points.
The current implementation has many opportunities for compile time optimization.
llvm-svn: 124765
|
| |
|
|
| |
llvm-svn: 124759
|
| |
|
|
| |
llvm-svn: 124755
|
| |
|
|
| |
llvm-svn: 124752
|
| |
|
|
|
|
|
|
| |
overflow (nsw flag), which was disabled because it breaks 254.gap. I have
informed the GAP authors of the mistake in their code, and arranged for the
testsuite to use -fwrapv when compiling this benchmark.
llvm-svn: 124746
|
| |
|
|
| |
llvm-svn: 124725
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the job of the later optzn passes easier, allowing the vast amount of
icmp transforms to chew on it.
We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting
binary on i386-linux.
The testcase from README.txt now compiles into
decl %edi
cmpl $3, %edi
sbbl %eax, %eax
andl $1, %eax
ret
llvm-svn: 124724
|