| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
it may be used in contexts where preheader insertion may have failed due
to an indirectbr.
Make LoopSimplify's LoopSimplify::SeparateNestedLoop properly fail in
the case that it would require splitting an indirectbr edge.
These fix PR5502.
llvm-svn: 89484
|
|
|
|
|
|
| |
introduce these, and it's beneficial to later passes to clean them up.
llvm-svn: 89298
|
|
|
|
|
|
|
| |
on loops having dedicated exits, which LoopSimplify can no longer always
guarantee.
llvm-svn: 86181
|
|
|
|
|
|
|
|
|
| |
unsplittable critical edges, which means the introduction of
loops which cannot be transformed to LoopSimplify form. Fix
LoopSimplify to avoid transforming such loops into invalid
code.
llvm-svn: 86176
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
while calling changeImmediateDominator, which removes elements from the
vector. This fixes PR5097.
llvm-svn: 83166
|
|
|
|
| |
llvm-svn: 82990
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
instead of a bool argument, and to do the dominator check itself.
This makes it eaiser to use when DominatorTree information is
available.
llvm-svn: 80920
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
| |
llvm-svn: 77635
|
|
|
|
| |
llvm-svn: 76702
|
|
|
|
|
|
| |
and use this to simplify more code.
llvm-svn: 75722
|
|
|
|
|
|
| |
function.
llvm-svn: 75584
|
|
|
|
| |
llvm-svn: 74807
|
|
|
|
| |
llvm-svn: 74491
|
|
|
|
|
|
|
| |
LoopInfo will handle removing it from the Loop, as well as updating
its own tables.
llvm-svn: 74398
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
when one of them can be converted to a trivial icmp and conditional
branch.
This addresses what is essentially a phase ordering problem.
SimplifyCFG knows how to do this transformation, but it doesn't do so
if the primary block has any instructions in it other than an icmp and
a branch. In the given testcase, the block contains other instructions,
however they are loop-invariant and can be hoisted. SimplifyCFG doesn't
have LoopInfo though, so it can't hoist them. And, it's important that
the blocks be merged before LoopRotation, as it doesn't support
multiple-exit loops.
llvm-svn: 74396
|
|
|
|
| |
llvm-svn: 63198
|
|
|
|
| |
llvm-svn: 55779
|
|
|
|
| |
llvm-svn: 52616
|
|
|
|
| |
llvm-svn: 52053
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123.
llvm-svn: 50265
|
|
|
|
|
|
|
|
|
| |
as a global helper function. At the same type, switch it from taking
a vector of predecessors to an arbitrary sequential input. This allows
us to switch LoopSimplify to use a SmallVector for various temporary
vectors that it passed into SplitBlockPredecessors.
llvm-svn: 50020
|
|
|
|
|
|
| |
nodes, removing a hack.
llvm-svn: 50019
|
|
|
|
|
|
| |
instead of doing it after every call.
llvm-svn: 50018
|
|
|
|
| |
llvm-svn: 50015
|
|
|
|
|
|
|
|
| |
Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.
llvm-svn: 49277
|
|
|
|
|
|
| |
and also update the cloning interface's major user, the loop optimizations.
llvm-svn: 48088
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
|
|
| |
This involves a small interface change.
llvm-svn: 44348
|
|
|
|
|
|
| |
can have uses too. Wouldn't it be nice if invoke didn't exist? :)
llvm-svn: 43426
|
|
|
|
|
|
|
|
|
|
| |
DominatorInternals.h
in CodeExtractor and LoopSimplify unnecessary.
Hartmut, could you confirm that this fixes the issues you were seeing?
llvm-svn: 43115
|
|
|
|
|
|
| |
VC++. Please review.
llvm-svn: 43081
|
|
|
|
| |
llvm-svn: 41207
|
|
|
|
| |
llvm-svn: 40859
|
|
|
|
| |
llvm-svn: 40062
|
|
|
|
|
|
| |
by _GLIBCXX_DEBUG.
llvm-svn: 37796
|
|
|
|
|
|
| |
from LoopSimplify.cpp to Dominator.cpp
llvm-svn: 37689
|
|
|
|
| |
llvm-svn: 37545
|
|
|
|
| |
llvm-svn: 37542
|
|
|
|
| |
llvm-svn: 37541
|
|
|
|
| |
llvm-svn: 37540
|
|
|
|
|
|
| |
Now LoopSimplify does not require nor preserve ETForest.
llvm-svn: 37512
|
|
|
|
| |
llvm-svn: 37415
|