| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 62571
|
| |
|
|
|
|
|
| |
as its comment says, even in the case where it will be generating
extending loads. This fixes PR3216.
llvm-svn: 62557
|
| |
|
|
| |
llvm-svn: 62545
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
SDNode subclasses to keep state that requires non-trivial
destructors, however it was already effectively impossible,
since the destructor isn't actually ever called. There currently
aren't any SDNode subclasses affected by this, and in general
it's desireable to keep SDNode objects light-weight.
This eliminates the last virtual member function in the SDNode
class, so it eliminates the need for a vtable pointer, making
SDNode smaller.
llvm-svn: 62539
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
uses are added to the From node while it is processing From's
use list, because of automatic local CSE. The fix is to avoid
visiting any new uses.
Fix a few places in the DAGCombiner that assumed that after
a RAUW call, the From node has no users and may be deleted.
This fixes PR3018.
llvm-svn: 62533
|
| |
|
|
| |
llvm-svn: 62467
|
| |
|
|
| |
llvm-svn: 62459
|
| |
|
|
| |
llvm-svn: 62383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
and every other instruction in their blocks to keep the terminator
instructions at the end, teach the post-RA scheduler how to operate
on ranges of instructions, and exclude terminators from the range
of instructions that get scheduled.
Also, exclude mid-block labels, such as EH_LABEL instructions, and
schedule code before them separately from code after them. This
fixes problems with the post-RA scheduler moving code past
EH_LABELs.
llvm-svn: 62366
|
| |
|
|
|
|
| |
member directly, which is private as of r55504.
llvm-svn: 62364
|
| |
|
|
| |
llvm-svn: 62359
|
| |
|
|
|
|
| |
by a single CopyToReg, it reuses the virtual register assigned to the CopyToReg. This won't work for SDNode that is a clone or is itself cloned. Disable this optimization for those nodes or it can end up with non-SSA machine instructions.
llvm-svn: 62356
|
| |
|
|
|
|
|
| |
Split Support/Registry.h into two files so that we have less to
recompile every time CommandLine.h is changed.
llvm-svn: 62312
|
| |
|
|
| |
llvm-svn: 62307
|
| |
|
|
|
|
|
| |
a new toy hazard recognizier heuristic which attempts to direct the
scheduler to avoid clumping large groups of loads or stores too densely.
llvm-svn: 62291
|
| |
|
|
| |
llvm-svn: 62286
|
| |
|
|
| |
llvm-svn: 62285
|
| |
|
|
|
|
|
| |
to support MachineInstr-based scheduling in addition to
SDNode-based scheduling.
llvm-svn: 62284
|
| |
|
|
| |
llvm-svn: 62279
|
| |
|
|
|
|
|
|
|
|
|
| |
and into the ScheduleDAGInstrs class, so that they don't get
destructed and re-constructed for each block. This fixes a
compile-time hot spot in the post-pass scheduler.
To help facilitate this, tidy and do some minor reorganization
in the scheduler constructor functions.
llvm-svn: 62275
|
| |
|
|
|
|
| |
previous commit.
llvm-svn: 62266
|
| |
|
|
| |
llvm-svn: 62262
|
| |
|
|
| |
llvm-svn: 62260
|
| |
|
|
| |
llvm-svn: 62256
|
| |
|
|
|
|
| |
hierarchy) that were used to handle debug info.
llvm-svn: 62199
|
| |
|
|
| |
llvm-svn: 62190
|
| |
|
|
| |
llvm-svn: 62184
|
| |
|
|
|
|
|
|
|
|
|
| |
scheduling dependencies. Add assertion checks to help catch
this.
It appears the Mips target defaults to list-td, and it has a
regression test that uses a physreg dependence. Such code was
liable to be miscompiled, and now evokes an assertion failure.
llvm-svn: 62177
|
| |
|
|
|
|
|
|
| |
via two paths, process it once not twice, d'oh!
Analysis, testcase and original patch thanks to
Mon Ping Wang.
llvm-svn: 62169
|
| |
|
|
|
|
| |
was not being cleaned by ExpungeNode.
llvm-svn: 62167
|
| |
|
|
| |
llvm-svn: 62166
|
| |
|
|
| |
llvm-svn: 62127
|
| |
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
| |
|
|
|
|
|
|
| |
register to a virtual register unless it requires an expensive cross class copy. That means we are only treating "expensive to copy" register dependency as physical register dependency.
Also future proof the scheduler to handle "normal" physical register dependencies. The code is not exercised yet.
llvm-svn: 62074
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 62036
|
| |
|
|
| |
llvm-svn: 62015
|
| |
|
|
| |
llvm-svn: 62005
|
| |
|
|
| |
llvm-svn: 61999
|
| |
|
|
| |
llvm-svn: 61991
|
| |
|
|
| |
llvm-svn: 61891
|
| |
|
|
|
|
|
|
| |
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.
llvm-svn: 61828
|
| |
|
|
|
|
| |
argument. This doesn't affect current functionality.
llvm-svn: 61779
|
| |
|
|
|
|
|
|
|
|
|
|
| |
AddPseudoTwoAddrDeps. This lets the scheduling infrastructure
avoid recalculating node heights. In very large testcases this
was a major bottleneck. Thanks to Roman Levenstein for finding
this!
As a side effect, fold-pcmpeqd-0.ll is now scheduled better
and it no longer requires spilling on x86-32.
llvm-svn: 61778
|
| |
|
|
|
|
|
| |
own OpActionsCapacity magic number; it can just use ISD::BUILTIN_OP_END,
as long as it takes care to round up when needed.
llvm-svn: 61733
|
| |
|
|
| |
llvm-svn: 61715
|
| |
|
|
| |
llvm-svn: 61707
|
| |
|
|
| |
llvm-svn: 61613
|
| |
|
|
| |
llvm-svn: 61612
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.
Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.
llvm-svn: 61611
|
| |
|
|
|
|
|
| |
and BRCOND conditions. Reorder a few methods while
there.
llvm-svn: 61547
|