| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 86972
|
| |
|
|
|
|
| |
MachineBasicBlock so other passes can utilize it.
llvm-svn: 86947
|
| |
|
|
| |
llvm-svn: 86928
|
| |
|
|
| |
llvm-svn: 86926
|
| |
|
|
|
|
| |
miscompilations casued by PreAllocSplitting.
llvm-svn: 86919
|
| |
|
|
|
|
| |
can be made to fall through into the other.
llvm-svn: 86909
|
| |
|
|
|
|
| |
"nounwind" attribute.
llvm-svn: 86897
|
| |
|
|
|
|
|
| |
instead of typedefs for std::pair. This simplifies the type of
SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator>
llvm-svn: 86885
|
| |
|
|
|
|
| |
in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction.
llvm-svn: 86876
|
| |
|
|
| |
llvm-svn: 86875
|
| |
|
|
|
|
| |
debug info.
llvm-svn: 86874
|
| |
|
|
| |
llvm-svn: 86873
|
| |
|
|
|
|
|
|
|
|
|
| |
tail merging support to handle more cases.
- Recognize several cases where tail merging is beneficial even when
the tail size is smaller than the generic threshold.
- Make use of MachineInstrDesc::isBarrier to help detect
non-fallthrough blocks.
- Check for and avoid disrupting fall-through edges in more cases.
llvm-svn: 86871
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Edges are split before any phis are eliminated, so the code is SSA.
- Create a proper IR BasicBlock for the split edges.
- LiveVariables::addNewBlock now has same syntax as
MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
set rather than successor live-in set.
This feature still causes some miscompilations.
llvm-svn: 86867
|
| |
|
|
| |
llvm-svn: 86856
|
| |
|
|
| |
llvm-svn: 86855
|
| |
|
|
|
|
| |
the numbers mean.
llvm-svn: 86854
|
| |
|
|
| |
llvm-svn: 86853
|
| |
|
|
| |
llvm-svn: 86794
|
| |
|
|
|
|
| |
function it's generated for.
llvm-svn: 86779
|
| |
|
|
| |
llvm-svn: 86771
|
| |
|
|
| |
llvm-svn: 86763
|
| |
|
|
| |
llvm-svn: 86753
|
| |
|
|
|
|
|
|
|
| |
constant whose component type is not a legal type for the target.
(If the target ConstantPool cannot handle this type either, it has
an opportunity to merge elements. In practice any target with
8-bit bytes must support i8 *as data*). 7320806 (partial).
llvm-svn: 86751
|
| |
|
|
| |
llvm-svn: 86748
|
| |
|
|
|
|
|
|
| |
Critical edges leading to a PHI node are split when the PHI source variable is
live out from the predecessor block. This help the coalescer eliminate more
PHI joins.
llvm-svn: 86725
|
| |
|
|
|
|
|
| |
Clean up some whitespace.
No functional changes.
llvm-svn: 86724
|
| |
|
|
|
|
| |
just throw them away.
llvm-svn: 86678
|
| |
|
|
| |
llvm-svn: 86642
|
| |
|
|
| |
llvm-svn: 86641
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch forbids implicit conversion of DenseMap::const_iterator to
DenseMap::iterator which was possible because DenseMapIterator inherited
(publicly) from DenseMapConstIterator. Conversion the other way around is now
allowed as one may expect.
The template DenseMapConstIterator is removed and the template parameter
IsConst which specifies whether the iterator is constant is added to
DenseMapIterator.
Actually IsConst parameter is not necessary since the constness can be
determined from KeyT but this is not relevant to the fix and can be addressed
later.
Patch by Victor Zverovich!
llvm-svn: 86636
|
| |
|
|
| |
llvm-svn: 86634
|
| |
|
|
|
|
| |
be renamed to break anti-dependencies.
llvm-svn: 86628
|
| |
|
|
| |
llvm-svn: 86601
|
| |
|
|
| |
llvm-svn: 86600
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instructions. This makes CodeGen dumps significantly less noisy.
Example before:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def,dead>, %D1<imp-def,dead>, %D2<imp-def,dead>, %D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>, %D7<imp-def,dead>, %D16<imp-def,dead>, %D17<imp-def,dead>, %D18<imp-def,dead>, %D19<imp-def,dead>, %D20<imp-def,dead>, %D21<imp-def,dead>, %D22<imp-def,dead>, %D23<imp-def,dead>, %D24<imp-def,dead>, %D25<imp-def,dead>, %D26<imp-def,dead>, %D27<imp-def,dead>, %D28<imp-def,dead>, %D29<imp-def,dead>, %D30<imp-def,dead>, %D31<imp-def,dead>, %CPSR<imp-def,dead>, %FPSCR<imp-def,dead>
Same example after:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %LR<imp-def,dead>, %CPSR<imp-def,dead>, ...
llvm-svn: 86583
|
| |
|
|
|
|
| |
dependencies were overly conservative for memory access that are known not to alias.
llvm-svn: 86580
|
| |
|
|
| |
llvm-svn: 86564
|
| |
|
|
| |
llvm-svn: 86522
|
| |
|
|
| |
llvm-svn: 86521
|
| |
|
|
| |
llvm-svn: 86446
|
| |
|
|
| |
llvm-svn: 86384
|
| |
|
|
| |
llvm-svn: 86354
|
| |
|
|
| |
llvm-svn: 86342
|
| |
|
|
| |
llvm-svn: 86340
|
| |
|
|
|
|
|
|
|
|
| |
except it doesn't care if the definitions' virtual registers differ. This is
used by machine LICM and other MI passes to perform CSE.
- Teach Thumb2InstrInfo::isIdentical() to check two t2LDRpci_pic are identical.
Since pc relative constantpool entries are always different, this requires it
it check if the values can actually the same.
llvm-svn: 86328
|
| |
|
|
|
|
| |
values can be lowered to registers. Coming soon, code to perform sret-demotion if return values cannot be lowered to registers
llvm-svn: 86324
|
| |
|
|
|
|
|
|
|
|
| |
A non-identity copy cannot be coalesced when the phi join destination register
is live at the copy site.
Also verify the condition that the PHI join source register is only used in
the PHI join. Otherwise the coalescing is invalid.
llvm-svn: 86322
|
| |
|
|
| |
llvm-svn: 86295
|
| |
|
|
|
|
| |
prints them with the leading '@'.
llvm-svn: 86261
|