#include <CodeGenTypes.h>
Public Member Functions | |
CodeGenTypes (CodeGen &CG, DomainInstanceDecl *context) | |
const llvm::Type * | lowerType (const Type *type) |
const llvm::Type * | lowerDomainType (const DomainType *type) |
const llvm::IntegerType * | lowerEnumType (const EnumerationType *type) |
const llvm::FunctionType * | lowerSubroutine (const SubroutineDecl *decl) |
const llvm::IntegerType * | lowerDiscreteType (const DiscreteType *type) |
const llvm::ArrayType * | lowerArrayType (const ArrayType *type) |
const llvm::StructType * | lowerRecordType (const RecordType *type) |
const llvm::Type * | lowerIncompleteType (const IncompleteType *type) |
const llvm::PointerType * | lowerThinAccessType (const AccessType *type) |
const llvm::StructType * | lowerFatAccessType (const AccessType *type) |
const llvm::Type * | lowerAccessType (const AccessType *type) |
const llvm::Type * | lowerUniversalType (const UniversalType *type) |
const llvm::StructType * | lowerArrayBounds (const ArrayType *arrTy) |
const llvm::StructType * | lowerScalarBounds (const DiscreteType *type) |
const llvm::StructType * | lowerRange (const Range *range) |
Returns the structure type used to hold the bounds of the given range. | |
unsigned | getComponentIndex (const ComponentDecl *component) |
unsigned | getTypeAlignment (const llvm::Type *type) const |
uint64_t | getTypeSize (const llvm::Type *type) const |
Returns the size of the given llvm type in bytes. | |
const Type * | resolveType (const Type *type) |
Calling Conventions. | |
| |
enum | CallConvention { CC_Simple, CC_Sret, CC_Vstack } |
CallConvention | getConvention (const SubroutineDecl *decl) |
Lowers various Comma AST nodes to LLVM types.
As a rule, Comma type nodes need not in and of themselves provide enough information to lower them directly to LLVM IR. Thus, declaration nodes are often needed so that the necessary information can be extracted from the AST.
Definition at line 29 of file CodeGenTypes.h.
Definition at line 94 of file CodeGenTypes.h.
comma::CodeGenTypes::CodeGenTypes | ( | CodeGen & | CG, | |
DomainInstanceDecl * | context | |||
) | [inline] |
Definition at line 32 of file CodeGenTypes.h.
unsigned CodeGenTypes::getComponentIndex | ( | const ComponentDecl * | component | ) |
Returns the index into an llvm structure type that should be used to GEP the given component.
Definition at line 485 of file CodeGenTypes.cpp.
CodeGenTypes::CallConvention CodeGenTypes::getConvention | ( | const SubroutineDecl * | decl | ) |
Definition at line 554 of file CodeGenTypes.cpp.
unsigned CodeGenTypes::getTypeAlignment | ( | const llvm::Type * | type | ) | const |
Returns the alignment of the given llvm type according to the targets ABI conventions.
Definition at line 69 of file CodeGenTypes.cpp.
uint64_t CodeGenTypes::getTypeSize | ( | const llvm::Type * | type | ) | const |
Returns the size of the given llvm type in bytes.
Definition at line 74 of file CodeGenTypes.cpp.
const llvm::Type * CodeGenTypes::lowerAccessType | ( | const AccessType * | type | ) |
Definition at line 453 of file CodeGenTypes.cpp.
const llvm::StructType * CodeGenTypes::lowerArrayBounds | ( | const ArrayType * | arrTy | ) |
Returns the structure type used to hold the bounds of an unconstrained array.
Definition at line 500 of file CodeGenTypes.cpp.
const llvm::ArrayType * CodeGenTypes::lowerArrayType | ( | const ArrayType * | type | ) |
Definition at line 284 of file CodeGenTypes.cpp.
const llvm::IntegerType * CodeGenTypes::lowerDiscreteType | ( | const DiscreteType * | type | ) |
Definition at line 276 of file CodeGenTypes.cpp.
const llvm::Type * CodeGenTypes::lowerDomainType | ( | const DomainType * | type | ) |
Definition at line 167 of file CodeGenTypes.cpp.
const llvm::IntegerType* comma::CodeGenTypes::lowerEnumType | ( | const EnumerationType * | type | ) |
const llvm::StructType * CodeGenTypes::lowerFatAccessType | ( | const AccessType * | type | ) |
Definition at line 416 of file CodeGenTypes.cpp.
const llvm::Type * CodeGenTypes::lowerIncompleteType | ( | const IncompleteType * | type | ) |
Definition at line 376 of file CodeGenTypes.cpp.
const llvm::StructType * CodeGenTypes::lowerRange | ( | const Range * | range | ) |
Returns the structure type used to hold the bounds of the given range.
Definition at line 524 of file CodeGenTypes.cpp.
const llvm::StructType * CodeGenTypes::lowerRecordType | ( | const RecordType * | type | ) |
Definition at line 333 of file CodeGenTypes.cpp.
const llvm::StructType * CodeGenTypes::lowerScalarBounds | ( | const DiscreteType * | type | ) |
Returns the structure type used to hold the bounds of the given scalar type.
Definition at line 515 of file CodeGenTypes.cpp.
const llvm::FunctionType * CodeGenTypes::lowerSubroutine | ( | const SubroutineDecl * | decl | ) |
Determine the return type for this subroutine.
Definition at line 194 of file CodeGenTypes.cpp.
const llvm::PointerType * CodeGenTypes::lowerThinAccessType | ( | const AccessType * | type | ) |
Definition at line 382 of file CodeGenTypes.cpp.
const llvm::Type * CodeGenTypes::lowerType | ( | const Type * | type | ) |
Definition at line 79 of file CodeGenTypes.cpp.
const llvm::Type * CodeGenTypes::lowerUniversalType | ( | const UniversalType * | type | ) |
Definition at line 461 of file CodeGenTypes.cpp.
Resolves the given type.
In the case a domain types this method resolves the underlying representation. In the case of incomplete types this method resolves the completion.
Definition at line 134 of file CodeGenTypes.cpp.