Lines Matching full:llvm
1 //===--- CGRecordLayout.h - LLVM Record Layout Information ------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
15 #include "clang/Basic/LLVM.h"
16 #include "llvm/ADT/DenseMap.h"
17 #include "llvm/IR/DerivedTypes.h"
19 namespace llvm {
29 /// When the AST record layout does this, we represent it in the LLVM IR's type
49 /// This will end up as the following LLVM type. The first array is the
68 /// a single "field" within the LLVM struct type. This offset is in bits.
106 /// lowering AST types to LLVM types.
116 /// The LLVM type corresponding to this record layout; used when
118 llvm::StructType *CompleteObjectType;
120 /// The LLVM type for the non-virtual part of this record layout;
122 llvm::StructType *BaseSubobjectType;
124 /// Map from (non-bit-field) struct field to the corresponding llvm struct
126 llvm::DenseMap<const FieldDecl *, unsigned> FieldInfo;
128 /// Map from (bit-field) struct field to the corresponding llvm struct type
130 llvm::DenseMap<const FieldDecl *, CGBitFieldInfo> BitFields;
134 llvm::DenseMap<const CXXRecordDecl *, unsigned> NonVirtualBases;
137 llvm::DenseMap<const CXXRecordDecl *, unsigned> CompleteObjectVirtualBases;
150 CGRecordLayout(llvm::StructType *CompleteObjectType,
151 llvm::StructType *BaseSubobjectType,
159 /// \brief Return the "complete object" LLVM type associated with
161 llvm::StructType *getLLVMType() const {
165 /// \brief Return the "base subobject" LLVM type associated with
167 llvm::StructType *getBaseSubobjectLLVMType() const {
183 /// \brief Return llvm::StructType element number that corresponds to the
196 /// \brief Return the LLVM field index corresponding to the given
207 llvm::DenseMap<const FieldDecl *, CGBitFieldInfo>::const_iterator