1 //===- polly/JSONExporter.h - Import/Export to/from jscop files.-*- 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 #ifndef POLLY_JSONEXPORTER_H
10 #define POLLY_JSONEXPORTER_H
11 
12 #include "polly/ScopPass.h"
13 #include "llvm/IR/PassManager.h"
14 
15 namespace polly {
16 llvm::Pass *createJSONExporterPass();
17 llvm::Pass *createJSONImporterPass();
18 llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
19 
20 /// This pass exports a scop to a jscop file. The filename is generated from the
21 /// concatenation of the function and scop name.
22 struct JSONExportPass final : llvm::PassInfoMixin<JSONExportPass> {
23   llvm::PreservedAnalyses run(Scop &, ScopAnalysisManager &,
24                               ScopStandardAnalysisResults &, SPMUpdater &);
25 };
26 
27 /// This pass imports a scop from a jscop file. The filename is deduced from the
28 /// concatenation of the function and scop name.
29 struct JSONImportPass final : llvm::PassInfoMixin<JSONExportPass> {
30   llvm::PreservedAnalyses run(Scop &, ScopAnalysisManager &,
31                               ScopStandardAnalysisResults &, SPMUpdater &);
32 };
33 } // namespace polly
34 
35 namespace llvm {
36 void initializeJSONExporterPass(llvm::PassRegistry &);
37 void initializeJSONImporterPass(llvm::PassRegistry &);
38 void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &);
39 } // namespace llvm
40 
41 #endif /* POLLY_JSONEXPORTER_H */
42