| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
on RAUW of functions, this is a correctness issue instead of a mere memory
usage problem.
No testcase until the new MergeFunctions can land.
llvm-svn: 103653
|
| |
|
|
|
|
|
| |
other places, killing a valid transformation is not the right
answer.
llvm-svn: 102850
|
| |
|
|
|
|
|
|
|
|
| |
halting analysis, it is illegal to delete a call to a read-only function.
The correct solution is almost certainly to add a "must halt" attribute and
only allow deletions in its presence.
XFAIL the relevant testcase for now.
llvm-svn: 102831
|
| |
|
|
|
|
|
| |
reflect that it includes all inlined calls now, not just
devirtualized ones.
llvm-svn: 102824
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that appear due to inlining a callee as candidates for
futher inlining, but a recent patch made it do this if
those call sites were indirect and became direct.
Unfortunately, in bizarre cases (see testcase) doing this
can cause us to infinitely inline mutually recursive
functions into callers not in the cycle. Fix this by
keeping track of the inline history from which callsite
inline candidates got inlined from.
This shouldn't affect any "real world" code, but is required
for a follow on patch that is coming up next.
llvm-svn: 102822
|
| |
|
|
|
|
|
|
| |
argument.
Radar 7927803
llvm-svn: 102760
|
| |
|
|
| |
llvm-svn: 102296
|
| |
|
|
|
|
| |
the worklist, making them inline candidates.
llvm-svn: 102213
|
| |
|
|
|
|
|
|
|
| |
This fixes a bug where calls inlined into an invoke would get
changed into an invoke but the array would keep pointing to
the (now dead) call. The improved inliner behavior is still
disabled for now.
llvm-svn: 102196
|
| |
|
|
| |
llvm-svn: 102153
|
| |
|
|
|
|
|
|
|
|
| |
that appear in the SCC as a result of inlining as candidates
for inlining. Change this so that it *does* consider call
sites that change from being indirect to being direct as a
result of inlining. This allows it to completely
"devirtualize" the testcase.
llvm-svn: 102146
|
| |
|
|
|
|
|
|
| |
arguments are handled with a new InlineFunctionInfo class. This
makes it easier to extend InlineFunction to return more info in the
future.
llvm-svn: 102137
|
| |
|
|
| |
llvm-svn: 101899
|
| |
|
|
| |
llvm-svn: 101846
|
| |
|
|
|
|
|
|
| |
Arg promotion was deleting call graph nodes that still had references
from the 'indirect' CGN. Like the inliner, it should only delete the
function if all references are gone.
llvm-svn: 101845
|
| |
|
|
|
|
|
| |
Probably the best way to know that all getOperand() calls have been handled
is to replace that API instead of updating.
llvm-svn: 101579
|
| |
|
|
|
|
|
|
| |
to CallGraphSCCPass's instead of passing around a
std::vector<CallGraphNode*>. No functionality change,
but now we have a much tidier interface.
llvm-svn: 101558
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
with a fix for self-hosting
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101465
|
| |
|
|
| |
llvm-svn: 101434
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
with a fix
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101397
|
| |
|
|
| |
llvm-svn: 101368
|
| |
|
|
|
|
|
|
|
|
| |
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101364
|
| |
|
|
|
|
|
|
| |
The commit "Adding IPSCCP and Internalize passes to the C-bindings" introduced
new dependencies for IPO. Add these to the CMAKE build as otherwise the
BUILD_SHARED_LIBS=1 build fails.
llvm-svn: 101313
|
| |
|
|
|
|
| |
- TryToOptimizeStoreOfMallocToGlobal should check if TargetData is available and bail out if it is not. The transformations being done requires TD.
llvm-svn: 101285
|
| |
|
|
|
|
| |
have been removed in r101231.
llvm-svn: 101232
|
| |
|
|
| |
llvm-svn: 101231
|
| |
|
|
| |
llvm-svn: 101223
|
| |
|
|
|
|
|
|
|
| |
it can check whether the visible direct callers are passing in parameters to
dead arguments and replace those with undef.
This reinstates r94322 with bugs fixed.
llvm-svn: 101213
|
| |
|
|
|
|
|
|
| |
parameters in the CBE by implicitly adding a fixed argument.
This allows eliminating a work-around from DAE. Patch by
Sylvere Teissier!
llvm-svn: 100944
|
| |
|
|
| |
llvm-svn: 100936
|
| |
|
|
| |
llvm-svn: 100893
|
| |
|
|
| |
llvm-svn: 100677
|
| |
|
|
| |
llvm-svn: 100549
|
| |
|
|
|
|
| |
its result
llvm-svn: 100547
|
| |
|
|
| |
llvm-svn: 100546
|
| |
|
|
|
|
| |
and remove assumptions about operand order
llvm-svn: 100544
|
| |
|
|
|
|
| |
really just declarations. This is related to PR6524
llvm-svn: 100269
|
| |
|
|
|
|
|
| |
in particular, they end up aligning strings at 16-byte boundaries, and
there's no way for GlobalOpt to check OptForSize.
llvm-svn: 100172
|
| |
|
|
| |
llvm-svn: 100160
|
| |
|
|
|
|
|
|
|
| |
is necessary. Inherits from new templated baseclass CallSiteBase<>
which is highly customizable. Base CallSite on it too, in a configuration
that allows full mutation.
Adapt some call sites in analyses to employ ImmutableCallSite.
llvm-svn: 100100
|
| |
|
|
|
|
| |
patch back in r94322.
llvm-svn: 100097
|
| |
|
|
|
|
|
| |
of the previous load - it's usually important. For example, we don't want
to blindly turn an unaligned load into an aligned one.
llvm-svn: 99699
|
| |
|
|
|
|
|
|
|
|
|
|
| |
I have audited all getOperandNo calls now, fixing
hidden assumptions. CallSite related uglyness will
be eliminated successively.
Note this patch has a long and griveous history,
for all the back-and-forths have a look at
CallSite.h's log.
llvm-svn: 99399
|
| |
|
|
| |
llvm-svn: 99398
|
| |
|
|
|
|
|
|
| |
if Function::hasAddressTaken works as advertised
also included some cosmetic cleanups
llvm-svn: 99276
|
| |
|
|
| |
llvm-svn: 99171
|
| |
|
|
|
|
| |
we can reapply the InvokeInst operand reordering patch. (see r98957).
llvm-svn: 99170
|
| |
|
|
|
|
|
| |
and use this (as well as getCalledValue) to access the callee,
instead of {g|s}etOperand(0).
llvm-svn: 99084
|
| |
|
|
|
|
| |
http://smooshlab.apple.com:8010/builders/clang-x86_64-darwin10-fnt/builds/703 in the nightly test suite
llvm-svn: 98958
|
| |
|
|
|
|
|
|
|
|
|
| |
This time I did a self-hosted bootstrap on Linux x86-64,
with no problems. Let's see how darwin 64-bit self-hosting
goes. At the first sign of failure I'll back this out.
Maybe the valgrind bots give me a hint of what may be wrong
(it at all).
llvm-svn: 98957
|