[PATCH] D84259: [NFC][NewPM] Add clarification on analysis manager proxies

Arthur Eubanks via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 21 11:51:21 PDT 2020


aeubanks created this revision.
aeubanks added a reviewer: asbirlea.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Explain why you can only get a cached analysis result, not compute one
on the fly.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D84259

Files:
  llvm/include/llvm/IR/PassManager.h


Index: llvm/include/llvm/IR/PassManager.h
===================================================================
--- llvm/include/llvm/IR/PassManager.h
+++ llvm/include/llvm/IR/PassManager.h
@@ -1061,7 +1061,16 @@
 ///
 /// This proxy only exposes the const interface of the outer analysis manager,
 /// to indicate that you cannot cause an outer analysis to run from within an
-/// inner pass.  Instead, you must rely on the \c getCachedResult API.
+/// inner pass.  Instead, you must rely on the \c getCachedResult API.  This is
+/// due to keeping potential future concurrency in mind. To give an example,
+/// running a module analysis before any function passes may give a different
+/// result than running it in a function pass. Both may be valid, but it would
+/// produce non-deterministic results. GlobalsAA is a good analysis example,
+/// because the cached information has the mod/ref info for all memory for each
+/// function at the time the analysis was computed. The information is still
+/// valid after a function transformation, but it may be *different* if
+/// recomputed after that transform. GlobalsAA is never invalidated.
+
 ///
 /// This proxy doesn't manage invalidation in any way -- that is handled by the
 /// recursive return path of each layer of the pass manager.  A consequence of


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D84259.279599.patch
Type: text/x-patch
Size: 1313 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200721/59325d33/attachment.bin>


More information about the llvm-commits mailing list