| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
makes it redundant. Removing the isMalloc() check.
llvm-svn: 84541
|
|
|
|
| |
llvm-svn: 84299
|
|
|
|
|
|
| |
when the loop inspects the bitcast operand.
llvm-svn: 82928
|
|
|
|
|
|
| |
just nounwind.
llvm-svn: 82927
|
|
|
|
|
|
|
|
| |
calls as to MallocInst.
Reviewed by Dan Gohman.
llvm-svn: 82300
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of CallGraphNode*'s. This also papers over a callgraph
problem where a pass (in this case, MemCpyOpt) introduces a new
function into the module (llvm.memset.i64) but doesn't add it to
the call graph (nor should it, since it is a function pass).
While it might be a good idea for MemCpyOpt to not synthesize
functions in a runOnFunction(), there is no need for FunctionAttrs
to be boneheaded, so fix it there. This fixes an assertion building
176.gcc.
llvm-svn: 80535
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
argpromotion and structretpromote. Basically, when replacing
a function, they used the 'changeFunction' api which changes
the entry in the function map (and steals/reuses the callgraph
node).
This has some interesting effects: first, the problem is that it doesn't
update the "callee" edges in any callees of the function in the call graph.
Second, this covers for a major problem in all the CGSCC pass stuff, which
is that it is completely broken when functions are deleted if they *don't*
reuse a CGN. (there is a cute little fixme about this though :).
This patch changes the protocol that CGSCC passes must obey: now the CGSCC
pass manager copies the SCC and preincrements its iterator to avoid passes
invalidating it. This allows CGSCC passes to mutate the current SCC. However
multiple passes may be run on that SCC, so if passes do this, they are now
required to *update* the SCC to be current when they return.
Other less interesting parts of this patch are that it makes passes update
the CG more directly, eliminates changeFunction, and requires clients of
replaceCallSite to specify the new callee CGN if they are changing it.
llvm-svn: 80527
|
|
|
|
|
|
|
|
| |
the readnone. Since MallocInst is scheduled for deletion
it doesn't seem worth doing anything more subtle, such as
having mayWriteToMemory return true for MallocInst.
llvm-svn: 71077
|
|
|
|
|
|
|
| |
be needed now that these intrinsics are marked
as not accessing memory.
llvm-svn: 66420
|
|
|
|
| |
llvm-svn: 66381
|
|
|
|
| |
llvm-svn: 66369
|
|
|
|
| |
llvm-svn: 65908
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|