| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
here. Since we only do the transform if there is
one use, strip off any such users in the hope of
making the transform fire more often.
llvm-svn: 64926
|
| |
|
|
| |
llvm-svn: 64915
|
| |
|
|
|
|
|
| |
crash because the alias would still be using the aliasee when the
aliasee was deleted.
llvm-svn: 64844
|
| |
|
|
| |
llvm-svn: 64773
|
| |
|
|
|
|
|
| |
one-definition-rule llvm-gcc changes (coming soon
to a tree near you!).
llvm-svn: 64588
|
| |
|
|
|
|
|
|
| |
alias can be morphed into the target. Implement this
transform, and fix a crash in the existing transform at
the same time.
llvm-svn: 64583
|
| |
|
|
| |
llvm-svn: 63198
|
| |
|
|
| |
llvm-svn: 62956
|
| |
|
|
| |
llvm-svn: 62877
|
| |
|
|
|
|
|
|
|
| |
There is now a direct way from value-use-iterator to incoming block in PHINode's API.
This way we avoid the iterator->index->iterator trip, and especially the costly
getOperandNo() invocation. Additionally there is now an assertion that the iterator
really refers to one of the PHI's Uses.
llvm-svn: 62869
|
| |
|
|
|
|
| |
of an instruction
llvm-svn: 62788
|
| |
|
|
|
|
|
|
|
| |
doing very similar pointer capture analysis.
Factor out the common logic. The new version
is from FunctionAttrs since it does a better
job than the version in BasicAliasAnalysis
llvm-svn: 62461
|
| |
|
|
| |
llvm-svn: 62279
|
| |
|
|
|
|
|
|
| |
vector and extraneous loop over it, 2) not delete globals used by
phis/selects etc which could actually be useful. This fixes PR3321.
Many thanks to Duncan for narrowing this down.
llvm-svn: 62201
|
| |
|
|
| |
llvm-svn: 62165
|
| |
|
|
|
|
|
| |
back to 200; 400 seems to be too high, loses more than
it gains.
llvm-svn: 62107
|
| |
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
| |
|
|
|
|
|
|
|
| |
compensation for turning off gcc's inliner. This gets
us closer to the amount of inlining we were getting before.
It is not a win on everything, of course, but seems to
gain overall.
llvm-svn: 62058
|
| |
|
|
| |
llvm-svn: 61991
|
| |
|
|
| |
llvm-svn: 61969
|
| |
|
|
| |
llvm-svn: 61879
|
| |
|
|
|
|
|
|
|
|
| |
was it not very helpful, it was also wrong! The problem
is shown in the testcase: the alloca might be passed to
a nocapture callee which dereferences it and returns the
original pointer. But because it was a nocapture call we
think we don't need to track its uses, but we do.
llvm-svn: 61876
|
| |
|
|
| |
llvm-svn: 61873
|
| |
|
|
| |
llvm-svn: 61872
|
| |
|
|
| |
llvm-svn: 61870
|
| |
|
|
|
|
| |
global aliases.
llvm-svn: 61754
|
| |
|
|
| |
llvm-svn: 61745
|
| |
|
|
| |
llvm-svn: 61744
|
| |
|
|
| |
llvm-svn: 61743
|
| |
|
|
|
|
|
|
| |
In fact this also deletes those with linkonce linkage,
however this is currently dead because for the moment
aliases aren't allowed to have this linkage type.
llvm-svn: 61742
|
| |
|
|
|
|
| |
nocapture attributes to them.
llvm-svn: 61610
|
| |
|
|
|
|
|
|
|
|
|
|
| |
not have pointer type. In particular, it may
be the condition argument for a select or a GEP
index. While I was unable to construct a testcase
for which some bits of the original pointer are
captured due to one of these, it's very very close
to being possible - so play safe and exclude these
possibilities.
llvm-svn: 61580
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the argument to be stored to an alloca by tracking uses
of the alloca. This occurs 4 times (out of 7121, 0.05%)
in MultiSource/Applications, so may not be worth it. On
the other hand, it is easy to do and fairly cheap. The
functions it helps are: W_addcom and W_addlit in spiff;
process_args (argv) in d (make_dparser); ercPixConcealIMB
in JM/ldecod.
llvm-svn: 61570
|
| |
|
|
|
|
| |
change.
llvm-svn: 61569
|
| |
|
|
|
|
|
|
|
|
| |
functions that don't write can't leak a pointer except through
the return value, so a void readonly function is implicitly nocapture.
Test these, and add a test that verifies that f1 calling f2 with an
otherwise dead pointer gets both of them marked nocapture.
llvm-svn: 61552
|
| |
|
|
|
|
| |
leading comments.
llvm-svn: 61548
|
| |
|
|
|
|
| |
calculating nocapture attributes.
llvm-svn: 61535
|
| |
|
|
| |
llvm-svn: 61532
|
| |
|
|
|
|
|
|
| |
to work out (in a very simplistic way) which function
arguments (pointer arguments only) are only dereferenced
and so do not escape. Mark such arguments 'nocapture'.
llvm-svn: 61525
|
| |
|
|
|
|
|
|
|
|
| |
and select instructions doesn't buy anything here
except extra complexity: the only difference in
the entire testsuite was that a readonly function
became readnone in MiBench/consumer-typeset. Add
a comment about this.
llvm-svn: 61478
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constants, since doing so is irrelevant for aliasing
purposes. While this doesn't increase the total number
of functions marked readonly or readnone in MultiSource/
Applications (3089), it does result in 12 functions being
marked readnone rather than readonly.
Before:
readnone: 820
readonly: 2269
After:
readnone: 832
readonly: 2257
llvm-svn: 61469
|
| |
|
|
|
|
| |
iterator invalidation problems.
llvm-svn: 61124
|
| |
|
|
|
|
|
|
|
| |
nodes. This allows it to do fairly general phi insertion if a
load from a pointer global wants to be SRAd but the load is used
by (recursive) phi nodes. This fixes a pessimization on ppc
introduced by Load PRE.
llvm-svn: 61123
|
| |
|
|
|
|
|
| |
the load multiple times, make sure the check the uses of the PHI to
ensure they are transformable.
llvm-svn: 61102
|
| |
|
|
| |
llvm-svn: 61101
|
| |
|
|
| |
llvm-svn: 61081
|
| |
|
|
|
|
| |
variable sized array allocations.
llvm-svn: 61051
|
| |
|
|
| |
llvm-svn: 61047
|
| |
|
|
|
|
| |
ValueIsOnlyUsedLocallyOrStoredToOneGlobal.
llvm-svn: 61046
|
| |
|
|
|
|
| |
Use GetElementPtrInst::hasAllZeroIndices where possible.
llvm-svn: 61045
|