|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 93560 | 
| | 
| 
| 
| 
| 
| | the underlying PHI node insertion issue in SSAUpdate is fixed.
llvm-svn: 91821 | 
| | 
| 
| 
| | llvm-svn: 91645 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 |