| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 92596
|
|
|
|
| |
llvm-svn: 91635
|
|
|
|
|
|
|
|
|
|
| |
non-landing pad basic block as the successor to a block that ends in an
unconditional jump will cause block folding to remove the added block as a
successor. Thus eventually removing it AND the landing pad entirely. Critical
edge splitting is an optimization, so we can safely turn it off when dealing
with landing pads.
llvm-svn: 91634
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This introduces a new pass, SlotIndexes, which is responsible for numbering
instructions for register allocation (and other clients). SlotIndexes numbering
is designed to match the existing scheme, so this patch should not cause any
changes in the generated code.
For consistency, and to avoid naming confusion, LiveIndex has been renamed
SlotIndex.
The processImplicitDefs method of the LiveIntervals analysis has been moved
into its own pass so that it can be run prior to SlotIndexes. This was
necessary to match the existing numbering scheme.
llvm-svn: 85979
|
|
|
|
|
|
| |
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
|
|
|
|
|
|
|
| |
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
|
|
|
|
| |
llvm-svn: 83255
|
|
|
|
| |
llvm-svn: 83254
|
|
|
|
|
|
| |
require a LiveIntervals instance in future.
llvm-svn: 81374
|
|
|
|
|
|
|
|
| |
a new class, MachineInstrIndex, which hides arithmetic details from
most clients. This is a step towards allowing the register allocator
to update/insert code during allocation.
llvm-svn: 81040
|
|
|
|
| |
llvm-svn: 79832
|
|
|
|
|
|
| |
register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg.
llvm-svn: 78620
|
|
|
|
| |
llvm-svn: 77754
|
|
|
|
|
|
|
|
|
|
|
|
| |
as an (index,bool) pair. The bool flag records whether the kill is a
PHI kill or not. This code will be used to enable splitting of live
intervals containing PHI-kills.
A slight change to live interval weights introduced an extra spill
into lsr-code-insertion (outside the critical sections). The test
condition has been updated to reflect this.
llvm-svn: 75097
|
|
|
|
| |
llvm-svn: 73634
|
|
|
|
|
|
| |
trivial rewriter.
llvm-svn: 72729
|
|
|
|
| |
llvm-svn: 57424
|
|
|
|
| |
llvm-svn: 57046
|
|
|
|
|
|
| |
isReg, etc., from isRegister, etc.
llvm-svn: 57006
|
|
|
|
|
|
|
|
|
|
| |
so we don't lose copies when two of them have
the same source. I don't know what I was thinking when I wrote this originally.
Note: There's probably a more efficient way to do this, but I need to think about it some more, and about what determinism
guarantees need to be present.
llvm-svn: 56964
|
|
|
|
| |
llvm-svn: 56893
|
|
|
|
| |
llvm-svn: 56674
|
|
|
|
| |
llvm-svn: 56567
|
|
|
|
| |
llvm-svn: 56485
|
|
|
|
|
|
|
|
|
| |
can't
just use LI::MergeValueAsValue, as its behavior in the presence of overlapping ranges
isn't what StrongPHIElimination wants.
llvm-svn: 56472
|
|
|
|
| |
llvm-svn: 55779
|
|
|
|
| |
llvm-svn: 54780
|
|
|
|
| |
llvm-svn: 54742
|
|
|
|
|
|
| |
2) Conditionalize temporary insertion if we don't need it.
llvm-svn: 54741
|
|
|
|
|
|
|
|
| |
Also, fix a few problems when creating
live intervals for temporaries created by phi elimination.
llvm-svn: 54483
|
|
|
|
|
|
|
|
| |
break up the case where two different
phis want to coalesce with the same vreg.
llvm-svn: 54426
|
|
|
|
|
|
| |
vreg.
llvm-svn: 54422
|
|
|
|
| |
llvm-svn: 54421
|
|
|
|
| |
llvm-svn: 54371
|
|
|
|
| |
llvm-svn: 54369
|
|
|
|
|
|
| |
to Evan for pointing these out.
llvm-svn: 54225
|
|
|
|
|
|
|
|
| |
are inputs to two-address instructions
that themselves define a range we already care about.
llvm-svn: 54185
|
|
|
|
|
|
|
|
| |
need to merge over all liveranges in
the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI.
llvm-svn: 54174
|
|
|
|
|
|
|
|
|
|
| |
more, I realized that the right thing to do
is to have StrongPHIElimination use its knowledge of the PHIs before they're erased to update the intervals appropriate. This is
both simpler and more accurate than the alternative, which was having LIA figure it out when it renumbered things, plus it's just
the right thing to do!
llvm-svn: 54077
|
|
|
|
|
|
| |
to the handled set so it will get filtered out in future iterations.
llvm-svn: 54065
|
|
|
|
| |
llvm-svn: 54062
|
|
|
|
|
|
| |
indices will change after renumbering.
llvm-svn: 53985
|
|
|
|
| |
llvm-svn: 52016
|
|
|
|
| |
llvm-svn: 52013
|
|
|
|
|
|
| |
predecessors of a block containing a PHI.
llvm-svn: 51950
|
|
|
|
| |
llvm-svn: 51922
|
|
|
|
|
|
| |
by triggering a renumbering after phi elimination.
llvm-svn: 51780
|
|
|
|
|
|
|
|
|
|
|
| |
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.
Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.
llvm-svn: 51022
|
|
|
|
|
|
|
| |
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
|
|
|
|
|
|
| |
node and its inputs.
llvm-svn: 49070
|