Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
LLVMTypeMap.h
Go to the documentation of this file.
1#ifndef PROTEUS_FRONTEND_LLVMTYPEMAP_H
2#define PROTEUS_FRONTEND_LLVMTYPEMAP_H
3
6
7#include <cstddef>
8
9namespace llvm {
10class LLVMContext;
11class Type;
12} // namespace llvm
13
14namespace proteus {
15
24llvm::Type *toLLVMType(const IRType &T, llvm::LLVMContext &Ctx);
25
26// ---------------------------------------------------------------------------
27// Convenience wrappers
28// ---------------------------------------------------------------------------
29
32template <typename T>
33llvm::Type *getLLVMType(llvm::LLVMContext &Ctx, std::size_t NElem = 0) {
34 return toLLVMType(TypeMap<T>::get(NElem), Ctx);
35}
36
40template <typename T>
41llvm::Type *getLLVMPointerElemType(llvm::LLVMContext &Ctx) {
43 return Elem ? toLLVMType(*Elem, Ctx) : nullptr;
44}
45
46} // namespace proteus
47
48#endif // PROTEUS_FRONTEND_LLVMTYPEMAP_H
Definition CompiledLibrary.h:7
Definition MemoryCache.h:26
llvm::Type * getLLVMType(llvm::LLVMContext &Ctx, std::size_t NElem=0)
Definition LLVMTypeMap.h:33
llvm::Type * toLLVMType(const IRType &T, LLVMContext &Ctx)
Definition LLVMTypeMap.cpp:40
llvm::Type * getLLVMPointerElemType(llvm::LLVMContext &Ctx)
Definition LLVMTypeMap.h:41
Definition IRType.h:34
Definition TypeMap.h:15