13#ifndef LLVM_CLANG_LIB_CODEGEN_CODEGENTYPES_H
14#define LLVM_CLANG_LIB_CODEGEN_CODEGENTYPES_H
19#include "llvm/ADT/DenseMap.h"
20#include "llvm/IR/Module.h"
32template <
typename>
class CanQual;
33class CXXConstructorDecl;
36class FunctionProtoType;
58 llvm::Module &TheModule;
65 llvm::DenseMap<const ObjCInterfaceType*, llvm::Type *> InterfaceTypes;
68 llvm::DenseMap<const Type*, std::unique_ptr<CGRecordLayout>> CGRecordLayouts;
71 llvm::DenseMap<const Type*, llvm::StructType *> RecordDeclTypes;
74 llvm::FoldingSet<CGFunctionInfo> FunctionInfos{FunctionInfosLog2InitSize};
83 bool LongDoubleReferenced;
87 llvm::DenseMap<const Type *, llvm::Type *> TypeCache;
89 llvm::DenseMap<const Type *, llvm::Type *> RecordsWithOpaqueMemberPointers;
91 static constexpr unsigned FunctionInfosLog2InitSize = 9;
93 llvm::Type *ConvertFunctionTypeInternal(
QualType FT);
100 return TheModule.getDataLayout();
132 llvm::Type *LLVMTy =
nullptr);