10b57cec5SDimitry Andric //===- LoopAccessAnalysisPrinter.cpp - Loop Access Analysis Printer --------==// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h" 10bdd1243dSDimitry Andric #include "llvm/ADT/PriorityWorklist.h" 110b57cec5SDimitry Andric #include "llvm/Analysis/LoopAccessAnalysis.h" 1281ad6265SDimitry Andric #include "llvm/Analysis/LoopInfo.h" 13bdd1243dSDimitry Andric #include "llvm/Transforms/Utils/LoopUtils.h" 14bdd1243dSDimitry Andric 150b57cec5SDimitry Andric using namespace llvm; 160b57cec5SDimitry Andric 170b57cec5SDimitry Andric #define DEBUG_TYPE "loop-accesses" 180b57cec5SDimitry Andric run(Function & F,FunctionAnalysisManager & AM)19bdd1243dSDimitry AndricPreservedAnalyses LoopAccessInfoPrinterPass::run(Function &F, 20bdd1243dSDimitry Andric FunctionAnalysisManager &AM) { 21bdd1243dSDimitry Andric auto &LAIs = AM.getResult<LoopAccessAnalysis>(F); 22bdd1243dSDimitry Andric auto &LI = AM.getResult<LoopAnalysis>(F); 23*5f757f3fSDimitry Andric OS << "Printing analysis 'Loop Access Analysis' for function '" << F.getName() 24*5f757f3fSDimitry Andric << "':\n"; 25bdd1243dSDimitry Andric 26bdd1243dSDimitry Andric SmallPriorityWorklist<Loop *, 4> Worklist; 27bdd1243dSDimitry Andric appendLoopsToWorklist(LI, Worklist); 28bdd1243dSDimitry Andric while (!Worklist.empty()) { 29bdd1243dSDimitry Andric Loop *L = Worklist.pop_back_val(); 30bdd1243dSDimitry Andric OS.indent(2) << L->getHeader()->getName() << ":\n"; 31bdd1243dSDimitry Andric LAIs.getInfo(*L).print(OS, 4); 32bdd1243dSDimitry Andric } 330b57cec5SDimitry Andric return PreservedAnalyses::all(); 340b57cec5SDimitry Andric } 35