]> granicus.if.org Git - llvm/commitdiff
[LVIPrinterPass] Print LVI info for function arguments
authorAnna Thomas <anna@azul.com>
Thu, 23 Mar 2017 20:00:54 +0000 (20:00 +0000)
committerAnna Thomas <anna@azul.com>
Thu, 23 Mar 2017 20:00:54 +0000 (20:00 +0000)
Using AssemblyAnnotationWriter for LVI printer prints
for instructions and basic blocks.
So, we explicitly need to print LVI info for the arguments of the function (these
are values and not instructions).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298640 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/LazyValueInfo.cpp

index 0582052936325d908a8d40989e8efa14dedb1dc0..17e781375e4d8b71f0140b57d7c47992fc92f25c 100644 (file)
@@ -486,6 +486,18 @@ namespace {
       OS << "; OverDefined values for block are: \n";
       for (auto *V : ODI->second)
         OS << ";" << *V << "\n";
+
+      // Find if there are latticevalues defined for arguments of the function.
+      auto *F = const_cast<Function *>(BB->getParent());
+      for (auto &Arg : F->args()) {
+        auto VI = LVICache->ValueCache.find_as(&Arg);
+        if (VI == LVICache->ValueCache.end())
+          continue;
+        auto BBI = VI->second->BlockVals.find(const_cast<BasicBlock *>(BB));
+        if (BBI != VI->second->BlockVals.end())
+          OS << "; CachedLatticeValue for: '" << *VI->first << "' is: '"
+             << BBI->second << "'\n";
+      }
     }
 
     virtual void emitInstructionAnnot(const Instruction *I,