Click
Loading...
Searching...
No Matches
llvmutils.hh
1#ifndef CLICK_LLVMUTILS_HH
2#define CLICK_LLVMUTILS_HH
3#include <string>
4#include <vector>
5#include <memory>
6#include <click/config.h>
7
8namespace llvm {
9 class Module;
10 class StructType;
11 class Type;
12};
13
14std::string demangle(const char *name);
15template <typename T> size_t RemoveDuplicatesKeepOrder(std::vector<T> &vec);
16template <typename T> void OrderBasedOnTheRepetition(std::vector<T> &vec);
17template <typename T>
18std::pair<bool, int> findInVector(const std::vector<T> &vecOfElements,
19 const T &element);
20
21uint64_t fixClassReferencesStructAllAnno(llvm::Module &M, std::string cn,
22 std::vector<uint64_t> &idx_vec,
23 uint64_t cr_idx, std::string dcn_1,
24 std::string dcn_2);
25
26size_t findAccessedIndicesStructAllAnno(llvm::Module &M, std::string cn,
27 std::string sn,
28 std::vector<uint64_t> &idx_vec,
29 uint64_t &cr_idx);
30
31size_t findAccessedIndicesClassPacket(llvm::Module &M, std::string cn,
32 std::vector<uint64_t> &idx_vec);
33
34llvm::StructType *modifyClassStructure(llvm::Module &M, std::string cn,
35 std::vector<uint64_t> &idx_vec,
36 std::vector<llvm::Type *> &new_el);
37
38uint64_t fixClassReferencesClassPacket(llvm::Module &M, std::string cn,
39 std::vector<uint64_t> &idx_vec,
40 std::string dcn_1, std::string dcn_2);
41
42bool reorderClassPacket(llvm::Module &M);
43bool reorderStructAllAnno(llvm::Module &M);
44
45bool handPick(std::unique_ptr<llvm::Module> &M);
46bool poolInline(std::unique_ptr<llvm::Module> &M);
47bool stripModuleFlags(std::unique_ptr<llvm::Module> &M);
48bool optimizeIR(std::string input);
49#endif