35 lines · cpp
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-exception6//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>(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, AllowPartial).print(OS, 4);32 }33 return PreservedAnalyses::all();34}35