| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
the loop. This is needed because with indirectbr it may not be possible
for LoopSimplify to guarantee that all loop exit predecessors are
inside the loop. This fixes PR5437.
LCCSA no longer actually requires LoopSimplify form, but for now it
must still have the dependency because the PassManager doesn't know
how to schedule LoopSimplify otherwise.
llvm-svn: 86569
|
|
|
|
| |
llvm-svn: 86160
|
|
|
|
|
|
| |
the IR, and to implement the FIXME'd optimization.
llvm-svn: 83748
|
|
|
|
|
|
|
| |
inserted only once, just use vector. Don't compute ExitBlocks unless we
need it, change std::sort to array_pod_sort.
llvm-svn: 83747
|
|
|
|
| |
llvm-svn: 83701
|
|
|
|
| |
llvm-svn: 82991
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that get created during loop unswitching, and fix SplitBlockPredecessors'
LCSSA updating code to create new PHIs instead of trying to just move
existing ones.
Also, optimize Loop::verifyLoop, since it gets called a lot. Use
searches on a sorted list of blocks instead of calling the "contains"
function, as is done in other places in the Loop class, since "contains"
does a linear search. Also, don't call verifyLoop from LoopSimplify or
LCSSA, as the PassManager is already calling verifyLoop as part of
LoopInfo's verifyAnalysis.
llvm-svn: 81221
|
|
|
|
|
|
| |
tests significantly.
llvm-svn: 81101
|
|
|
|
|
|
|
|
|
| |
that these passes are properly preserved.
Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.
llvm-svn: 80926
|
|
|
|
| |
llvm-svn: 77635
|
|
|
|
| |
llvm-svn: 76702
|
|
|
|
| |
llvm-svn: 74807
|
|
|
|
|
|
|
| |
an invoke instruction, since the value isn't really live across that
edge.
llvm-svn: 74242
|
|
|
|
|
|
|
|
| |
the predecessors themselves. This halves the time
to optimize the testcase, beyond what my previous patch did.
llvm-svn: 69792
|
|
|
|
|
|
| |
testcase from PR3549. More improvements to come.
llvm-svn: 69788
|
|
|
|
|
|
|
|
|
| |
There is now a direct way from value-use-iterator to incoming block in PHINode's API.
This way we avoid the iterator->index->iterator trip, and especially the costly
getOperandNo() invocation. Additionally there is now an assertion that the iterator
really refers to one of the PHI's Uses.
llvm-svn: 62869
|
|
|
|
|
|
|
|
|
|
|
| |
LoopPass*.
- Although less precise, this means they can be used in clients
without RTTI (who would otherwise need to include LoopPass.h, which
eventually includes things using dynamic_cast). This was the
simplest solution that presented itself, but I am happy to use a
better one if available.
llvm-svn: 58010
|
|
|
|
| |
llvm-svn: 55779
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the GetResultInst instruction. It is still accepted in LLVM assembly
and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove
support for return instructions with multiple values. These are auto-upgraded
to use InsertValueInst instructions.
The IRBuilder still accepts multiple-value returns, and auto-upgrades them
to InsertValueInst instructions.
llvm-svn: 53941
|
|
|
|
| |
llvm-svn: 51890
|
|
|
|
|
|
| |
iterator invalidation. Fixes PR2385.
llvm-svn: 51777
|
|
|
|
|
|
| |
about a third.
llvm-svn: 51565
|
|
|
|
|
|
| |
use it instead of duplicating its functionality.
llvm-svn: 51499
|
|
|
|
|
|
| |
makefile targets to find these better.
llvm-svn: 51143
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 50604
|
|
|
|
|
|
|
|
| |
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.
llvm-svn: 49277
|
|
|
|
| |
llvm-svn: 47375
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
| |
llvm-svn: 41207
|
|
|
|
|
|
| |
branch is not necessary immediate dominators of merge blcok in all cases.
llvm-svn: 41144
|
|
|
|
| |
llvm-svn: 40604
|
|
|
|
| |
llvm-svn: 40034
|
|
|
|
|
|
|
|
| |
llvm-gcc build to succeed. Without this change it fails in libstdc++
compilation. This causes no regressions in dejagnu tests. However,
someone who knows this code better might want to review it.
llvm-svn: 39924
|
|
|
|
| |
llvm-svn: 39844
|
|
|
|
|
|
| |
This adds redundancy for now.
llvm-svn: 37492
|
|
|
|
| |
llvm-svn: 37407
|
|
|
|
| |
llvm-svn: 37403
|
|
|
|
| |
llvm-svn: 36994
|
|
|
|
| |
llvm-svn: 36873
|
|
|
|
| |
llvm-svn: 36662
|
|
|
|
|
|
|
| |
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652
|
|
|
|
| |
llvm-svn: 36632
|
|
|
|
| |
llvm-svn: 36258
|
|
|
|
| |
llvm-svn: 36247
|
|
|
|
| |
llvm-svn: 36017
|
|
|
|
|
|
|
| |
the Transforms library. This reduces debug library size by 132 KB, debug
binary size by 376 KB, and reduces link time for llvm tools slightly.
llvm-svn: 33939
|
|
|
|
|
|
| |
Revert last patch which caused iteration invalidation.
llvm-svn: 33901
|
|
|
|
| |
llvm-svn: 33897
|