[JSON][PM] Port json import/export over to new pm
[polly-mirror.git] / include / polly / DeLICM.h
blob8aeefb626284a18f23223607bc3fbf9010decad1
1 //===------ DeLICM.h --------------------------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // Undo the effect of Loop Invariant Code Motion (LICM) and
11 // GVN Partial Redundancy Elimination (PRE) on SCoP-level.
13 // Namely, remove register/scalar dependencies by mapping them back to array
14 // elements.
16 //===----------------------------------------------------------------------===//
18 #ifndef POLLY_DELICM_H
19 #define POLLY_DELICM_H
21 #include "polly/Support/GICHelper.h"
23 namespace llvm {
24 class PassRegistry;
25 class Pass;
26 } // namespace llvm
28 namespace polly {
29 /// Create a new DeLICM pass instance.
30 llvm::Pass *createDeLICMPass();
32 /// Determine whether two lifetimes are conflicting.
33 ///
34 /// Used by unittesting.
35 bool isConflicting(isl::union_set ExistingOccupied,
36 isl::union_set ExistingUnused, isl::union_map ExistingKnown,
37 isl::union_map ExistingWrites,
38 isl::union_set ProposedOccupied,
39 isl::union_set ProposedUnused, isl::union_map ProposedKnown,
40 isl::union_map ProposedWrites,
41 llvm::raw_ostream *OS = nullptr, unsigned Indent = 0);
42 } // namespace polly
44 namespace llvm {
45 void initializeDeLICMPass(llvm::PassRegistry &);
46 } // namespace llvm
48 #endif /* POLLY_DELICM_H */