|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 85680 | 
| | 
| 
| 
| | llvm-svn: 85671 | 
| | 
| 
| 
| 
| 
| 
| | auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670 | 
| | 
| 
| 
| | llvm-svn: 85668 | 
| | 
| 
| 
| 
| 
| 
| | 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 |