History log of /external/llvm/lib/Analysis/CaptureTracking.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Analysis/CaptureTracking.cpp
4d63c8daec1759e60f85a49b7a91f88edf0c0a4d 03-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> CaptureTracking: Plug a loophole in the "too many uses" heuristic.

The heuristic was added to avoid spending too much compile time A specially
crafted test case (PR17461, PR16474) with many uses on a select or bitcast
instruction can still trigger the slow case. Add a check for that case.

This only affects compile time, don't have a good way to test it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191896 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
dc89737bcdbb8f69d8ae7578bdfa904cabcfc5ed 06-Jul-2013 Nick Lewycky <nicholas@mxc.ca> Extend 'readonly' and 'readnone' to work on function arguments as well as
functions. Make the function attributes pass add it to known library functions
and when it can deduce it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
ec3bb4b660fc2f8353c510ebfc15277bcf28df8b 10-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Remove unneeded #includes. Use forward declarations instead.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
c92b8aa79f4a2cd16f7b674189e425c2c367e886 09-Oct-2012 Nick Lewycky <nicholas@mxc.ca> Give CaptureTracker::shouldExplore a base implementation. Most users want to do
the same thing. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
620ee81fa0bef312d711688c86b73aa16f088509 11-May-2012 Chad Rosier <mcrosier@apple.com> Fix intendation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156589 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
bda43e95a03c19868106e8111d7a5bf1c924ec63 17-Jan-2012 Jakub Staszak <kubastaszak@gmail.com> Move includes to the .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148342 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
b48a18903a5769f0ecb295db069252576b1388b0 29-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Change CaptureTracking to pass a Use* instead of a Value* when a value is
captured. This allows the tracker to look at the specific use, which may be
especially interesting for function calls.

Use this to fix 'nocapture' deduction in FunctionAttrs. The existing one does
not iterate until a fixpoint and does not guarantee that it produces the same
result regardless of iteration order. The new implementation builds up a graph
of how arguments are passed from function to function, and uses a bottom-up walk
on the argument-SCCs to assign nocapture. This gets us nocapture more often, and
does so rather efficiently and independent of iteration order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
9f47fb66370e5513bb9f737923e8cb476088acec 21-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Fix crasher in GVN due to my recent capture tracking changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
6935b78e6f3b7dca7786041c56c9a795d2247659 21-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Add virtual destructor. Whoops!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
7912ef97ffde3ab3334143ddfb4cafdf04e2ebfc 20-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Less template, more virtual! Refactoring suggested by Chris in code review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145014 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
88990248d3bfb2f265fcf27f8a032ac0eb14d09f 14-Nov-2011 Nick Lewycky <nicholas@mxc.ca> Refactor capture tracking (which already had a couple flags for whether returns
and stores capture) to permit the caller to see each capture point and decide
whether to continue looking.

Use this inside memdep to do an analysis that basicaa won't do. This lets us
solve another devirtualization case, fixing PR8908!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144580 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
562b84b3aea359d1f918184e355da82bf05eb290 11-Apr-2011 Jay Foad <jay.foad@gmail.com> Don't include Operator.h from InstrTypes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
1cdaa3e5b1128bd9e62ad9b5084db8a44b897e88 09-Nov-2010 Dan Gohman <gohman@apple.com> VAArg doesn't capture its operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
30ae792f0682ace2f794c6db3f3cb6ab657670a6 28-Jul-2010 Gabor Greif <ggreif@gmail.com> simplify

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
60ad781c61815ca5b8dc2a45a102e1c8af65992f 26-Mar-2010 Gabor Greif <ggreif@gmail.com> rename use_const_iterator to const_use_iterator for consistency's sake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99564 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
1df9859c40492511b8aa4321eb76496005d3b75b 16-Feb-2010 Duncan Sands <baldrick@free.fr> There are two ways of checking for a given type, for example isa<PointerType>(T)
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
89452f7386540ca83e8991e74f1d74bbe7271922 09-Dec-2009 Dan Gohman <gohman@apple.com> Reuse the Threshold value to size these containers because it's
currently somewhat convenient for them to have the same value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90980 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
686abbb1ebd31da0231bd69d72ee3900e414348d 09-Dec-2009 Dan Gohman <gohman@apple.com> Fix a typo in a comment, and adjust SmallSet and SmallVector sizes,
that Chris noticed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90910 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
8456d60becd2b502e3d6ebf124ea324ec5d1c108 09-Dec-2009 Dan Gohman <gohman@apple.com> Put a threshold on the number of users PointerMayBeCaptured
examines; fall back to a conservative answer if there are
more. This works around some several compile time problems
resulting from BasicAliasAnalysis calling PointerMayBeCaptured.

