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
15using namespace llvm;
16
17#define DEBUG_TYPE "loop-accesses"
18
19PreservedAnalyses LoopAccessInfoPrinterPass::run(Function &F,
20 FunctionAnalysisManager &AM) {
21 auto &LAIs = AM.getResult<LoopAccessAnalysis>(IR&: F);
22 auto &LI = AM.getResult<LoopAnalysis>(IR&: 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(NumSpaces: 2) << L->getHeader()->getName() << ":\n";
31 LAIs.getInfo(L&: *L).print(OS, Depth: 4);
32 }
33 return PreservedAnalyses::all();
34}
35