Minimal, language-neutral type system for the IR.
An address type, representing the memory address of data. Used to represent pointers, references, and lvalues, include those that are garbage collected.
A Boolean type, which can hold the values
An error type. Used when an error in the source code prevents the extractor from determining the proper type.
A floating-point type.
An address type, representing the memory address of code. Used to represent function pointers, function references, and the target of a direct function call.
An integer type. This includes
A numeric type. This includes
A type with known size that does not fit any of the other kinds of type. Used to represent classes, structs, unions, fixed-size arrays, pointers-to-member, and more.
A signed two’s-complement integer. Also used to represent enums whose underlying type is a signed integer, as well as character types whose representation is signed.
The language-neutral type of an IR
An unknown type. Generally used to represent results and operands that access an unknown set of memory locations, such as the side effects of a function call.
An unsigned two’s-complement integer. Also used to represent enums whose underlying type is an unsigned integer, as well as character types whose representation is unsigned.
A void type, which has no values. Used to represent the result type of an instruction that does not produce a result.
INTERNAL: Do not use. Query predicates used to check invariants that should hold for all