|
void | addSubstitutions (const TypeVariableSubstitution *tvs) |
|
void | clear () |
|
void | cloneExpressionProperties (const IR::Expression *to, const IR::Expression *from) |
|
bool | contains (const IR::Node *element) |
|
void | dbprint (std::ostream &out) const |
|
bool | equivalent (const IR::Type *left, const IR::Type *right, bool strict=false) const |
|
const IR::Type * | getCanonical (const IR::Type *type) |
|
const IR::Type * | getSubstitution (const IR::ITypeVar *var) |
|
const TypeVariableSubstitution * | getSubstitutions () const |
|
const IR::Type * | getType (const IR::Node *element, bool notNull=false) const |
|
const IR::Type * | getTypeType (const IR::Node *element, bool notNull) const |
|
bool | implicitlyConvertibleTo (const IR::Type *from, const IR::Type *to) const |
|
bool | isCompileTimeConstant (const IR::Expression *expression) const |
|
bool | isLeftValue (const IR::Expression *expression) const |
|
void | setCompileTimeConstant (const IR::Expression *expression) |
|
void | setLeftValue (const IR::Expression *expression) |
|
void | setStrictStruct (bool value) |
|
void | setType (const IR::Node *element, const IR::Type *type) |
|
size_t | size () const |
|
bool | typeIsEmpty (const IR::Type *type) const |
| True is type occupies no storage.
|
|
int | widthBits (const IR::Type *type, const IR::Node *errorPosition, bool max) const |
|
bool | checkMap (const IR::Node *node) const |
|
void | clear () |
|
void | updateMap (const IR::Node *node) |
|
void | validateMap (const IR::Node *node) const |
|
void | print () const |
|
Maps nodes to their canonical types. Not all Node objects have types. The type of each node is maintained in the typeMap. Objects that have a type in the map:
- all Expression objects (includes Literals)
- function parameters
- variables and constant declarations
- functors (control, parser, etc.)
- functions
- interfaces
- enum fields (pointing to the enclosing enum)
- error (pointing to the error type)
- type declarations - map name to the actual type