1 //===- LoopAccessAnalysisPrinter.cpp - Loop Access Analysis Printer --------==//
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
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"
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()
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();