1581a6d85SDimitry Andric //===- LoopAccessAnalysisPrinter.cpp - Loop Access Analysis Printer --------==// 2581a6d85SDimitry Andric // 3e6d15924SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e6d15924SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5e6d15924SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6581a6d85SDimitry Andric // 7581a6d85SDimitry Andric //===----------------------------------------------------------------------===// 8581a6d85SDimitry Andric 9581a6d85SDimitry Andric #include "llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h" 10e3b55780SDimitry Andric #include "llvm/ADT/PriorityWorklist.h" 11581a6d85SDimitry Andric #include "llvm/Analysis/LoopAccessAnalysis.h" 12145449b1SDimitry Andric #include "llvm/Analysis/LoopInfo.h" 13e3b55780SDimitry Andric #include "llvm/Transforms/Utils/LoopUtils.h" 14e3b55780SDimitry Andric 15581a6d85SDimitry Andric using namespace llvm; 16581a6d85SDimitry Andric 17581a6d85SDimitry Andric #define DEBUG_TYPE "loop-accesses" 18581a6d85SDimitry Andric run(Function & F,FunctionAnalysisManager & AM)19e3b55780SDimitry AndricPreservedAnalyses LoopAccessInfoPrinterPass::run(Function &F, 20e3b55780SDimitry Andric FunctionAnalysisManager &AM) { 21e3b55780SDimitry Andric auto &LAIs = AM.getResult<LoopAccessAnalysis>(F); 22e3b55780SDimitry Andric auto &LI = AM.getResult<LoopAnalysis>(F); 23b1c73532SDimitry Andric OS << "Printing analysis 'Loop Access Analysis' for function '" << F.getName() 24b1c73532SDimitry Andric << "':\n"; 25e3b55780SDimitry Andric 26e3b55780SDimitry Andric SmallPriorityWorklist<Loop *, 4> Worklist; 27e3b55780SDimitry Andric appendLoopsToWorklist(LI, Worklist); 28e3b55780SDimitry Andric while (!Worklist.empty()) { 29e3b55780SDimitry Andric Loop *L = Worklist.pop_back_val(); 30e3b55780SDimitry Andric OS.indent(2) << L->getHeader()->getName() << ":\n"; 31e3b55780SDimitry Andric LAIs.getInfo(*L).print(OS, 4); 32e3b55780SDimitry Andric } 33581a6d85SDimitry Andric return PreservedAnalyses::all(); 34581a6d85SDimitry Andric } 35