The value has been chosen arbitrarily.

This fixes rdar://7438917 and may partially address PR5708.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
5bd698e65c6858c7d2a715e29b57f63a60295923 20-Nov-2009 Dan Gohman <gohman@apple.com> Use stripPointerCasts(). Thanks Duncan!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89472 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
837be07979723fb05ef47c828da014ce9ed1ba34 20-Nov-2009 Dan Gohman <gohman@apple.com> Revert the rule that considers comparisons between two pointers in the
same object to be a non-capture; Duncan pointed out a way that such
a comparison could be a capture.

Make the rule that considers a comparison against null more specific,
and only consider noalias return values compared against null. This
still supports test/Transforms/GVN/nonescaping-malloc.ll, and is not
susceptible to the problem Duncan pointed out with noalias arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
ae079c250ff7bacf872b339ee08b65c7b7823e39 20-Nov-2009 Dan Gohman <gohman@apple.com> Simplify this code; it's not necessary to check isIdentifiedObject here
because if the results from getUnderlyingObject match, the values must
be from the same underlying object, even if we don't know what that
object is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
76c638a14c1e2927e5e20040b347bc3d7ae8fb82 20-Nov-2009 Dan Gohman <gohman@apple.com> Refine the capture tracking rules for comparisons to be more
careful about crazy methods of capturing pointers using comparisons.
Comparisons of identified objects with null in the default address
space are not captures. And, comparisons of two pointers within the
same identified object are not captures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
452ae47db65cbae908853b11ca73b1e791235ff1 20-Nov-2009 Dan Gohman <gohman@apple.com> Use isVoidTy().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
6d903092c95703b17f90ba9e3f3f2032f364ee4e 20-Nov-2009 Dan Gohman <gohman@apple.com> Refine this to only apply to null in the default address space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
f94b5edc452c32d9ae258e7de30c33391fda6cc9 19-Nov-2009 Dan Gohman <gohman@apple.com> Extend CaptureTracking to indicate when a value is never stored, even
if it is not ultimately captured. Teach BasicAliasAnalysis that a
local object address which does not escape and is never stored does
not alias with a value resulting from a load.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89398 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
2a0fab118f15c01b165bebb73e6c89db48a35b9c 19-Nov-2009 Dan Gohman <gohman@apple.com> Comparing a pointer with null is not a capture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
b8d264aa6b76b9f69da1f1a772dadd9b6fb949c3 03-Nov-2009 Chris Lattner <sabre@nondot.org> remove a check of isFreeCall: the argument to free is already nocapture so the generic call code works fine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85865 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
f006b183e2d2bebcf6968d1dd7350397c95b0325 27-Oct-2009 Victor Hernandez <vhernandez@apple.com> Rename MallocFreeHelper as MemoryBuiltins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
f2becca90b832cc02345fba063b9b439b2be33ad 27-Oct-2009 Victor Hernandez <vhernandez@apple.com> Rename MallocHelper as MallocFreeHelper, since it now also identifies calls to free()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
046e78ce55a7c3d82b7b6758d2d77f2d99f970bf 27-Oct-2009 Victor Hernandez <vhernandez@apple.com> Remove FreeInst.
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
1d0be15f89cb5056e20e2d24faa8d6afb1573bca 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
1978426a94e3d3b53f488ffc56516e6e87906a0b 07-May-2009 Duncan Sands <baldrick@free.fr> Revert r70876 and add a testcase (@c7) showing the problem:
bits captured, but the pointer marked nocapture. In fact
I now recall that this problem is why only readnone functions
returning void were considered before! However keep a small
fix that was also in r70876: a readnone function returning
void can result in bits being captured if it unwinds, so
test for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
fe095f39e7009c51d1c86769792ccbcad8cdd2ec 04-May-2009 Mike Stump <mrs@apple.com> Restore minor deletion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70892 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp
8556d2a7f155c7edfaf454a3acda8ce28863c5e4 18-Jan-2009 Duncan Sands <baldrick@free.fr> BasicAliasAnalysis and FunctionAttrs were both
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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/CaptureTracking.cpp