| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
dragonegg self-hosting.
llvm-svn: 163687
|
|
|
|
|
|
|
|
|
| |
findLastUseBefore was previous considering virtreg liveness only, leading to
incorrect live intervals for reg units when instrs with physreg operands were
moved up.
llvm-svn: 163685
|
|
|
|
| |
llvm-svn: 163682
|
|
|
|
|
|
|
|
| |
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"
No functional change. Update r163344.
llvm-svn: 163679
|
|
|
|
|
|
|
|
|
|
| |
The input program may contain intructions which are not inside lifetime
markers. This can happen due to a bug in the compiler or due to a bug in
user code (for example, returning a reference to a local variable).
This commit adds checks that all of the instructions in the function and
invalidates lifetime ranges which do not contain all of the instructions.
llvm-svn: 163678
|
|
|
|
|
|
| |
Part of rdar://9797999
llvm-svn: 163667
|
|
|
|
| |
llvm-svn: 163654
|
|
|
|
|
|
|
|
| |
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"
No functional change. Update r163339.
llvm-svn: 163653
|
|
|
|
| |
llvm-svn: 163649
|
|
|
|
| |
llvm-svn: 163648
|
|
|
|
|
|
| |
Add support in the EmitMSInlineAsmStr() function for handling integer consts.
llvm-svn: 163645
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a pair of switch/branch where both depend on the value of the same variable and
the default case of the first switch/branch goes to the second switch/branch.
Code clean up and fixed a few issues:
1> handling the case where some cases of the 2nd switch are invalidated
2> correctly calculate the weight for the 2nd switch when it is a conditional eq
Testing case is modified from Alastair's original patch.
llvm-svn: 163635
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sub-register lane masks are bitmasks that can be used to determine if
two sub-registers of a virtual register will overlap. For example, ARM's
ssub0 and ssub1 sub-register indices don't overlap each other, but both
overlap dsub0 and qsub0.
The lane masks will be accurate on most targets, but on targets that use
sub-register indexes in an irregular way, the masks may conservatively
report that two sub-register indices overlap when the eventually
allocated physregs don't.
Irregular register banks also mean that the bits in a lane mask can't be
mapped onto register units, but the concept is similar.
llvm-svn: 163630
|
|
|
|
|
|
|
|
| |
Apparently, NumSubRegIndices was completely unused before. Adjust it by
one to include the null subreg index, just like getNumRegs() includes
the null register.
llvm-svn: 163628
|
|
|
|
|
|
| |
of lifetime markers. Disabling the pass for now.
llvm-svn: 163623
|
|
|
|
| |
llvm-svn: 163617
|
|
|
|
| |
llvm-svn: 163616
|
|
|
|
|
|
| |
functions. No functional change.
llvm-svn: 163596
|
|
|
|
|
|
| |
table size.
llvm-svn: 163594
|
|
|
|
| |
llvm-svn: 163593
|
|
|
|
|
|
| |
after using bugpoint to reduce the confusion presented by the original names, which no longer mean what they used to.
llvm-svn: 163592
|
|
|
|
|
|
| |
Factor similar code out of FNEG DAG combiner.
llvm-svn: 163587
|
|
|
|
|
|
| |
Patch by Brad Smith!
llvm-svn: 163584
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Hexagon target decided to use a lot of functionality from the
target-independent scheduler. That's fine, and other targets should be
able to do the same. This reorg and API update makes that easy.
For the record, ScheduleDAGMI was not meant to be subclassed. Instead,
new scheduling algorithms should be able to implement
MachineSchedStrategy and be done. But if need be, it's nice to be
able to extend ScheduleDAGMI, so I also made that easier. The target
scheduler is somewhat more apt to break that way though.
llvm-svn: 163580
|
|
|
|
|
|
| |
right now. We'll fix PR13303 a different way.
llvm-svn: 163570
|
|
|
|
| |
llvm-svn: 163569
|
|
|
|
| |
llvm-svn: 163568
|
|
|
|
| |
llvm-svn: 163567
|
|
|
|
| |
llvm-svn: 163561
|
|
|
|
| |
llvm-svn: 163557
|
|
|
|
| |
llvm-svn: 163556
|
|
|
|
|
|
| |
and InlineAsmVariant don't match.
llvm-svn: 163550
|
|
|
|
| |
llvm-svn: 163547
|
|
|
|
| |
llvm-svn: 163545
|
|
|
|
|
|
| |
and update the printOperand() function accordingly.
llvm-svn: 163544
|
|
|
|
| |
llvm-svn: 163542
|
|
|
|
| |
llvm-svn: 163539
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ARM backend can eliminate cmp instructions by reusing flags from a
nearby sub instruction with similar arguments.
Don't do that if the sub is predicated - the flags are not written
unconditionally.
<rdar://problem/12263428>
llvm-svn: 163535
|
|
|
|
| |
llvm-svn: 163532
|
|
|
|
|
|
| |
properly.
llvm-svn: 163530
|
|
|
|
|
|
| |
- Fix an remaining issue of PR11674 as well
llvm-svn: 163528
|
|
|
|
|
|
| |
Improve AQ instruction selection in the Hexagon MI scheduler.
llvm-svn: 163523
|
|
|
|
|
|
| |
This folding happens as early as possible for performance reasons, and to make sure it isn't foiled by other transforms (e.g. forming FMAs).
llvm-svn: 163519
|
|
|
|
| |
llvm-svn: 163518
|
|
|
|
|
|
|
|
| |
- If a boolean value is generated from CMOV and tested as boolean value,
simplify the use of test result by referencing the original condition.
RDRAND intrinisc is one of such cases.
llvm-svn: 163516
|
|
|
|
|
|
| |
concat_vectors, and a followup bug with SelectionDAG::getNode() creating nodes with invalid types.
llvm-svn: 163511
|
|
|
|
| |
llvm-svn: 163510
|
|
|
|
| |
llvm-svn: 163509
|
|
|
|
|
|
| |
intervals twice or to theirself.
llvm-svn: 163508
|
|
|
|
|
|
| |
single basic block.
llvm-svn: 163507
|