[Clang] Deprecate __is_referenceable (#123185)
[llvm-project.git] / llvm / lib / Transforms / Scalar / LoopAccessAnalysisPrinter.cpp
blob3d3f22d686e32edffafa3c23a7f21d56f3f29a79
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 //===----------------------------------------------------------------------===//
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"
15 using namespace llvm;
17 #define DEBUG_TYPE "loop-accesses"
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 << "Printing analysis 'Loop Access Analysis' for function '" << F.getName()
24 << "':\n";
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).print(OS, 4);
33 return PreservedAnalyses::all();