| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
|
| |
|
|
|
|
| |
clears out more information than just the stored backedge taken count.
llvm-svn: 85664
|
| |
|
|
|
|
| |
the new common CodeMetrics code.
llvm-svn: 85663
|
| |
|
|
| |
llvm-svn: 85662
|
| |
|
|
| |
llvm-svn: 85661
|
| |
|
|
| |
llvm-svn: 85660
|
| |
|
|
|
|
|
| |
LoopUnrollPass.cpp, for consistency with other passes which are
similarly split.
llvm-svn: 85659
|
| |
|
|
|
|
| |
to unfold loop-invariant loads.
llvm-svn: 85657
|
| |
|
|
| |
llvm-svn: 85655
|
| |
|
|
| |
llvm-svn: 85641
|
| |
|
|
| |
llvm-svn: 85635
|
| |
|
|
|
|
|
| |
PHI operands by the predecessor order, sort them by the order used by the
first PHI in the block. This is still suffucient to expose duplicates.
llvm-svn: 85634
|
| |
|
|
|
|
|
| |
This reduces codesize on a variety of codes by 1-2% on x86-64. It also
helps clean up after SSAUpdater.
llvm-svn: 85626
|
| |
|
|
|
|
|
| |
This helps expose duplicate PHIs, which will make it easier for them
to be eliminated.
llvm-svn: 85623
|
| |
|
|
| |
llvm-svn: 85609
|
| |
|
|
| |
llvm-svn: 85498
|
| |
|
|
|
|
| |
static constructors with indirect gotos :)
llvm-svn: 85495
|
| |
|
|
|
|
| |
crash on any clang tests.
llvm-svn: 85465
|
| |
|
|
| |
llvm-svn: 85458
|
| |
|
|
| |
llvm-svn: 85457
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
argument is:
ArraySize * ElementSize
ElementSize * ArraySize
ArraySize << log2(ElementSize)
ElementSize << log2(ArraySize)
Refactor isArrayMallocHelper and delete isSafeToGetMallocArraySize, so that there is only 1 copy of the malloc array determining logic.
Update users of getMallocArraySize() to not bother calling isArrayMalloc() as well.
llvm-svn: 85421
|
| |
|
|
| |
llvm-svn: 85402
|
| |
|
|
| |
llvm-svn: 85390
|
| |
|
|
| |
llvm-svn: 85389
|
| |
|
|
|
|
| |
purposes for GVN/DSE.
llvm-svn: 85383
|
| |
|
|
|
|
|
|
| |
Checks on Demand algorithm which looks at arbitrary branches instead of loop
iterations. This is GSoC work by Andre Tavares with only editorial changes
applied!
llvm-svn: 85382
|
| |
|
|
|
|
|
|
|
| |
In the new world order, BlockAddress can have a BasicBlock operand.
This doesn't permute much, because if you have a ConstantExpr (or
anything more specific than Constant) we still know the operand has
to be a Constant.
llvm-svn: 85375
|
| |
|
|
| |
llvm-svn: 85327
|
| |
|
|
| |
llvm-svn: 85286
|
| |
|
|
|
|
|
|
|
|
| |
with multiple return values it inserts a PHI to merge them all together.
However, if the return values are all the same, it ends up with a pointless
PHI and this pointless PHI happens to really block SRoA from happening in
at least a silly C++ example written by Doug, but probably others. This
fixes rdar://7339069.
llvm-svn: 85206
|
| |
|
|
| |
llvm-svn: 85197
|
| |
|
|
|
|
| |
do anything than return "I don't know" at the moment.
llvm-svn: 85189
|
| |
|
|
| |
llvm-svn: 85185
|
| |
|
|
|
|
| |
to free()
llvm-svn: 85181
|
| |
|
|
|
|
| |
scalar redundancies.
llvm-svn: 85179
|
| |
|
|
|
|
|
| |
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176
|
| |
|
|
|
|
|
| |
the loop exiting block dominates the latch block; if ScalarEvolution
can prove that the trip-count is finite, that's sufficient.
llvm-svn: 85165
|
| |
|
|
|
|
| |
can safely use the NSW bit on the Add.
llvm-svn: 85164
|
| |
|
|
| |
llvm-svn: 85161
|
| |
|
|
|
|
|
|
|
|
| |
GEPs (more than one non-zero index) into simple GEPs (at most one
non-zero index). In some simple experiments using this it's not
uncommon to see 3% overall code size wins, because it exposes
redundancies that can be eliminated, however it's tricky to use
because instcombine aggressively undoes the work that this pass does.
llvm-svn: 85144
|
| |
|
|
| |
llvm-svn: 85120
|
| |
|
|
|
|
|
| |
All of the 'demorgan' related xforms need to use
dyn_castNotVal, not m_Not.
llvm-svn: 85119
|
| |
|
|
|
|
|
|
|
|
| |
strides for now, because it doesn't handle them correctly. This fixes a
miscompile of SingleSource/Benchmarks/Misc-C++/ray.
This problem was usually hidden because indvars transforms such induction
variables into negations of canonical induction variables.
llvm-svn: 85118
|
| |
|
|
| |
llvm-svn: 85090
|
| |
|
|
|
|
| |
not (or (icmp, icmp)) -> and(icmp, icmp)
llvm-svn: 85085
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
CmpInst::isSigned.
llvm-svn: 85037
|
| |
|
|
| |
llvm-svn: 85020
|
| |
|
|
|
|
|
|
| |
used elsewhere - an exit block is a block outside the loop branched to
from within the loop. An exiting block is a block inside the loop that
branches out.
llvm-svn: 85019
|