| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 58486
|
|
|
|
|
|
| |
optimizations accordingly.
llvm-svn: 58457
|
|
|
|
|
|
|
|
|
| |
function.
- This explicitly models the costs for functions which should
"always" or "never" be inlined. This fixes bugs where such costs
were not previously respected.
llvm-svn: 58450
|
|
|
|
|
|
|
| |
I don't really see this as being needed, but there is little harm from doing
it.
llvm-svn: 58385
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 58355
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 58352
|
|
|
|
| |
llvm-svn: 58351
|
|
|
|
|
|
| |
that need it to require it by ID.
llvm-svn: 58238
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LargeBlockInfo, we can now dramatically simplify their implementation
and speed them up at the same time. Now the code has time proportional
to the number of uses of the alloca, not the size of the block.
This also eliminates code that tried to batch up different allocas which
are used in the same blocks, and eliminates the 'retry list' logic which
was baroque and no unneccesary. In addition to being a speedup for crazy
cases, this is also a nice cleanup:
PromoteMemoryToRegister.cpp | 270 +++++++++++++++-----------------------------
1 file changed, 96 insertions(+), 174 deletions(-)
llvm-svn: 58229
|
|
|
|
|
|
|
|
|
| |
a trivial dense map. Use this in RewriteSingleStoreAlloca to
avoid aggressively rescanning blocks over and over again. This
fixes PR2925, speeding up mem2reg on the testcase in that bug
from 4.56s to 0.02s in a debug build on my machine.
llvm-svn: 58227
|
|
|
|
|
|
| |
Understand that mul %x, 1 = %x.
llvm-svn: 58069
|
|
|
|
|
|
|
|
|
|
|
| |
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: 57870
|
|
|
|
| |
llvm-svn: 57864
|
|
|
|
| |
llvm-svn: 57660
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.
These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.
llvm-svn: 57608
|
|
|
|
| |
llvm-svn: 57515
|
|
|
|
|
|
|
| |
- Renumber fcmp predicates to match their icmp counterparts.
- Try swapping operands to expose more optimization opportunities.
llvm-svn: 57513
|
|
|
|
|
|
|
|
|
| |
e.g. uno && ueq -> ueq
ord && olt -> olt
ord && ueq -> oeq
llvm-svn: 57507
|
|
|
|
|
|
| |
constant expression with all zero indices as being the same as a bitcast.
llvm-svn: 57442
|
|
|
|
|
|
|
|
| |
a couple other cases for clarity, but shouldn't affect correctness.
Patch by Eli Friedman!
llvm-svn: 57387
|
|
|
|
|
|
| |
This patch fixes PR 2869
llvm-svn: 57369
|
|
|
|
| |
llvm-svn: 57353
|
|
|
|
|
|
|
| |
and APFloat::convertToInteger. Restore return value to
IEEE754. Adjust all users accordingly.
llvm-svn: 57329
|
|
|
|
| |
llvm-svn: 57320
|
|
|
|
| |
llvm-svn: 57305
|
|
|
|
|
|
| |
Patch by Samuel Tardieu.
llvm-svn: 57291
|
|
|
|
|
|
| |
patch by Samuel Tardieu!
llvm-svn: 57288
|
|
|
|
| |
llvm-svn: 57254
|
|
|
|
| |
llvm-svn: 57221
|
|
|
|
|
|
|
| |
This includes not marking a GEP involving a vector as unsafe, but only when it
has all zero indices. This allows scalarrepl to work in a few more cases.
llvm-svn: 57177
|
|
|
|
|
|
|
|
| |
shifting and masking inside a bswap expr. This allows it to handle
the cases from PR2842, which involve the intermediate 'or'
expressions being shifted, not just the input value.
llvm-svn: 57095
|
|
|
|
|
|
| |
ashr. It should only apply to lshr.
llvm-svn: 57089
|
|
|
|
|
|
|
|
| |
when deciding whether to mark a function readnone/readonly.
Since the pass is currently run before SROA, this may be
quite helpful. Requested by Chris on IRC.
llvm-svn: 57050
|
|
|
|
|
|
| |
applicable.
llvm-svn: 57033
|
|
|
|
|
|
| |
While hosting instruction check PHI node.
llvm-svn: 57025
|
|
|
|
|
|
| |
Why? Because it was there!
llvm-svn: 56996
|
|
|
|
| |
llvm-svn: 56994
|
|
|
|
|
|
|
|
|
|
|
| |
pointer bitcasts and GEP's", and centralize the
logic in Value::getUnderlyingObject. The
difference with stripPointerCasts is that
stripPointerCasts only strips GEPs if all
indices are zero, while getUnderlyingObject
strips GEPs no matter what the indices are.
llvm-svn: 56922
|
|
|
|
| |
llvm-svn: 56917
|
|
|
|
|
|
| |
instruction, not after. This fixes some uses of free'd memory.
llvm-svn: 56908
|
|
|
|
| |
llvm-svn: 56887
|
|
|
|
|
|
| |
attributes
llvm-svn: 56868
|
|
|
|
| |
llvm-svn: 56834
|
|
|
|
|
|
|
| |
huge simply connected components. Suggested
by Chris.
llvm-svn: 56787
|
|
|
|
| |
llvm-svn: 56786
|
|
|
|
| |
llvm-svn: 56784
|
|
|
|
|
|
|
| |
instead of hasWeakLinkage in a bunch of optimization
passes.
llvm-svn: 56782
|
|
|
|
| |
llvm-svn: 56716
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- return attributes - inreg, zext and sext
- parameter attributes
- function attributes - nounwind, readonly, readnone, noreturn
Return attributes use 0 as the index.
Function attributes use ~0U as the index.
This patch requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56704
|