[PATCH] D106720: [Attributor] AAFunctionReachability, Instruction reachability.
    Johannes Doerfert via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue Sep 14 17:18:41 PDT 2021
    
    
  
jdoerfert added inline comments.
================
Comment at: llvm/lib/Transforms/IPO/AttributorAttributes.cpp:9659-9664
+    bool NoUnknownCall = true;
+    NoUnknownCall &=
+      A.checkForAllCallSites(CheckCallSite, *this, true, NoUnknownCall);
+
+    // If we don't know all callsites we have to assume that we can reach fn.
+    if (!NoUnknownCall) {
----------------
================
Comment at: llvm/lib/Transforms/IPO/AttributorAttributes.cpp:9740
+    NonConstThis->checkReachableBackwards(A, InstBackwardsQSet);
+    return InstBackwardsQSet.Reachable.count(&Fn);
+  }
----------------
Reachable is not updated if `CanReachUnknownCallee` is set true. We also never check for a cached value here.
================
Comment at: llvm/lib/Transforms/IPO/AttributorAttributes.cpp:9751
 
     for (auto CBPair : CBQueries) {
       const AACallEdges &AAEdges = A.getAAFor<AACallEdges>(
----------------
One of these caused a copy and only the copy QuerySet got updated causing it never to find a fixpoint.
================
Comment at: llvm/lib/Transforms/IPO/AttributorAttributes.cpp:9768
+    // Check for local callbases first.
+    for (auto InstPair : InstQueries) {
+      SmallVector<const AACallEdges *> CallEdges;
----------------
One of these caused a copy and only the copy QuerySet got updated causing it never to find a fixpoint.
================
Comment at: llvm/lib/Transforms/IPO/AttributorAttributes.cpp:9778
+
+    for (auto QueryPair : InstQueriesBackwards)
+      Change |= checkReachableBackwards(A, QueryPair.second);
----------------
One of these caused a copy and only the copy QuerySet got updated causing it never to find a fixpoint.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D106720/new/
https://reviews.llvm.org/D106720
    
    
More information about the llvm-commits
mailing list