| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ScheduleDAG; they don't correspond to any actual instructions so they
don't need to be scheduled.
This fixes a bug where the EntryToken was being scheduled multiple
times in some cases, though it ended up not causing any trouble because
EntryToken doesn't expand into anything. With this fixed the schedulers
reliably schedule the expected number of units, so we can check this
with an assertion.
This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it
ends up getting scheduled differently in a trivial way, though it was
enough to fool the prcontext+grep that the test does.
llvm-svn: 49701
|
| |
|
|
|
|
| |
instead of blue to distinguish them from regular dependencies.
llvm-svn: 49696
|
| |
|
|
| |
llvm-svn: 49676
|
| |
|
|
|
|
| |
memory intrinsic expansion code.
llvm-svn: 49666
|
| |
|
|
|
|
|
| |
stack tracebacks on Darwin x86-64 won't work by default;
nevertheless, everybody but me thinks this is a good idea.
llvm-svn: 49663
|
| |
|
|
| |
llvm-svn: 49652
|
| |
|
|
|
|
|
|
| |
much simpler than in LegalizeDAG because calls are
not yet expanded into call sequences: that happens
after type legalization has finished.
llvm-svn: 49634
|
| |
|
|
|
|
|
|
|
| |
in its maps. Add some sanity checks that catch
this kind of thing. Hopefully these can be
removed one day (once all problems are fixed!)
but for the moment it seems wise to have them in.
llvm-svn: 49612
|
| |
|
|
|
|
| |
parts. Fixes PR1643
llvm-svn: 49611
|
| |
|
|
|
|
| |
the result IRBuilder. Patch by Dominic Hamon.
llvm-svn: 49604
|
| |
|
|
| |
llvm-svn: 49583
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.
Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.
This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.
Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.
This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.
llvm-svn: 49572
|
| |
|
|
|
|
| |
backtracking.
llvm-svn: 49544
|
| |
|
|
|
|
| |
implicit_def instead of a copy.
llvm-svn: 49543
|
| |
|
|
|
|
| |
the uses when the live interval is being spilled.
llvm-svn: 49542
|
| |
|
|
| |
llvm-svn: 49524
|
| |
|
|
| |
llvm-svn: 49513
|
| |
|
|
| |
llvm-svn: 49512
|
| |
|
|
|
|
| |
them all.
llvm-svn: 49491
|
| |
|
|
| |
llvm-svn: 49469
|
| |
|
|
|
|
| |
can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.
llvm-svn: 49461
|
| |
|
|
|
|
|
|
| |
implicit_def.
- Added insert_subreg coalescing support.
llvm-svn: 49448
|
| |
|
|
| |
llvm-svn: 49415
|
| |
|
|
|
|
| |
Corresponds to -fno-unwind-tables (usually default in gcc).
llvm-svn: 49361
|
| |
|
|
|
|
|
| |
review feedback from Chris quite a while ago. No functionality
change.
llvm-svn: 49348
|
| |
|
|
|
|
| |
by Dan Gohman is fixed.
llvm-svn: 49330
|
| |
|
|
| |
llvm-svn: 49284
|
| |
|
|
|
|
|
| |
If it cannot be expanded, it will keep the old behaviour and try to shrink the constant.
Part of enhancement for PR2191.
llvm-svn: 49280
|
| |
|
|
|
|
|
|
| |
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.
llvm-svn: 49277
|
| |
|
|
|
|
|
| |
2. Coalescer can now create an interesting situation where a register def can
reaches itself without being killed.
llvm-svn: 49246
|
| |
|
|
|
|
|
|
|
|
| |
before an invoke. Failure to do this causes references in
the landing pad to variables that were not set. Fixes
g++.dg/eh/delayslot1.C
g++.dg/eh/fp-regs.C
g++.old-deja/g++.brendan/eh1.C
llvm-svn: 49243
|
| |
|
|
|
|
| |
(performace) issues.
llvm-svn: 49198
|
| |
|
|
| |
llvm-svn: 49197
|
| |
|
|
|
|
| |
the start of each of those functions. This makes assemblers unhappy
llvm-svn: 49176
|
| |
|
|
|
|
| |
- Be smarter about coalescing copies from implicit_def.
llvm-svn: 49168
|
| |
|
|
| |
llvm-svn: 49167
|
| |
|
|
|
|
| |
- Eliminate an implicit_def when it's being spilled.
llvm-svn: 49166
|
| |
|
|
|
|
|
|
| |
rather than copying it.
- Be (slightly) smarter about where to place the copies.
llvm-svn: 49165
|
| |
|
|
|
|
| |
There is no point in creating a long live range defined by an implicit_def. Scheduler now duplicates implicit_def instruction for each of its uses. Therefore, if an implicit_def node has multiple uses, it will become a number of very short live ranges, rather than a long one. This will make coalescer's job easier.
llvm-svn: 49164
|
| |
|
|
| |
llvm-svn: 49124
|
| |
|
|
|
|
| |
StripSymbols when EH is on.
llvm-svn: 49110
|
| |
|
|
|
|
| |
defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping.
llvm-svn: 49105
|
| |
|
|
| |
llvm-svn: 49099
|
| |
|
|
| |
llvm-svn: 49096
|
| |
|
|
|
|
| |
node and its inputs.
llvm-svn: 49070
|
| |
|
|
|
|
| |
unknown defining inst after PHI elimination.
llvm-svn: 49069
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
review feedback.
-enable-eh is still accepted but doesn't do anything.
EH intrinsics use Dwarf EH if the target supports that,
and are handled by LowerInvoke otherwise.
The separation of the EH table and frame move data is,
I think, logically figured out, but either one still
causes full EH info to be generated (not sure how to
split the metadata correctly).
MachineModuleInfo::needsFrameInfo is no longer used and
is removed.
llvm-svn: 49064
|
| |
|
|
| |
llvm-svn: 49053
|
| |
|
|
| |
llvm-svn: 49046
|
| |
|
|
| |
llvm-svn: 49043
|