Chisel
DeadcodeElimination.h
Go to the documentation of this file.
1 #ifndef DEADCODE_ELIMINATION_H
2 #define DEADCODE_ELIMINATION_H
3 
4 #include <queue>
5 #include <vector>
6 
7 #include "clang/AST/RecursiveASTVisitor.h"
8 
9 #include "Reduction.h"
10 
12 
19 
20 public:
21  DeadcodeElimination() : CollectionVisitor(NULL) {}
22  ~DeadcodeElimination() { delete CollectionVisitor; }
23 
24  void removeUnusedElements();
25  std::map<clang::Decl *, clang::SourceRange> LocationMapping;
26  std::vector<clang::SourceLocation> UnusedLocations;
27 
28 private:
29  void Initialize(clang::ASTContext &Ctx);
30  bool HandleTopLevelDecl(clang::DeclGroupRef D);
31  clang::SourceRange getRemoveRange(clang::SourceLocation Loc);
32  bool isConstant(clang::Stmt *S);
33 
34  DeadcodeElementCollectionVisitor *CollectionVisitor;
35 };
36 
38  : public clang::RecursiveASTVisitor<DeadcodeElementCollectionVisitor> {
39 public:
41 
42  bool VisitVarDecl(clang::VarDecl *VD);
43  bool VisitLabelStmt(clang::LabelStmt *LS);
44 
45 private:
46  DeadcodeElimination *Consumer;
47 };
48 
49 class DCEFrontend {
50 public:
51  static bool Parse(std::string &Filename, DeadcodeElimination *R);
52 };
53 
54 #endif // DEADCODE_ELIMINATION_H
clang::SourceRange SourceRange
Definition: LocalReduction.cpp:23
clang::DeclGroupRef DeclGroupRef
Definition: LocalReduction.cpp:16
clang::SourceLocation SourceLocation
Definition: LocalReduction.cpp:24
Definition: DeadcodeElimination.h:37
clang::Stmt Stmt
Definition: LocalReduction.cpp:25
clang::LabelStmt LabelStmt
Definition: LocalReduction.cpp:21
std::map< clang::Decl *, clang::SourceRange > LocationMapping
Definition: DeadcodeElimination.h:25
clang::VarDecl VarDecl
Definition: LocalReduction.cpp:28
Definition: LocalReduction.h:66
Definition: DeadcodeElimination.h:49
Represesnts a transformation action on an AST.
Definition: Transformation.h:10
DeadcodeElimination()
Definition: DeadcodeElimination.h:21
~DeadcodeElimination()
Definition: DeadcodeElimination.h:22
Represents a sound dead-code elimination phase.
Definition: DeadcodeElimination.h:17
std::vector< clang::SourceLocation > UnusedLocations
Definition: DeadcodeElimination.h:26
void removeUnusedElements()
Definition: DeadcodeElimination.cpp:77
DeadcodeElementCollectionVisitor(DeadcodeElimination *R)
Definition: DeadcodeElimination.h:40