| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 152842
|
| |
|
|
| |
llvm-svn: 152841
|
| |
|
|
|
|
| |
add the new node into the work list because there is a potential for further optimizations.
llvm-svn: 152784
|
| |
|
|
|
|
|
|
|
| |
out the DW_AT_name. Older gdbs unfortunately still use it to
disambiguate member functions in templated classes (gdb.cp/templates.exp).
rdar://11043421 (which is now deferred for a bit)
llvm-svn: 152782
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Transform:
(fsub x, (fadd x, y)) -> (fneg y) and
(fsub x, (fadd y, x)) -> (fneg y)
if 'unsafe math' is specified.
<rdar://problem/7540295>
llvm-svn: 152777
|
| |
|
|
| |
llvm-svn: 152711
|
| |
|
|
|
|
|
|
|
| |
There were cases where a value could be used and it's both crossing an invoke
and NOT crossing an invoke. This could happen in the landing pads. In that case,
we will demote the value to the stack like we did before.
<rdar://problem/10609139>
llvm-svn: 152705
|
| |
|
|
|
|
|
| |
expensive "getFirstTerminator" call. This reduces the time of compilation in
PR12258 from >10 minutes to < 10 seconds.
llvm-svn: 152704
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New flags: -misched-topdown, -misched-bottomup. They can be used with
the default scheduler or with -misched=shuffle. Without either
topdown/bottomup flag -misched=shuffle now alternates scheduling
direction.
LiveIntervals update is unimplemented with bottom-up scheduling, so
only -misched-topdown currently works.
Capped the ScheduleDAG hierarchy with a concrete ScheduleDAGMI class.
ScheduleDAGMI is aware of the top and bottom of the unscheduled zone
within the current region. Scheduling policy can be plugged into
the ScheduleDAGMI driver by implementing MachineSchedStrategy.
ConvergingScheduler is now the default scheduling algorithm.
It exercises the new driver but still does no reordering.
llvm-svn: 152700
|
| |
|
|
| |
llvm-svn: 152699
|
| |
|
|
|
|
|
|
|
|
|
| |
output (we're emitting a specification already and the information
isn't changing).
Saves 1% on the debug information for a build of llvm.
Fixes rdar://11043421
llvm-svn: 152697
|
| |
|
|
|
|
| |
that would trigger the truncation case.
llvm-svn: 152678
|
| |
|
|
|
|
|
|
|
| |
(i16 load $addr+c*sizeof(i16)) and replace uses of (i32 vextract) with the
i16 load. It should issue an extload instead: (i32 extload $addr+c*sizeof(i16)).
rdar://11035895
llvm-svn: 152675
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 152658
|
| |
|
|
| |
llvm-svn: 152614
|
| |
|
|
| |
llvm-svn: 152613
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 152611
|
| |
|
|
| |
llvm-svn: 152610
|
| |
|
|
|
|
|
| |
--- Reverse-merging r152486 into '.':
U lib/CodeGen/SjLjEHPrepare.cpp
llvm-svn: 152571
|
| |
|
|
|
|
| |
stringmap, instead of using a highly inefficient std::map of a pair of std::strings.
llvm-svn: 152541
|
| |
|
|
|
|
|
| |
Renamed methods caseBegin, caseEnd and caseDefault with case_begin, case_end, and case_default.
Added some notes relative to case iterators.
llvm-svn: 152532
|
| |
|
|
| |
llvm-svn: 152492
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The old way of determine when and where to spill a value that was used inside of
a landing pad resulted in spilling that value everywhere and not just at the
invoke edge.
This algorithm determines which values are used within a landing pad. It then
spills those values before the invoke and reloads them before the uses. This
should prevent excessive spilling in many cases, e.g. inside of loops.
<rdar://problem/10609139>
llvm-svn: 152486
|
| |
|
|
| |
llvm-svn: 152460
|
| |
|
|
|
|
| |
Somehow we never verified SSA dominance before.
llvm-svn: 152458
|
| |
|
|
| |
llvm-svn: 152457
|
| |
|
|
| |
llvm-svn: 152454
|
| |
|
|
|
|
| |
All uses of a virtual register must be dominated by its def.
llvm-svn: 152449
|
| |
|
|
|
|
| |
And add comments, since this is obviously confusing.
llvm-svn: 152445
|
| |
|
|
| |
llvm-svn: 152393
|
| |
|
|
|
|
| |
not private.
llvm-svn: 152382
|
| |
|
|
| |
llvm-svn: 152374
|
| |
|
|
| |
llvm-svn: 152373
|
| |
|
|
| |
llvm-svn: 152360
|
| |
|
|
| |
llvm-svn: 152356
|
| |
|
|
| |
llvm-svn: 152301
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/136146.html
Implemented CaseIterator and it solves almost all described issues: we don't need to mix operand/case/successor indexing anymore. Base iterator class is implemented as a template since it may be initialized either from "const SwitchInst*" or from "SwitchInst*".
ConstCaseIt is just a read-only iterator.
CaseIt is read-write iterator; it allows to change case successor and case value.
Usage of iterator allows totally remove resolveXXXX methods. All indexing convertions done automatically inside the iterator's getters.
Main way of iterator usage looks like this:
SwitchInst *SI = ... // intialize it somehow
for (SwitchInst::CaseIt i = SI->caseBegin(), e = SI->caseEnd(); i != e; ++i) {
BasicBlock *BB = i.getCaseSuccessor();
ConstantInt *V = i.getCaseValue();
// Do something.
}
If you want to convert case number to TerminatorInst successor index, just use getSuccessorIndex iterator's method.
If you want initialize iterator from TerminatorInst successor index, use CaseIt::fromSuccessorIndex(...) method.
There are also related changes in llvm-clients: klee and clang.
llvm-svn: 152297
|
| |
|
|
|
|
|
|
| |
Allow targets to provide their own schedulers (subclass of
ScheduleDAGInstrs) to the misched pass. Select schedulers using
-misched=...
llvm-svn: 152278
|
| |
|
|
| |
llvm-svn: 152262
|
| |
|
|
|
|
| |
implement their own MachineScheduler.
llvm-svn: 152261
|
| |
|
|
| |
llvm-svn: 152260
|
| |
|
|
| |
llvm-svn: 152259
|
| |
|
|
|
|
|
|
| |
ScheduleDAGInstrs will be the main interface for MI-level
schedulers. Make sure it's readable: one page of protected fields, one
page of public methids.
llvm-svn: 152258
|
| |
|
|
| |
llvm-svn: 152257
|
| |
|
|
|
|
| |
ScheduleDAGInstrs knows nothing about how instructions will be moved or inserted.
llvm-svn: 152256
|
| |
|
|
|
|
|
| |
We had half the API with one convention, half with another. Now was a
good time to clean it up.
llvm-svn: 152255
|
| |
|
|
| |
llvm-svn: 152221
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This one is particularly annoying because the hashing algorithm is
highly specialized, with a strange "equivalence" definition that subsets
the fields involved.
Still, this looks at the exact same set of data as the old code, but
without bitwise or-ing over parts of it and other mixing badness. No
functionality changed here. I've left a substantial fixme about the fact
that there is a cleaner and more principled way to do this, but it
requires making the equality definition actual stable for particular
types...
llvm-svn: 152218
|
| |
|
|
|
|
|
|
| |
the DebugLoc information can be maintained throughout by grabbing the DebugLoc
before the RemoveBranch and then passing the result to the InsertBranch.
Patch by Andrew Stanford-Jason!
llvm-svn: 152212
|
| |
|
|
| |
llvm-svn: 152210
|