Lines Matching refs:analysis
13 memory. There are many different algorithms for alias analysis and many
25 analysis information and the implementations providing it, and is designed to
27 are assumed to be flow-insensitive). In addition to simple alias analysis
40 class defines the interface that the various alias analysis implementations
161 analysis implementations and can be put to good use by various clients.
166 The ``pointsToConstantMemory`` method returns true if and only if the analysis
179 analysis can prove that the function never reads or writes to memory, or if the
186 The ``onlyReadsMemory`` method returns true for a function if analysis can prove
197 Writing a new alias analysis implementation for LLVM is quite straight-forward.
200 look at the `various alias analysis implementations`_ included with LLVM.
210 #. If you require interprocedural analysis, it should be a ``Pass``.
211 #. If you are a function-local analysis, subclass ``FunctionPass``.
236 analysis run method (``run`` for a ``Pass``, ``runOnFunction`` for a
244 // Perform analysis here...
268 analysis implementation, which ends up returning conservatively correct
270 respectively). Depending on the capabilities of the analysis you are
279 every alias analysis pass chains to another alias analysis implementation (for
281 benefit from both alias analyses). The alias analysis class automatically
298 In addition to analysis queries, you must make sure to unconditionally pass LLVM
304 Updating analysis results for transformations
307 Alias analysis information is initially computed for a static snapshot of the
309 code. All but the most trivial forms of alias analysis will need to have their
310 analysis results updated to reflect the changes made by these transformations.
313 communicate program changes from the clients to the analysis implementations.
314 Various alias analysis implementations should use these methods to ensure that
316 example, when an instruction is deleted), and clients of alias analysis must be
341 use. It is implemented by copying the old analysis information to the new
343 analysis implementations.
349 changed in ways that may invalidate precomputed analysis information.
351 for points whose uses have change since analysis time, or may recompute some or
365 alias analysis is to make sure that alias analysis **queries** are serviced
366 quickly. The actual calculation of the alias analysis results (the "run"
377 There is no way to override the default alias analysis. It would be very useful
392 classes, so if your alias analysis uses ``FunctionPass``, it won't be able to
394 route alias analysis queries directly to ``BasicAliasAnalysis`` instead.
397 pass, which prevents the use of ``FunctionPass`` alias analysis passes.
428 Using alias analysis results
431 There are several different ways to use alias analysis results. In order of
437 The ``memdep`` pass uses alias analysis to provide high-level dependence
451 analysis information provided by the ``AliasAnalysis`` interface.
501 Existing alias analysis implementations and clients
504 If you're going to be working with the LLVM alias analysis infrastructure, you
505 should know what clients and implementations of alias analysis are available.
506 In particular, if you are implementing an alias analysis, you should be aware of
510 .. _various alias analysis implementations:
518 alias analysis implementations.
525 The ``-no-aa`` pass is just like what it sounds: an alias analysis that never
527 analysis is doing something wrong and are trying to narrow down a problem.
532 The ``-basicaa`` pass is an aggressive local analysis that *knows* many
549 This pass implements a simple context-sensitive mod/ref and alias analysis for
564 globals), but is very quick analysis.
570 algorithm" for interprocedural alias analysis. Steensgaard's algorithm is a
572 alias analysis that is also very scalable (effectively linear time).
577 maintaining excellent analysis scalability.
590 analysis that is also quite scalable, usually at ``O(n * log(n))``.
592 This algorithm is capable of responding to a full variety of alias analysis
610 Alias analysis driven transformations
613 LLVM includes several alias-analysis driven transformations which can be used
660 These passes are useful for evaluating the various alias analysis
682 making and what responses are returned by the alias analysis. As an example:
691 transformation or an alias analysis implementation.
697 function and asks an alias analysis whether or not the pointers alias. This
698 gives an indication of the precision of the alias analysis. Statistics are
705 If you're just looking to be a client of alias analysis information, consider
707 caching layer on top of alias analysis that is able to answer the question of
710 MemDep can be a significant performance win over accessing alias analysis