1 //===- LoopAccessAnalysisPrinter.cpp - Loop Access Analysis Printer --------==// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h" 10 #include "llvm/ADT/PriorityWorklist.h" 11 #include "llvm/Analysis/LoopAccessAnalysis.h" 12 #include "llvm/Analysis/LoopInfo.h" 13 #include "llvm/Transforms/Utils/LoopUtils.h" 14 15 using namespace llvm; 16 17 #define DEBUG_TYPE "loop-accesses" 18 19 PreservedAnalyses LoopAccessInfoPrinterPass::run(Function &F, 20 FunctionAnalysisManager &AM) { 21 auto &LAIs = AM.getResult<LoopAccessAnalysis>(F); 22 auto &LI = AM.getResult<LoopAnalysis>(F); 23 OS << "Printing analysis 'Loop Access Analysis' for function '" << F.getName() 24 << "':\n"; 25 26 SmallPriorityWorklist<Loop *, 4> Worklist; 27 appendLoopsToWorklist(LI, Worklist); 28 while (!Worklist.empty()) { 29 Loop *L = Worklist.pop_back_val(); 30 OS.indent(2) << L->getHeader()->getName() << ":\n"; 31 LAIs.getInfo(*L).print(OS, 4); 32 } 33 return PreservedAnalyses::all(); 34 } 35