3 #include "clang/Frontend/FrontendActions.h" 4 #include "clang/Frontend/TextDiagnosticPrinter.h" 5 #include "clang/Rewrite/Core/Rewriter.h" 6 #include "clang/Tooling/CommonOptionsParser.h" 7 #include "clang/Tooling/Refactoring.h" 8 #include "clang/Tooling/RefactoringCallbacks.h" 9 #include "clang/Tooling/Tooling.h" 10 #include "clang/ASTMatchers/ASTMatchFinder.h" 11 #include "clang/ASTMatchers/ASTMatchers.h" 12 #include "llvm/Support/CommandLine.h" 18 #include <unordered_set> 23 #include <initializer_list> 30 using namespace clang;
34 enum class Implementations { wser, wisb, west, cstone, wone };
52 std::string input_path;
53 std::string output_name;
54 std::string temp_path;
55 std::vector<std::string> args;
65 std::string source_dir;
68 extern Implementations default_impl;
69 extern std::unordered_map<Implementations, ImplementationFeatures> api_impls;
70 extern std::vector<std::string> UserFiles;
71 extern std::vector<std::string> BackendFiles;
72 extern std::vector<std::string> PublicHeaders;
73 extern std::vector<std::string> AllFiles;
74 extern std::vector<std::string> NoFiles;
78 enum class ForceType { SCALAR, VECTOR };
84 typedef void(* WashCallbackFn)(
const MatchFinder::MatchResult &, Replacements &);
85 typedef void(* WashComputeFn)(
const WashOptions& opts);
91 std::vector<std::string> reads_from;
92 std::vector<std::string> writes_to;
100 std::vector<std::string> scalar_force_list;
101 std::vector<std::string> vector_force_list;
102 std::unordered_map<std::string, FullSourceLoc> force_meta;
104 std::vector<std::pair<std::string, std::string>> variable_list;
105 int simulation_dimension;
107 std::vector<std::string> kernels_list;
108 std::vector<std::string> init_kernels_list;
109 std::string neighbour_kernel;
110 std::unordered_map<std::string, std::unique_ptr<KernelDependencies>> kernels_dependency_map;
111 std::vector<bool> domain_sync_locations;
112 std::vector<bool> domain_sync_before;
117 extern std::shared_ptr<WashProgramMeta> program_meta;
127 std::optional<std::string> getSourceText(ASTContext *ctx, SourceRange srcRange);
Definition: common.hpp:58
Struct to hold two vectors of dependencies (appropriately named)
Definition: common.hpp:90
Options about how the Wash analysis will behave.
Definition: common.hpp:45
Definition: arguments.cpp:3