1 //===------ DeLICM.h --------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
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
16 //===----------------------------------------------------------------------===//
18 #ifndef POLLY_DELICM_H
19 #define POLLY_DELICM_H
21 #include "polly/Support/GICHelper.h"
29 /// Create a new DeLICM pass instance.
30 llvm::Pass
*createDeLICMPass();
32 /// Determine whether two lifetimes are conflicting.
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);
45 void initializeDeLICMPass(llvm::PassRegistry
&);
48 #endif /* POLLY_DELICM_H */