1#ifndef CLICK_LLVMUTILS_HH
2#define CLICK_LLVMUTILS_HH
6#include <click/config.h>
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);
18std::pair<bool, int> findInVector(
const std::vector<T> &vecOfElements,
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,
26size_t findAccessedIndicesStructAllAnno(llvm::Module &M, std::string cn,
28 std::vector<uint64_t> &idx_vec,
31size_t findAccessedIndicesClassPacket(llvm::Module &M, std::string cn,
32 std::vector<uint64_t> &idx_vec);
34llvm::StructType *modifyClassStructure(llvm::Module &M, std::string cn,
35 std::vector<uint64_t> &idx_vec,
36 std::vector<llvm::Type *> &new_el);
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);
42bool reorderClassPacket(llvm::Module &M);
43bool reorderStructAllAnno(llvm::Module &M);
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);