1 //===- polly/MaximalStaticExpansion.h - expand memory access -*- C++ -*-======//
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 // This pass fully expand the memory accesses of a Scop to get rid of
10 // dependencies.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef POLLY_MAXIMALSTATICEXPANSION_H
15 #define POLLY_MAXIMALSTATICEXPANSION_H
16 
17 #include "polly/ScopPass.h"
18 #include "llvm/IR/PassManager.h"
19 
20 namespace polly {
21 
22 class MaximalStaticExpansionPass
23     : public llvm::PassInfoMixin<MaximalStaticExpansionPass> {
24 public:
25   llvm::PreservedAnalyses run(Scop &, ScopAnalysisManager &,
26                               ScopStandardAnalysisResults &, SPMUpdater &);
27 };
28 
29 struct MaximalStaticExpansionPrinterPass
30     : llvm::PassInfoMixin<MaximalStaticExpansionPrinterPass> {
MaximalStaticExpansionPrinterPassMaximalStaticExpansionPrinterPass31   MaximalStaticExpansionPrinterPass(raw_ostream &OS) : OS(OS) {}
32 
33   PreservedAnalyses run(Scop &S, ScopAnalysisManager &,
34                         ScopStandardAnalysisResults &SAR, SPMUpdater &);
35 
36 private:
37   llvm::raw_ostream &OS;
38 };
39 
40 } // namespace polly
41 
42 #endif /* POLLY_MAXIMALSTATICEXPANSION_H */
43