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 << "Loop access info in function '" << F.getName() << "':\n"; 24 25 SmallPriorityWorklist<Loop *, 4> Worklist; 26 appendLoopsToWorklist(LI, Worklist); 27 while (!Worklist.empty()) { 28 Loop *L = Worklist.pop_back_val(); 29 OS.indent(2) << L->getHeader()->getName() << ":\n"; 30 LAIs.getInfo(*L).print(OS, 4); 31 } 32 return PreservedAnalyses::all(); 33 } 34